Сбой cudaModuleLoadData с кодом ошибки 201

#c #cuda #gpu

#c #cuda #графический процессор

Вопрос:

У меня есть ptx-код, который я хочу выполнить на графическом процессоре. Я использую следующий код для этого:

 CUmodule cudaModule;

//the variable that stores the error associated with cuda API calls.
CUresult cudaErrorVariable;

//variable representing any cuda kernel function.
CUfunction CUDAPipelineKernel;

//initializing cuda driver
cudaErrorVariable = cuInit(0);

//checking for error while loading ptx code in CUmodule.
if(cudaErrorVariable != CUDA_SUCCESS){
    myLogger->error("Unable to initialize CUDA driver");
    return 1;
}

//loading the ptx code into the module.
cudaErrorVariable = cuModuleLoadData(amp;cudaModule, PTXCode);

//checking for error while loading ptx code in CUmodule.
if(cudaErrorVariable != CUDA_SUCCESS){
    cuGetErrorString(cudaErrorVariable, (const char **)amp;errorString);
    myLogger->error("Unable load ptx file into the module : CUDA Error {}", cudaErrorVariable);
    return 1;
}
  

Функция cuModuleLoadData возвращает код ошибки 201. Я понятия не имею, что означает этот код ошибки. Кто-нибудь может помочь мне определить ошибку?

Ответ №1:

Вот ссылка на cuInit, которая является первой и первостепенной функцией, вызываемой перед любым вызовом API драйвера cuda, как указано в документации.

Для полноты картины вот ссылка на создание контекста: cuCtxCreate.

Вы также можете использовать основной контекст, вдохновленный 6_Advanced/ptxjit образцом в каталоге cuda samples, который инициализируется с помощью cudaMalloc отложенной инициализации.

Основной контекст уникален для каждого устройства и совместно используется с CUDA runtime API. Эти функции обеспечивают интеграцию с другими библиотеками, использующими CUDA.

Комментарии:

1. Вопрос в том, «Я понятия не имею, что означает этот код ошибки. Кто-нибудь может помочь мне определить ошибку?». Как это отвечает на вопрос ?

2. @talonmies, я понял вопрос по-другому. Вы ответили на «Может ли кто-нибудь помочь мне найти значение кода ошибки?», я попытался ответить: «Не могли бы вы помочь мне решить проблему в моем коде, которая привела к ошибке?».

3. Я ответил на буквальный вопрос, который был задан. Насколько мне известно, именно так работают вопросы и ответы

4. @talonmies, я, возможно, ошибочно предположил, что у OP было представление о значении кода ошибки из-за вызова cuGetErrorString . Вопрос может быть понят двумя способами, ИМХО. Я не верю, что глагол identify используется здесь для поиска в таблице ошибок.

Ответ №2:

Как вы можете видеть в соответствующей документации, ошибка 201 является CUDA_ERROR_INVALID_CONTEXT , что означает, что вы неправильно настроили контекст перед попыткой загрузки модуля.

Комментарии:

1. Как настроить контекст?

2. @RegisPortalez: Это ответ сообщества wiki — отредактируйте любую дополнительную информацию, которую вы хотите, в ответе. Вот почему он был создан таким образом. Код в исходном вопросе нарушен множеством способов, которые нуждаются в исправлении, помимо простого отсутствия создания контекста

3. Не знал смысла ответов сообщества wiki. И у меня нет ответа на вопрос. Я просто подумал, что ответ RTFM не был действительно полезным, поскольку в руководстве в основном говорится, что «контекст недопустим»…

4. @RegisPortalez Но это был, по сути, вопрос RTFM («У меня есть номер ошибки, может кто-нибудь сказать мне, что это значит»), и ответ содержит именно это, а также обучающий пункт о том, где найти документацию по кодам, учитывая, что API драйвера не имеет и код ошибки для текстовых вспомогательных функций