《CUDA并行程序设计:GPU编程指南》笔记 Chaper 5 线程网格、线程块、线程束

xiaoxiao2025-04-06  21

1. 线程网格、线程块、线程束 关系

2. 如何将数据放到GPU上运算

1.首先要通过cudaMalloc和cudaFree申请或释放内存 2.然后使用cudaMemcpy将数据从CPU端复制到GPU

3. CUDA 中的相关变量含义

gridDim.x – 线程网格X维度上线程块的数目 gridDim.y – 线程网格Y维度上线程块的数目 blockDim.x – 一个线程块X维度上的线程数量 blockDim.y – 一个线程块Y维度上的线程数量 threadIdx.x –线程块X维度上的线程索引 threadIdx.y –线程块Y维度上的线程索引

4. 线程束(WARPS)

同一个线程束中的所有线程同时执行,通过访存获取指令后广播至线程束所占用的SP,wrapSize固有大小32,用户不能改变

为什么线程束大小warpSize很重要?

原因:程序的分支会造成线程束中很多线程阻塞 实际情况:指令执行层面,硬件的调度是基于半个线程束而不是整个线程束,只需要将线程束一半的线程划分到同一个分支里,GPU利用率可以达到100%。

转载请注明原文地址: https://www.6miu.com/read-5027629.html

最新回复(0)