Как развернуть программы CUDA в Windows? - PullRequest
2 голосов
/ 12 августа 2011

У меня есть программа, ссылающаяся на cuda, cublas и cudart.

Есть ли способ развернуть ее, не заставляя пользователей устанавливать самые последние драйверы nvidia?

Когда я просто копирую упомянутые dll в путь запуска, программа не запускается и жалуется на несуществующую процедуру в nvcuda.dll.Даже если я поставлю этот, программа ведет себя странно.Если установлены самые последние драйверы, все работает нормально.

Смежный вопрос ... как я могу проверить, поддерживается ли cuda (+ обновлено), и если это не случай возврата в мой случай BLAS / LAPACK?Если я предоставлю дллс прогу.плохо себя ведет, если я не предоставлю их, это может даже не начаться.

Спасибо!

1 Ответ

3 голосов
/ 13 августа 2011

Вы пытались не связываться с dll-файлами CUDA, а загружать их динамически и вызывать cudaGetDeviceCount ()? Как это:

typedef cudaError_t (*FnGetDeviceCount )    (   int *   count    ) ;
HMODULE hCuda=LoadLibrary("cudart32_40_17.dll");
if( !hCuda ) return ; // ERROR: cannot load dll, DllMain must have failed because cudart only depends on Kernel dll implicitly. Or cannot find dll in curent directory or in the path.
FnGetDeviceCount fnGetDeviceCount=(FnGetDeviceCount)GetProcAddress(hCuda, "cudaGetDeviceCount");
if( !fnGetDeviceCount) return; // ERROR: cudart has no entry point for cudaGetDeviceCount ?!
int count = 0;
if( cudaSuccess != (*fnGetDeviceCount)(&count) ) return ;// ERROR: we don't wanna use CUDA if even device enumeration fails
if( !count ) return; // FALLBACK: CUDA has no devices, don't try to use it, fallback to some other BLAS

Это неудобно, потому что вы не можете просто ссылаться на cudart или другие библиотеки, но это может позволить вам вернуться к BLAS, не увидев при этом ужасных ошибок при запуске. Отказ от ответственности: я не тестировал и даже не компилировал этот код, пожалуйста, сообщите нам, если вы используете его, и он работает:)

Этот поток предлагает вам перераспределить dll из вашей конкретной версии инструментария CUDA (например, cudart64_40_17.dll), так что все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...