点积运算--GPU高性能编程CUDA实战5.3

本文介绍了CUDA编程中线程块内的同步操作__syncthread(),它确保所有线程在同一位置等待,避免因依赖其他线程结果而导致的错误。此外,还提到了线程间通过共享内存进行通讯,使用__shared__关键字来调用。通过示例代码和运行结果,展示了正确使用这些概念的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



这里用点积运算例子是在讲线程协作的 __syncthread();

表示对线程块里的线程进行同步的,对于线程块之间的没有关系的。在线程块内所有的线程必须同时停到这个地方等待,等到所有的线程都运行到这里的时候,再一起运行下一步。这样做的目的是因为某个线程要用到别的线程的计算之后的结果,如果不设置__syncthread();将会计算出错误的结果。这个中文名叫栅栏。刚才提到了用到别的线程的计算结果,这里又涉及到线程间的通讯,一个线程块里都有个共享的内存,实现线程之间的通讯,用__share__调用。还是在代码里写注释更好理解,我就先在代码里写注释好了,我不习惯这个编辑器,哈哈


#include "../common/book.h"

#define imin(a,b) (a<b?a:b)

const int N = 33 * 1024;
线程块里的线程256个,线程格一共有32个线程,这就意味着,每个线程将会计算4次,因为数组元素很大
const int threadsPerBlock = 256;
至今为止我也没见过两个线程格的,这里写的意思是看看每个线程块用256个线程的话能用到多少个线程块,但是不要超过32个,但是很明显超过了32个好嘛,所以就32个了呗,说明线程个数是不够的
const int blocksP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值