cuda-memcheck сообщает эту информацию для режима выпуска ядра CUDA:
========= Error: process didn't terminate successfully
========= Invalid __global__ read of size 4
========= at 0x000002c8 in xx_kernel
========= by thread (0,0,0) in block (0,0)
========= Address 0x10101600014 is out of bounds
=========
========= ERROR SUMMARY: 1 error
Эта ошибка возникает только в режиме выпуска.Это также не происходит при работе под Cuda-GDB.
Как я могу взять адрес 0x000002c8 и определить код, который вызывает ошибку?Я просмотрел кэшированные промежуточные файлы (.ptx, .cubin и т. Д.) И не вижу очевидного способа определить ошибочный исходный код.
Это на x86_64 Linux с CUDA 3.2.
ОБНОВЛЕНИЕ: Оказывается, это была ошибка компилятора в 3.2.Обновление до 4.0 устраняет ошибку memcheck.Кроме того, мне удалось разобрать CUBIN с помощью cuobjdump начиная с 4.0, но, поскольку он был в режиме выпуска и оптимизирован, было чрезвычайно трудно сопоставить разборку с исходным кодом.