cuda 线程调度

硬件描述

从硬件上看,一块显卡的最小单元是GPU核(或者叫做Stream Processor),所有核心平均分配在多个SM中,而多个SM共同构成整块显卡的核心。比如RTX2070有36个Streaming Multiprocessors,而每个SM有64个CUDA Cores,RTX2070具有36*64=2304个CUDA Cores。

软件描述

  • thread,block,grid,warp都是CUDA编程上的逻辑概念,编写代码时以便组织线程。
  • thread:线程,最小的运行单元,一个CUDA程序会被很多的线程执行
  • block:线程块,多个thread 组成线程块,一个线程块的所有线程只会分配到同一个SM中运行,同一个块的线程可以同步,也可以通过shared memory通信,并且代价比较小。
  • grid:网格,多个线程块组成网格,一个网格中的线程块任务分配在不同的SM中运行,同一个网格中的线程不能同步。不同线程块之间的线程通信代价很高,尽量不要有这种操作。
  • warp:线程束,一个线程束中的线程属于同一个线程块,GPU线程调度的基本单位,即GPU每次以warp数量的线程为单位进行调度。

cuda 线程调度_第1张图片

线程调度 

 GPU具有成千上万的CUDA Core,同时也会有成千上万个线程需要执行。当一个kernel启动后,线程按

你可能感兴趣的:(CUDA,并发编程)