发布网友 发布时间:2022-04-24 14:41
共1个回答
热心网友 时间:2022-05-07 16:16
你好,
出现这种问题通常有两个原因:
你的问题的规模不足以体现GPU的并行运算性能。
GPU用成千上万个线程的吞吐量来(throughput)来进行速度的提升,但是其中每一个线程的运算功能要比CPU差很多。所以,如果你的for循环的次数很少的话,CUDA是不会有CPU快的,CPU很擅长处理循环。你可以试着增多循环次数来测量加速比。
CUDA在第一次运行的时候是需要消耗一定的时间做初始化。
CUDA是一个runtime的库,你的第一条CUDA语句所消耗的时间要远大于后面的语句,因为第一条语句调用的同时也初始化了CUDA的运行环境。所以你在测试间的时候需要出去第一条语句。一般统计时间只统计kernel的运行时间,也就是说所有的初始化和内存分配时间都不算进去。而且,统计CUDA的时间一般用cudaEvent_t,
cudaEvent_t start,stop;一般就是这两个问题,
谢谢,望采纳