- Arno Schödl: A Practical Approach to Error Handling
[Canada wide joint event originally hosted by C++TO]
Every program may encounter errors, some originating from internal bugs in the program, others coming from the environment the program is operating in. Ignoring all errors will make the program utterly unreliable, while treating every conceivable one introduces lots of extra complexity with little benefit. At think-cell, we have been using and refining our own principled approach to error handling, which we have not seen elsewhere. This lecture teaches our method, so that you in your next project, too, can write more reliable software with less effort.
About the Speaker
Arno Schödl, Ph.D. think-cell founder & CTO. Arno is responsible for the design, architecture and development of all think-cell’s software products. He oversees think-cell's R&D team, Quality Assurance and Customer Care. Before founding think-cell, Arno worked at Microsoft Research and McKinsey. Arno studied computer science and management and holds a Ph.D. from the Georgia Institute of Technology with a specialization in Computer Graphics.
- C++ Concepts vs Rust Traits vs Haskell Typeclasses vs Swift Protocols
C++20 comes with Concepts - one of the four major features of C++20. This talk will explore what Concepts are and how to use them - and how they are different and similar to "adjacent" language features such as Rust Traits, Haskell Typeclasses and Swift Protocols. This talk will be a "must see" for programming language enthusiasts.
About the Speaker
Conor Hoekstra is a Senior Library Software Engineer at NVIDIA working on the RAPIDS team. He is extremely passionate about programming languages, algorithms and beautiful code. He is the founder and organizer of the Programming Languages Virtual Meetup and he has a YouTube channel.
- Patrice Roy: Some things C++ does right
"People often complain about C++: to some, it's not memory-safe enough, not type-safe enough. Some will tell you that some (or all!) of its defaults are wrong. Many complain that it's too expert-friendly.
There's often a grain of truth in criticism, and C++ surely has a bit of each
of these alleged warts; it's a language that has history, obviously, and that has evolved organically over the years, and it has the imperfections we can expect for a tool used by millions to perform high-performance or safety-critical tasks in various application domains.
However, there are a significant number of things C++ does right, and there are a number of reasons why we love this language... and love it so much that we gather together to trade ideas, learn about it, understand it better... and enjoy it all!
This talk is about some of the things C++ does right. It does not aim to provide an exhaustive list (far from it!), or to throw arrows at other languages (although there will be comparisons), nor does it aim to offer an apologetic perspective on C++. This talk is about some of those things one misses when using other languages, and aims to remind us of some of those things that make C++ beautiful, fun and efficient."
Patrice Roy has been playing with C++, either professionally, for pleasure or (most of the time) both for over 25 years. After a few years doing R&D and working on military flight simulators, he moved on to academics and has been teaching computer science since 1998. Since 2005, he’s been involved more specifically in helping graduate students and professionals from the fields of real-time systems and game programming develop the skills they need to face today’s challenges. The rapid evolution of C++ in recent years has made his job even more enjoyable. He’s been a participating member in the ISO C++ Standards Committee since late 2014 and has been involved with the ISO Programming Language Vulnerabilities Committee since late 2015. He has five kids, and his wife ensures their house is home to a continuously changing number of cats, dogs and other animals.
- Andrew Sutton: Metaprogramming (Canada-wide virtual event)
Andrew Sutton is an owner of Lock3 Software, LLC where he designs languages, language features, and works on various compilers. Most of his work is focused on the C++ programming language. Some of Andrew’s current projects include the GCC implementation of C++ concepts, designing and implementing static reflection and metaprogramming for C++ using Clang, and the design and implementation of new programming languages. Andrew was formerly a professor and taught courses on programming with C++, programming languages, and compiler design.
- H5CPP : C++ templates for Serial and Parallel HDF5
H5CPP (http://h5cpp.org/) is a novel approach to portable persistence in fields including machine learning and high-throughput event processing. It provides scalable low-latency access to data blocks and streams stored in HDF5 containers.
The project enjoys the support of The HDF Group, the general supercomputing community, and aims to provide scalable persistence for modern linear algebra systems such as Armadillo, Eigen3, Blaze, Blitz++, dlib, IT++, ublas, and arbitrarily complex standard layout types, as well as the STL.
Follow this link (https://forms.gle/oFEWQde72ZXzmMJB8) to kick the tires on MPI I/O-based massive parallel processing and POSIX I/O-based examples, and save your questions and thoughts for the event. Depending on the registration count, an anonymous login to an AWS EC2-hosted cluster environment will be provided 2 days before the presentation.
In this presentation, Steven Varga, the author of H5CPP and H5CLUSTER, will expand on topics introduced in his earlier C++TO Lightning Talk (http://lightning-talk.h5cpp.org/). He will discuss H5CPP features in detail, touch on introspection/feature detection in C++, and show how H5CPP fits into the Modern C++ ecosystem.
The guest speaker and collaborator, Gerd Heber, will introduce the basic concepts and practices of data management with HDF5. He will explain the mission and commitment of The HDF Group to freely-available, open-source software, and how tools such as H5CPP are vital to the wider HDF5 ecosystem.
Steven Varga is an independent researcher in the field of machine learning, and computational finance and is an active member of the HDF5 community.
Gerd Heber works as an Applications Architect at The HDF Group where he helps users and customers to make the most effective use of HDF5 and its ecosystem.
- The CUDA C++ Standard Library
For the third installment of the Canada-wide virtual meetup, we are proud to announce a presentation from a high-profile member of the C++ community, Bryce Adelstein Lelbach. He will be presenting the CUDA C++ Standard Library.
CUDA C++ is a extension of the ISO C++ language which allows you to
use familiar C++ tools to write parallel programmings that run on
GPUs. However, one essential C++ tool has been missing from
device-side CUDA C++; the C++ standard library. But not any longer!
Introduced in the CUDA 10.2 toolkit, libcu++ is an opt-in
heterogeneous CUDA C++ standard library. The initial release delivers
C++ atomics - a more correct, efficient, and powerful replacement for
the legacy CUDA `atomic*` functions - and type traits. In this
example-oriented talk we'll explain how and when to start using
libcu++ and explain how it can be used to build complex concurrent
data structures and enable new classes of applications on modern
NVIDIA GPUs. We'll also give you a sneak preview of our future roadmap
for libcu++ - barriers, semaphores, efficient atomic waiting, clocks,
vocabulary types, and more.
Bryce Adelstein Lelbach has spent nearly a decade developing libraries in C++.
Bryce is passionate about C++ evolution and is one of the leaders of the C++
community. He is an officer of ISO/IEC JTC1/SC22/WG21, the C++ Standards
Committee. Bryce chairs INCITS PL22, the US standards committee for programming
languages, and the ISO C++ Library Evolution Group (LEWG); previously he
chaired the ISO C++ Tooling Study Group (SG15) and Library Incubator Group
(SG18). He is also the program chair for the C++Now and CppCon conferences, and
the chief organizer of the Bay Area C++ User Group. On the C++ Committee, he has personally worked on the C++17 parallel algorithms, executors, futures,
senders/receivers, multidimensional arrays, and modules. Bryce works at
NVIDIA, where he leads the CUDA C++ core libraries team and works on CUDA
compilers. He is one of the initial developers of the HPX parallel runtime
system. He also helped start the LLVMLinux initiative and has occasionally
contributed to the Boost C++ libraries.
- Online Q&A + Show and Tell (joint event with Toronto UG)
Joint event with Toronto and Vancouver UG. If we can't get you to the User Group we will bring the user group to you! Come join us for an informal on-line session. Bring your questions, pet projects, photos of your pets...anything to share! Can't wait to see you!
- Memory analysis and memory allocators
Gabriel Aubut-Lussier will live profile a toy application and study its behavior as far as memory usage is concerned. We will discuss some underlying details of the operating system and of the x86-64 architecture. Finally we'll discuss the purpose of allocators, their current state as well as the changes coming in C++20.
This meetup will be held in Microsoft's Montreal office, on the 5th floor in suite 550. The doors open at 6 pm. Pizza will be served, thanks to our sponsor Druide Informatique inc.
6:00 pm Doors open. Time to arrive, eat, discuss and network.
6:45 pm to 7:00 pm Short announcements and presentations
8:00 to 8:30 pm Discussions and networking
9:00 pm Regroup outside and walk to a nearby bar