我使用既特斯拉K40和GTX泰坦X和予有Cuda的8.0 ,我使用是CUBLAS和CuSparse库函数的功能: cusparseDcsrsv2_solve(); cusparseDcsrmv(); cublasDdot();CuSparse/CUBLAS K40 VS GTX泰坦X(麦克斯韦)
为什么GTX Titan X比K40快? 我正在编译nvcc标志,所有计算能力从3.0到6.0 和我的程序处理9 GB/12 GB RAM。 关于我库函数不使用双精度,因为使用浮点GTX TITAN X具有6.xx Tflops和K40具有4.xx Tflops而浮点双GTX TITAN X具有2xx GFlops而K40具有1.xx Tflops。理论上K40必须比GTX TITAN X更快 我的问题是什么?这很奇怪。
尝试cublasDgemm。 K40的速度会更快。您列出的其他功能很可能是内存带宽限制,不受计算吞吐量的限制。稀疏矩阵操作通常就是这种情况。 cublasDdot没有足够的计算强度来改变 - 它仍然是带宽限制的。 –
我没有在我的部门指定工作站。 两个工作站都有相同的RAM,CPU,HDD ecc。不同的是,一个GPU有两个GPU(输出nvidia-smi): GPU 0 GT 750使用X GPU 1 TESLA K40但是在CUDA中,coda的ID为TESLA K40,cudaSetDevice为0. 其他工作站只有GTX TITAN X 我认为差别在于内存带宽,因为TITAN具有DDR5 RAM,而K40具有DDR3 RAM。 但是关于你我的第一个配置可能会被错误地安装? –
是的,如果代码运行在GT 750而不是Tesla K40上,那么你肯定会感到失望。您可以使用[CUDA_VISIBLE_DEVICES环境变量](http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars)强制代码在该机器上的K40上运行。尝试使用该变量和'deviceQuery'示例代码来确保您了解行为,然后重新运行您的实际代码。我真的不认为你的代码在GT 750上运行(我的感觉是他们不应该这样做),但它的价值是值得考验的。 –