Bringing Existing Code to CUDA Using constexpr and std::pmrprinciples from introductory CUDA examples to an existing project that has a meaningful amount of non-trivial code. • Provide some guidance to people about to embark on using CUDA to speed up existing software float* y) { for (int i = 0; i < n; i++) y[i] = x[i] + y[i]; } TEST_CASE("cppcon-0", "[CUDA]") { int N = 1 << 20; float* x = new float[N]; float* y = new float[N]; for (int add_cpu(N, x, y); delete[] x; delete[] y; } An Even Easier Introduction to CUDA 4 |TEST_CASE("cppcon-1", "[CUDA]") { int N = 1 << 20; float* x; float* y; cudaMallocManaged(&x, N*sizeof(float));0 码力 | 51 页 | 3.68 MB | 6 月前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程CUDA 开启的 GPU 编程 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 前置条件 • 学过 C/C++ 语言编程。 • 理解 malloc/free 之类的概念。 • 熟悉 STL 中的容器、函数模板等。 中的容器、函数模板等。 • 英伟达 GTX900 及以上显卡。 • CUDA 11 及以上。 • CMake 3.18 及以上。 我负责监督你学习 第 0 章: Hello, world! CMake 中启用 CUDA 支持 • 最新版的 CMake ( 3.18 以上),只需在 LANGUAGES 后面加上 CUDA 即可启用 。 • 然后在 add_executable 里直接加你 cn/docs/IO/51635/NVIDIA_CUDA_Programming_Guide_1.1_chs.pdf CUDA 编译器兼容 C++17 • CUDA 的语法,基本完全兼容 C++ 。包括 C+ +17 新特性,都可以用。甚至可以把任何一个 C++ 项目的文件后缀名全部改成 .cu ,都能编 译出来。 • 这是 CUDA 的一大好处, CUDA 和 C++ 的关 系就像 C++ 和0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 09 CUDA C++ 流体仿真实战CUDA C++ 流体仿真实 战 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV16b4y1E74f 课程 PPT 和代码: https://github.com/parallel101/course CUDA 纹理对象 https://docs.nvidia.com/cuda/cuda-c-programming-guide/index g-guide/index.html#texture-and-surface-memory CUDA 多维数组:封装 • cudaMalloc3DArray 用于分配一个三维数组。 各维度上的大小通过 cudaExtent 指定,方 便起见我们的 C++ 封装类用了 uint3 表示 大小。 • GPU 的多维数组有特殊的数据排布来保障 访存的高效,和我们 CPU 那样简单地行主 序或列主序(如 序或列主序(如 a[x + nx * y] )的多维数组 不一样。 • 随后可用 cudaMemcpy3D 在 GPU 的三 维数组和 CPU 的三维数组之间拷贝数据。 CUDA 表面对象:封装 • 要访问一个多维数组,必须先创建一个表面对象 ( cudaSurfaceObject_t )。 • 考虑到多维数组始终是需要通过表面对象来访问的,这 里我们让表面对象继承自多维数组。 •0 码力 | 58 页 | 14.90 MB | 1 年前3
Bridging the Gap: Writing Portable Programs for CPU and GPUthe Gap: Writing Portable Programs for CPU and GPU using CUDA Thomas Mejstrik Sebastian Woblistin 2/66Content 1 Motivation Audience etc.. Cuda crash course Quiz time 2 Patterns Oldschool host device everywhere Conditional function body constexpr everything Disable Cuda warnings host device template 3 The dark path Function dispatch triple 4 Cuda proposal Conditional host device Forbid bad cross function dark path Cuda proposal Thank you Motivation 1 Motivation Audience etc.. Cuda crash course Quiz time 2 Patterns 3 The dark path 4 Cuda proposal5/66 Motivation Patterns The dark path Cuda proposal0 码力 | 124 页 | 4.10 MB | 6 月前3
Taro: Task graph-based Asynchronous Programming Using C++ CoroutinePolling D C 1 #include2 #include cuda.hpp> 3 4 taro::Taro taro{NUM_THREADS}; 5 auto cuda = taro.cuda_scheduler(NUM_STREAMS); 6 29Taro’s Programming Model – Example com/dian-lun-lin/taro A B Callback Wait Polling D C 7 auto task_a = taro.emplace([&]() { 8 cuda.wait([&](cudaStream_t stream) { 9 kernel_a1<<<32, 256, 0, stream>>>(); 10 }); // synchronize 11 7 auto task_a = taro.emplace([&]() { 8 cuda.wait([&](cudaStream_t stream) { 9 kernel_a1<<<32, 256, 0, stream>>>(); 10 }); // synchronize 11 }); CUDA stream for offloading GPU kernels 32Taro’s 0 码力 | 84 页 | 8.82 MB | 6 月前3
POCOAS in C++: A Portable Abstraction for Distributed Data Structuresvery fast intra-node transfers GPU GPU Fast Intra- Node Fabric DataGPU Communication Libraries CUDA-Aware MPI NVSHMEM ROC_SHMEM - Communication libraries offering increasing support for GPU-to-GPU will utilize both GPUDirect RDMA and NVLink GASNet-EX Memory KindsGPU Communication Libraries CUDA-Aware MPI NVSHMEM ROC_SHMEM - Communication libraries offering increasing support for GPU-to-GPU = BCL::broadcast(ptr, 0); ptr[BCL::rank()] = BCL::rank(); BCL::cuda::ptrptr = nullptr; if (BCL::rank() == 0) { ptr = BCL::cuda::alloc (BCL::nprocs()); } ptr = BCL::broadcast(ptr, 0); ptr[BCL::rank()] 0 码力 | 128 页 | 2.03 MB | 6 月前3
AnEditor Can Do That?CMake Presets support 3. ARM and ARM64 support (Raspberry Pi, Surface Pro X, Apple Silicon) 4. CUDA IntelliSense and GPU debuggingVisual Studio Code What’s new? 1. GitHub Codespaces (coding from your CMake Presets support 3. ARM and ARM64 support (Raspberry Pi, Surface Pro X, Apple Silicon) 4. CUDA IntelliSense and GPU debugging 5. Disassembly View while debugging Preview!Visual Studio Code What’s CMake Presets support 3. ARM and ARM64 support (Raspberry Pi, Surface Pro X, Apple Silicon) 4. CUDA IntelliSense and GPU debugging 5. Disassembly View while debugging Preview!Visual Studio Code What’s0 码力 | 71 页 | 2.53 MB | 6 月前3
Conda 23.7.x DocumentationTensorFlow. These are built using optimized, hardware-specific libraries (such as Intel’s MKL or NVIDIA’s CUDA) which speed up performance without code changes. Read more about how conda supports data scientists corresponds to the package. The currently supported list of virtual packages includes: • __cuda: Maximum version of CUDA supported by the display driver. • __osx: OSX version if applicable. • __glibc: Version post8+8f640d35a conda-build version : 3.17.8 python version : 3.7.2.final.0 virtual packages : __cuda=10.0 base environment : /Users/demo/dev/conda/devenv (writable) channel URLs : https://repo.anaconda0 码力 | 795 页 | 4.91 MB | 8 月前3
Conda 23.10.x DocumentationTensorFlow. These are built using optimized, hardware-specific libraries (such as Intel’s MKL or NVIDIA’s CUDA) which speed up performance without code changes. Read more about how conda supports data scientists corresponds to the package. The currently supported list of virtual packages includes: • __cuda: Maximum version of CUDA supported by the display driver. • __osx: OSX version if applicable. • __glibc: Version post8+8f640d35a conda-build version : 3.17.8 python version : 3.7.2.final.0 virtual packages : __cuda=10.0 base environment : /Users/demo/dev/conda/devenv (writable) channel URLs : https://repo.anaconda0 码力 | 773 页 | 5.05 MB | 8 月前3
Conda 23.11.x DocumentationTensorFlow. These are built using optimized, hardware-specific libraries (such as Intel’s MKL or NVIDIA’s CUDA) which speed up performance without code changes. Read more about how conda supports data scientists corresponds to the package. The currently supported list of virtual packages includes: • __cuda: Maximum version of CUDA supported by the display driver. • __osx: OSX version if applicable. • __glibc: Version post8+8f640d35a conda-build version : 3.17.8 python version : 3.7.2.final.0 virtual packages : __cuda=10.0 base environment : /Users/demo/dev/conda/devenv (writable) channel URLs : https://repo.anaconda0 码力 | 781 页 | 4.79 MB | 8 月前3
共 179 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18













