从CUDA英文官方网站上看到以下信息:
CUDA 2.2 Beta is now available to registered CUDA Developers. Sign up here to get access.
可惜,还不是正式发布。呵呵。
由于没有注册成开发者,只搞到了一份编程指南,发现其中还是有不少新鲜功能的:
最好新功能的就是kernel可以访问"不可移动"的主机内存了!而且,指南中建议用这一功能取代以前的
cudaMemcpy函数。因为,第一只有kernel用到时才启动实际传送;第二,对host而言,是完全异步的,
不用再等待传送结束。
但实际数据估计还是要按以下方式传送:HOST->PCI-E->GMEM->KERNEL。
这就带来几个疑问,要实际试验后才能确定:(目前没有找到任何资料说明。V.V )
1)GMEM->KERNEL还该有冲突问题存在。
2)PCI-E->GMEM一次传送多少字节?是正好要用的字节数,还是有"预读取"的功能。
3)PCI-E->GMEM是一次启动还是多次启动?是否影响传送性能?
另外说一句,访问主机内存功能在Stream中早已提供,这次CUDA也总算有了。呵呵。
其次,就是2.2版本实现了一个内存访问栅栏,可以保证在栅栏前写入内存的数据可以"完整地"在栅栏后被
(同一block/所有)其他线程正确读取。(即线程到栅栏后等待其他线程的内存访问全部结束后再向下走)
想法不错,不过,因为是所有线程同步,而线程往往不是都在活动状态,故对处理流水线该有一次清空和重
启动过程,对性能该有一定的影响,还要谨慎使用。
这点可以参考cyrosly的blog中所提到的试验:
《完全GPU化的reduce算法实现以及性能评估》
http://blog.csdn.net/Cyrosly/archive/2009/03/31/4038474.aspx
这次版本比2.1版给我们带来了更多的新功能,期待其正式release的那天。