В настоящее время по какой-то причине cudaMalloc устанавливает errno в 17, несмотря на возвращение cudaSuccess. Я прочесываю интернет, но мой google foo не принес мне никакого просветления, поэтому я решил спросить, что стек переполняет людей.cudaMalloc настройка errno, несмотря на возвращение cudaSuccess
Вот мой выход
ERROR: What is not going down, ERRSTR: Success, ERRNO 0
ERROR: What is going on here?, ERRSTR: File exists, ERRNO 17
И вот мой код (некоторые из них, по крайней мере)
//headers
#define CheckError(MESSAGE) do { fprintf(stderr,"ERROR: %s, ERRSTR: %s, ERRNO %i\n",MESSAGE,strerror(errno),errno); } while(0);
#define CudaSafeCall(err) __cudaSafeCall(err, __FILE__, __LINE__)
#define ARRAY_LENGTH (1000000)
#define ARRAY_ELEMENT_SIZE (sizeof(int))
#define ARRAY_SIZE ((size_t)ARRAY_ELEMENT_SIZE * ARRAY_LENGTH)
inline void __cudaSafeCall(cudaError err, const char *file, const int line)
{
if (cudaSuccess != err)
{
fprintf(stderr, "cudaSafeCall() failed at %s:%i : %s\n",
file, line, cudaGetErrorString(err));
exit(-1);
}
return;
}
int main(int argc,char* argv[])
{
..... Other Code ......
int *device_array;
CheckError("What is not going on here.");
CudaSafeCall(cudaMalloc((void**)&device_array,ARRAY_SIZE));
CheckError("What is going on here?");
..... Other Code ......
}
Кто-нибудь есть anyidea, что может быть здесь происходит? Сейчас ARRAY_SIZE установлен в 4 миллиона, но тот же самый вопрос появляется, когда он равен 400.
Уверена, что ошибка исходит от CUDA? Для меня похоже, что ошибка исходит со стороны C++ (хост) и не имеет ничего общего с CUDA-Runtime, поскольку CUDA-Runtime даст вам cudaError. – Turing85
Я не уверен, откуда исходит ошибка, если не из cuda. Я не слишком много знаю о том, как работает errno, но что еще может заставить его установить? Могут ли другие процессы быть причиной? – robbert229
Я уверен, что ошибка не исходит из CUDA-Runtime (хотя это может быть вызвано CUDA). – Turing85