大家好,最近在学习opencl 编程,实现opencl连续向GPU写入多组数据(每组大约5兆B),经过GPU核内算法运算后,回读多组处理后的结果。在实际过程中,在GPU核内运算时间很快,但写入 clEnqueueReadBuffer (CPU到GPU)和读取clEnqueueWriteBuffer
(GPU到CPU)时间耗时相对较多,是核内运算时间的几十倍。而且偶尔会出现较大耗时的情况。实际过程中,核内运算1毫秒,但来回传输的耗时大约30毫秒,偶尔出现170毫秒的情况。然后尝试过缓冲区对象的内存映射 ,效率依旧没有提升。请问各位大牛,这是为什么呢?如何进行GPU与CPU间的内存拷贝效率的提升?
环境:
win10 Visual studio2017 community
opecl 3.0
显卡:RTX 2080 Ti