我有以下代码段:
__constant__ int baseLineX[4000];
__constant__ int baseLineY[4000];
__constant__ int guideLineX[4000];
__constant__ int guideLineY[4000];
__constant__ int rectangleOffsets[8];
__constant__ float blurKernel[64];
<other code>
for(int i = 0; i < 8; i++)
hostRectangleOffsets[i] = i;
cudaMemcpyToSymbol(rectangleOffsets, hostRectangleOffsets, 8*sizeof(int));
此代码适用于特斯拉K40,但不适用于16GB Tesla V100。 (甚至我的笔记本电脑也可以使用4GB Quaddro M2200 GPU运行代码)。
代码只挂在V100上,永远不会从cudaMemcpyToSymbol调用返回,但看起来它仍然在GPU上处理。有什么想法吗?
答案 0 :(得分:-1)
好吧,你还没有提供Minimal, complete, verifiable example:你的代码没有编译,缺少语句,但有(显然)不相关的语句。所以 - 没人能真正检查。
我仍然可以提出几点建议:
cudaMemcpyToSymbolAsync()
。至少你的程序不会挂起......