У меня возникла проблема со следующим кодом: при выполнении вызова cublasSrotg он выдает исключение: «Адрес записи нарушения доступа 0x05200600», который является адресом указателя «dA». При запуске отладчика он пропускает вызов cudaMalloc, но я не могу понять, что я делаю неправильно.Нарушение прав доступа при вызове функции cublas
cublasHandle_t handle;
cublasCreate(&handle);
float hA[SIZE] = { 1.0f, 2.0f, 3.0f, 4.0f };
int sizef = sizeof(float);
float* dA;
cudaMalloc((void**)&dA, SIZE * sizef);
cublasSetVector(SIZE, sizef, hA, 1, dA, 1);
float s, c;
cublasSrotg(handle, dA, dA + N, &c, &s);
cublasSrot(handle, N, dA, 1, dA + N, 1, &c, &s);
cublasGetVector(SIZE, sizef, dA, 1, hA, 1);
...
Я бы предложил добавить проверку ошибок cuda. Вы можете найти дополнительную информацию о проверке ошибок cuda в google. Это поможет вам понять, где ваш код поступил не так и как была ошибка cuda. – user1477622
cudaError error = cudaMalloc ((void **) & dA, SIZE * sizef); Посмотрите, что он возвращает. Если в cudaMalloc нет ошибки, проверьте, даете ли вы правильные аргументы функции или нет. – jwdmsd