This repo contains things I'm going to try out to learn C++ and High Performance Computing
A lot of these are content I gathered from various places of the internet. Raise an issue if I missed attributing any external content
Below each chapter noting down the things I learnt in the process
-
- 1.1 Learnt a ton of new features available
- 1.2 Run Time Type Information
- 1.3 Constructors
- 1.3 Destructor order
-
- OpenCL
- exp-1 Get available device info
- exp-2 Vector addition in kernel
- exp-3 Game of Life
- exp-4 Atomics
- exp-5 Abelian Sandpile(not the best example)
- Cuda
- hello Hello World with Cuda
- vector_add Vector addition in device
- OpenMP / OpenACC
- collide_gpu xxtea middle block collision on GPU, based on this gist
- reduction reduction operation on GPU
- vector_add - Adding two vectors
- OpenCL
-
Paraphernalia
- Basic spawning threads with pthread and
<thread>
- Basic forking process
- SSE condition paraphernalia
- Opening Ini file
- Basic spawning threads with pthread and
Links are to respective documentations
- Intrinsics
- Stream Processing
- Domain Decomposition
- Selected Papers in ACM SIGPLAN 1979-1999
- What Every Computer Scientist Should Know About Floating-Point Arithmetic
- What Every Programmer Should Know About Memory
- Shortlist of Top 10 Algorithms and links to their papers
- Introduction to High Performance Scientific Computing
- Computer Systems: A Programmer's Perspective
- Linux Kernel in a Nutshell
- Linux Device Drivers
- C Unleashed
- OpenMP Guide
- OpenMP Examples
- OpenMP 4.0 - 4.5
- CPP Tutor
- StreamProcessing Reading List
- Domain Decomposition
- Awesome C++
- Advanced OpenMP
- Introduction to HPC
- NullProgram by skeeto C, C++, Performance, intrinsics
- Krister Walfridsson’s blog LLVM, GCC, Valgrind, nvptx
- Fredrik Johansson Blog scientific computing, python
- John Burkardt's Blog hpc, mpi, openmp
- Scott Meyers
- Frank Tetzel
- Wojciech Muła