如何转换 C++使用 CUDA 到 MEX 中的程序

发布于 2024-09-05 09:16:02 字数 579 浏览 4 评论 0 原文

为了工作,我将 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

For work, I am converting the Image Denoising program that comes with the CUDA SDK into a MATLAB program. As far as I know, I have made all the necessary changes required by MATLAB, but when I try to call mex on it, MATLAB returns a bunch of linkage errors that I have no idea how to fix. If anyone has any suggestions on what I might be doing wrong, I would greatly appreciate it.

The command I am giving MATLAB is:

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

And the output from MATLAB is a bunch of these:

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

I am running:
Windows XP x32
Visual Studio 2005
MATLAB 2007a

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苦行僧 2024-09-12 09:16:02

您需要将 CUDA 库链接到您的 MEX 文件。看来您还使用了 CUDA SDK 中的一些 "cutil.h" 内容(例如 cutCheckCmdLineFlag),因此您需要链接到 not不仅有cudart图书馆,还有cutil图书馆。 添加类似的内容。

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

也就是说,您可能需要在 MEX 命令行中

You need to link the CUDA libraries to your MEX file. It looks like you're also using some of the "cutil.h" stuff from the CUDA SDK (such as cutCheckCmdLineFlag), so you'll need to link against not only the cudart library, but also cutil. I.e. you probably need to add something like

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

to your MEX command-line.

于我来说 2024-09-12 09:16:02

如果您要从 CUDA 转换为 MATLAB,那么为什么还要调用 CUDA 函数?

无法解析的外部符号
__imp__cutCheckCmdLineFlag@12

If you are converting from CUDA to MATLAB, then why are you still calling the CUDA functions?

unresolved external symbol
__imp__cutCheckCmdLineFlag@12

勿忘心安 2024-09-12 09:16:02

High Performance Mark 在他的评论中建议直接在 Visual Studio 下使用 CUDA 编译 mexfiles。在

使用 Visual Studio 编译 CUDA mex 文件

页面描述了如何在 Visual 下使用 CUDA 编译 mexfiles工作室。还有一个可下载的 Visual Studio 示例项目。

该过程已经针对 CUDA 5.0、Visual Studio 2010 和 Matlab 2010a/2012b 进行了测试,但使用上述产品其他版本的人们也许也会对此感兴趣。

High Performance Mark is suggesting, in his comment, to compile mexfiles using CUDA directly under Visual Studio. At the page

Compiling CUDA mex files with Visual Studio

it is described how the compile mexfiles using CUDA under Visual Studio. There is also a downloadable Visual Studio sample project.

The procedure has been tested for CUDA 5.0, Visual Studio 2010 and Matlab 2010a/2012b, but perhaps it could be of interest also to people using other versions of the above products.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文