为了明确CUDA的性能如何,最近写了一个比较cpu和cuda各种优化的性能比较程序,得出了一下一些结论:
CUDA比CPU快(理所当然);CUDA中使用纹理内存和常量,可以加速;图像大小对CUDA的速度影响不大,带宽才是;ubuntu比windows快;openMP也非常有用;部分结论图
下图中横轴是测试的次数,数轴是运算时间。可以发现针对图片A,仅仅使用单核计算时需要300ms才能完成运算,但是使用openMP后可以减少到150ms,即使用openMP对计算过程优化之后计算效率大概提高一倍。
下图分别是测试CUDA中各种优化方法对性能的影响,为了保证对比的合理性使用了两张图片进行测试。可以发现CUDA部分的计算效率明显高于CPU版本;但是由于计算量并不复杂,CUDA部分之间的差异并不是特别明显。
具体代码,请前往github:
https://github.com/Yannnnnnnnnnnn/cpu_cuda_compare