Update July 2021

Modern C++ 23 for Image Processing

You need latest version of C++ compiler in order to use C++ 20 standard. GCC>12 or CLang>13. CUDA 11 support C++17 by nvcc; Cmake.

Module Interface Unit : *.cppm

Module Implementation Unit: *.cpp

Important commands

Compile CUDA for Jetson Nano (JetPack 4.5, CUDA 10.2)

nvcc -std=c++14 -arch=sm_62 -o main.run main.cu

compile c++ 20; based on GCC 12, CLang 13

clang++ -std=c++2a -c helloworld.cpp -Xclang -emit-module-interface -o helloworld.pcm

clang++ -std=c++2a -stdlib=libc++ -fimplicit-modules -fimplicit-module-maps -fprebuilt-module-path=. main.cpp helloworld.cpp


  1. echo "export PATH=.:"$PATH"" >> ~/.bashrc

  2. source ~/.bashrc

  • htop

  • ulimit -a

  • git submodule add (githuburl external/glfw)


brew install --HEAD LouisBrunner/valgrind/valgrind

valgrind ./a.out

CppCon 2016: John Lakos "Advanced Levelization Techniques (part 1 of 3)

Large Scale C++ software design

  • retain control of your dependency graph

  • keep concerns separated

  • make modules reusable in other contexts at minimal cost