Rico's Nerd Cluster

「离开世界之前 一切都是过程」

CMake - Concepts and Options

CMake Concepts, Compile Options, Commands, CMake-Format, Header-Only Library, Static Library

Concepts Hierarchy CMake is hierarchical. That is, you have a top-level project, with multiple subprojects. Basic Operations: 1 2 3 4 cmake_minimum_required(VERSION 3.10) project(MyProject) ad...

My Journey Into CUDA

GPU Architecture, Tensor Cores, SIMD SIMT, Pinned Memory

A Great introduction video can be found here GPU (GA102) Architecture A graphics card’s brain is its GPU. NVidia’s Ampere GPU architecture family has GA102 and GA104. GA102 is shared across NVidi...

Bash Magic

Bash is great. Here is a list of bash tricks & knowledge points that I found magical

Builtins Declare The declare builtin is used to explictly declare variables declare -r var is to declare a read-only variable 1 2 declare -r var="123" var="456" # see "var: readonly varia...

C++ - Writing GTest for ROS

Test! Test! Test!

Concepts Google Test (a.k.a GTest) is an open source unit testing structure. From the official website Test Suite vs Test Case: A test suite contains one or many tests. You should group your t...

ROS - Using GDB for ROS

GDB is a very useful that allows us to pause at a break point or failure and inspect.

Introduction GDB is EXTREMELY handy. I used to doing a lot of print statements, but now I use GDB a lot. The reason is simple: I can check multiple things at once without recompiling everytime, es...

C++ - [OOP] Polymorphism - Virtual Functions and Virtual Inheritance

Virtual is virtually complicated. Dynamic Dispatch, Dreadful Diamond Derivative (DDD) Problem ...

Introduction The virutal keyword is very versatile. A really short and nasty summary is, it is to ensure the correct functions or base class is inherited / loaded during runtime. Motivating Examp...

C++ - [OOP] Initialization

Default Initialization, Memory Order

Default Initialization Default Initialization is when a variable is initialized without explicit value. They could be in an uninitialized state and accessing them could be an undefined behavior. ...

C++ - Coroutine

Coroutine Coroutines in C++ allows us to write asynchronous code in a sequential style. It allows us to resume and suspend, instead of blocking a thread. A coroutine by default is single-threaded,...

C++ - Multithreading

SIMD

SIMD & Vectorization Execution Policy for for_each (C++ 17) std::execution::par_unseq is an execution policy introduced in C++17 that you can pass to algorithms like std::for_each. It directs ...

C++ - Coding Styles

Casing

Casing namespace: lower case like std, boost.