代码示例
这里的示例显示了相同函数CUDA(GPU),非托管本地代码(CPU),托管.NET代码(顺序的)和.NET并行版本的执行时间。
你可以修改的配置参数是数组的大小,每个线程循环的次数,CUDA块大小和为求平均值的测试次数。
块大小应该比数组大小小一些,以便利用更多的多处理器,建议值是256或512(大多数支持CUDA的设备的最大值),你可以使用CUDA SDK中的CUDA分析器检查占有率(应该是1或接近1)。
这里的CUDA内核非常简单,没有使用任何线程同步和共享内存,实际上,所有线程是完全独立运行的,当为每个数组元素配有足够的计算能力时,性能会得到极大的提升。
你可以使用更少的循环检查结果,并行for()的用法通常是由数组大小决定的,因此,对小数组它通常是无效的。
下面是我的配置了旧Nvidia GPU的笔记本电脑计算能力为1.1的结果:
