У меня есть следующий фрагмент кода:
__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));
Этот код прекрасно работает на Tesla K40, но не на Tesla V100 16 ГБ. (Даже мой ноутбук может работать с кодом на 4 ГБ Quaddro M2200 GPU).
Код просто висит на V100 и никогда не возвращается из вызова cudaMemcpyToSymbol, но выглядит так, как будто он все еще обрабатывается на GPU. Есть идеи?
Ну, вы не предоставили Минимальный, полный, проверяемый пример: Ваш код не компилируется и в нем отсутствуют операторы, но есть (очевидно) не относящиеся к делу операторы. Так что — никто не может на самом деле проверить.
Я все еще могу сделать несколько предложений, хотя:
cudaMemcpyToSymbolAsync()
. По крайней мере, ваша программа не зависнет …Других решений пока нет …