Want to stay up to date with new developments in C++? Don't miss this months C++ London!
There are a few algorithms (for example std::merge, std::unique) that could have used a binary search but do not since the results are close to the beginning most of the time. This talk goes through building a variation on the binary search that is well suited for these cases.
Denis worked on Yandex browser for a few years, and was an active contributor to Chromium, including pushing through and implementing Chromium's version of flat_set container. Active C++ enthusiast and passive C++ content consumer. Denis currently works for Bloomberg in London and is quite pleased with that.
In the most common use case, CUDA kernels are called using a triple chevron syntax <<<>>> that specifies the kernel launch configuration (i.e. number of threads, thread blocks, shared memory use and stream identifier), in addition to the arguments to the kernel.
Because the triple chevron syntax is CUDA-specific, and therefore can only be handled by the NVIDIA compiler driver (nvcc), any translation unit that calls a CUDA kernel using this syntax must be saved as a CUDA file (*.cu). Thus, calling CUDA kernels 'pollutes' C/C++ translation units.
This is at best a minor annoyance. The more serious problem is that, on some platforms, the nvcc compiler driver cannot invoke the latest C/C++ compiler in order to 'handle' non-CUDA code in a CUDA file. For example, on the Linux platform nvcc calls/requires the now-ancient gcc version 5. This means that the use of C++14 and C++17 is impossible in CUDA files.
This talk is about a simple C++ template for invoking CUDA kernels in a way that solves the 'pollution' problem; so that C++ translation units that call CUDA kernels do not need to be saved as CUDA files, and can use C++14 and C++17 language features.
Sola is a Senior Software Engineer at Ecrebo Limited Reading. The bulk of my day job involves developing and maintaining a code-generator that interprets XML documents into native instructions supported by point sale printers. My side interests revolve around performance optimization and Haskell.
Abstract is coming! Make sure you keep an eye out!
Ervin is a freelancer and contractor who is doing research and development of an embedded distributed search and classification engine. Before starting research and development, Ervin has helped tier one banks, asset management companies and startups to design and develop various applications and systems related to cyber security, search engines, front end trading or big data related systems as well as feature extraction and object recognition in images and videos. Ervin enjoys his family, movies and music in his free time.