Здравствуйте, Алексей,
Использование cutil является наиболее неправильным из всех способов обработки ошибок CUDA. Средства cutil написаны для того, чтобы унифицировать обработку ошибок и системно-специфичные вызовы в рамках CUDA SDK. То есть, это в чистом виде средство, упрощающее жизнь самим разработчикам CUDA SDK. Оно не является частью стандартного API и поэтому может изменяться как угодно. Так что, использование cutil потенциально несёт пользователям больше проблем, чем преимуществ, кроме того, всегда можно сделать проще. Например, Вы можете включить в код своего приложения следующий простой макрос:
#inclue <stdio.h>
#define CUDA_SAFE_CALL(x) \
do { cudaError_t err = x; if (err != cudaSuccess) { \
fprintf(stderr, "Error \"%s\" at %s:%d\n", cudaGetErrorString(err), \
__FILE__, __LINE__); return -1; \
}} while (0);
...
CUDA_SAFE_CALL(cudaMemcpy(x_d, x, sizeof(double) * n, cudaMemcpyHostToDevice));
- Д.
Здравствуйте.
Раньше использовал cutil_inline.h сейчас, на CUDA 5.0 его не обнаружил, и никак не могу найти где находится cutilSafeCall. Если их нет, то как правильно обрабатывать ошибки, возвращаемые функциями?