Как конвертировать программу на C ++, использующую CUDA, в MEX - PullRequest
0 голосов
/ 15 июня 2010

Для работы я конвертирую программу Image Denoising, которая поставляется с CUDA SDK, в программу MATLAB. Насколько я знаю, я сделал все необходимые изменения, требуемые MATLAB, но когда я пытаюсь вызвать mex для него, MATLAB возвращает кучу ошибок связывания, которые я не знаю, как исправить. Если у кого-нибудь есть какие-либо предложения о том, что я могу делать неправильно, я был бы очень признателен.

Команда, которую я даю MATLAB:

mex imageDenoisingGL.cpp -I..\..\common\inc -IC:\CUDA\include -L..\..\common\lib -lglut32

И вывод MATLAB - это куча из них:

imageDenoisingGL.obj : error LNK2019: unresolved external symbol __imp__cutCheckCmdLineFlag@12 referenced in function "void __cdecl __cutilExit(int,char * *)" (?__cutilExit@@YAXHPAPAD@Z)

Я бегу:
Windows XP x32
Visual Studio 2005
MATLAB 2007a

Ответы [ 3 ]

1 голос
/ 16 июня 2010

Вам необходимо связать библиотеки CUDA с вашим MEX-файлом. Похоже, вы также используете некоторые вещи "cutil.h" из CUDA SDK (например, cutCheckCmdLineFlag), поэтому вам нужно будет ссылаться не только на библиотеку cudart, но и на cutil. То есть вам, вероятно, нужно добавить что-то вроде

-Lc:\CUDA\lib -lcudart -lcuda -L<path-to-cutil.lib> -lcutil

в вашу командную строку MEX.

1 голос
/ 15 июня 2010

Если вы конвертируете из CUDA в MATLAB, то почему вы все еще вызываете функции CUDA?

неразрешенный внешний символ __ imp__cutCheckCmdLineFlag @ 12

0 голосов
/ 10 августа 2013

High Performance Mark предлагает в своем комментарии скомпилировать мексфайлы с использованием CUDA непосредственно в Visual Studio.На странице

Компиляция mex-файлов CUDA с помощью Visual Studio

описано, как компилировать mex-файлы с использованием CUDA под Visual Studio.Существует также загружаемый пример проекта Visual Studio.

Процедура была протестирована для CUDA 5.0, Visual Studio 2010 и Matlab 2010a / 2012b, но, возможно, она может быть интересна и людям, использующим другие версии вышеупомянутогопродукты.

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