CUDA теперь имеет встроенную функцию подтверждения. Используйте assert(...)
. Если его аргумент равен нулю, он остановит выполнение ядра и вернет ошибку. (или вызвать точку останова в случае отладки CUDA.)
Обязательно включите "assert.h". Кроме того, для этого требуется вычислительная способность 2.x или выше, и она не поддерживается в MacOS. Для получения дополнительной информации см. Руководство по программированию CUDA C, Раздел B.16.
Руководство по программированию также включает этот пример:
#include <assert.h>
__global__ void testAssert(void)
{
int is_one = 1;
int should_be_one = 0;
// This will have no effect
assert(is_one);
// This will halt kernel execution
assert(should_be_one);
}
int main(int argc, char* argv[])
{
testAssert<<<1,1>>>();
cudaDeviceSynchronize();
return 0;
}