用户
 找回密码
 立即注册
goodcuda 该用户已被删除
发表于 2018-4-3 16:55:54
113851
我的显卡是GeForce GTX 1080  
程序功能是用于人脸比对,申请了一大片GPU的内存(差不多8G),放入1500W个人脸的特征结构体,结构体的大小是544byte
核函数是由20个block, 1024 thread / block启动,就是一个循环从全局内存读取数据,计算,然后放入另一块全局内存(1500W*sizeof int)
循环中有两个if,第一个先判断结构体中的一个字段然后决定是否continue, 第二个是计算相似度
问题是:我修改了核函数外面的代码后,不知道为什么核函数的耗时从60ms变成接近700ms。

想问下这个程序该如何优化,以及这个问题有可能与哪里相关。这个block 和 thread该选多大比较好, 每次我把thread改下,然后blcok改大后,性能都会下降。
接触cuda不久,若是能提供一些参考资料也好,谢谢大家。
使用道具 举报 回复
发表于 2018-4-14 16:44:07

回帖奖励 +2 CUDA币

blocksize一般为32的倍数。
建议你用nvvp跑下report。
用samples里的calculater工具算下对于你的应用程序和硬件,blocksize多大 occupancy才能尽可能的大。
当然occupancy不一定越大越好,需要综合report来看。
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册