Programming Model


data dependency 数据依赖时: 同步化处理
CPU 与 cores(kernel中)出现数据依赖时


一次只有一个kernel在执行
在同一个kernel中每一个 thread执行相同的代码
GPU中的thread与CPU中的区别:
GPU中的threads 是Physical threads:
threads 经常需要做 context switching 上下文切换,需要数据代码在register 和memory之间进行交流
context switching在cpu中不是很频繁
GPU 中每一个core 中会有多个(8个)threads
很多threads共用一个core,优点:当某一个thread在做memory access时,这个core皆可以空出来给其他threads使用。由于core是共用的,所以GPU中活跃的threads远大于cores的数量
上一章GPU架构所讲: 每一个threads都有自己的local register ,这正好供threads存储部分数据代码,在做context switching时,就不需要做memory access

kenal function 中如何确定线程的位置:两个: blockID threadID ( unit ID 统一的ID)

注意_synothreads() 和一般的同步不同:可以判断是否是在同一个warp中(量身定制)















































MPI实现在 computer 和computer之间传资料
那么GPU和GPU之间通过什么传资料呢?



ping住 data在host memory中的位置不能改变






简而言之: 在GPU中执行的kernel自己可以去launch 新的kernel













本文深入探讨GPU编程模型,特别是数据依赖同步处理的重要性。详细解释了GPU与CPU中线程的差异,包括context switching的机制,以及GPU核心如何高效利用多线程。同时,文章还介绍了如何在kernel function中定位线程,以及GPU间数据传输的方法。
1万+

被折叠的 条评论
为什么被折叠?



