I настоятельно рекомендует с использованием макроса CUDA_SAFE_CALL
, если нет - для принудительной синхронизации потоков, по крайней мере, во время отладки кода:
CUDA_SAFE_CALL(cudaMalloc((void**) &(myVar), mem_size_N ));
Обновление: Согласно @talonmies, вам не нужна библиотека cutil. Итак, давайте перепишем решение:
/* Allocate Data */
cudaMalloc((void**) &(myVar), mem_size_N );
/* Force Thread Synchronization */
cudaError err = cudaThreadSynchronize();
/* Check for and display Error */
if ( cudaSuccess != err )
{
fprintf( stderr, "Cuda error in file '%s' in line %i : %s.\n",
__FILE__, __LINE__, cudaGetErrorString( err) );
}
И, как отмечено в другом ответе, вы можете включить синхронизацию и проверку перед выделением памяти, чтобы убедиться, что API инициализирован правильно.