在 xp 中使用 Cuda 和基于 Forms 的 GUI

发布于 2024-10-21 17:26:46 字数 759 浏览 2 评论 0原文

CUDA 编程是全新的,请耐心等待。我终于让cuda在win xp(32位)上使用Visual studio 2008在控制台应用程序中工作。但我的主要目标是将现有程序移植到cuda。该程序的计算量非常大,并且基于复杂的图形用户界面。因此,移植到 cuda 是有意义的,因为它将显着减少我的计算时间。我做了一些研究,没有发现 cuda 与基于表单的应用程序一起使用的示例。它始终与控制台应用程序一起使用。但是将我的 gui 转换为基于控制台的应用程序将是不可能的。

因此,我尝试进行测试(基于表单的 gui),其中我将 .cu 文件包含在我的项目中。但是在编译时我得到这个链接器错误

fatal error LNK1313: ijw/native module detected; cannot link with pure modules

所以我猜 cuda 不能很好地处理托管代码。
我的问题是:是否可以在 Visual Studio 2008 中将 cuda 与表单一起使用?

另一个问题:有没有人尝试过这个,因为我没有看到任何这样的例子?

请帮忙......

编辑:-- 好的,我将属性->配置->常规->公共语言运行时支持更改为/clr,并且编译没有任何问题。但是当我尝试运行它时,我收到了一个令人讨厌的弹出对话框,其中包含文件 dbgheap.c、Expression _CRTisValidHeapPointer(pUserData) 中的调试断言失败错误。 很近但没有雪茄。任何想法??????

Brand new at CUDA programming so please bear with me. I finally got cuda to work in console application using Visual studio 2008 on win xp (32 bit). But my main target is to port an existing program to port to cuda. This program is very computational intensive and is based on a complex gui. So, porting to cuda makes sense as it will cut down on my computational time significantly. I did some research and found no example where cuda is used with a forms based application. Its always been with a console application. But converting my gui into a console based application will be out of the question.

So, I tried doing a test (forms based gui) where I included the .cu file in my project. But on compile i get this linker error

fatal error LNK1313: ijw/native module detected; cannot link with pure modules

So I guess cuda doesn't play nice with managed code.
My question is: IS there anyway to use cuda with a form in visual studio 2008?

Another question: Has anyone even tried this as I have not seen any such example?

Please help....

Edit:--
Ok I changed the the properties->configuration->general->common language runtime support to /clr, and it compiled without any problem. But when I tried to run it i got a nasty popup dialog box with Debug Assertion failed error in file dbgheap.c, Expression _CRTisValidHeapPointer(pUserData).
So close but no cigar. Any Ideas?????

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

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

发布评论

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

评论(2

埖埖迣鎅 2024-10-28 17:26:46

我使用 C# 编写的 WPF 应用程序完成了此操作,该应用程序使用 C++/CLI 与混合 CLI/本机程序集进行互操作,而混合程序集又在单独的项目中调用 CUDA 代码。我没有尝试过 WinForms,但我不明白为什么这不起作用。不过,您最终会编写大量管道代码来处理互操作。

我需要有关您的应用程序在 时执行的操作的更多信息__CRTisValidHeapPointer 失败。您的堆已以某种方式损坏。它可能与 CUDA 代码相关,也可能无关。

C# 到 C++ 互操作:

http://www.ademiller.com/blogs/tech/2009/09/c-optimization-revisited-part-3-the-native-option-c/

C++ 和 CUDA 并行-侧面:

http: //www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

I've done this with a WPF application written in C# that used C++/CLI to interop with a mixed CLI/native assembly that in turn called CUDA code in a separate project. I've not tried WinForms but I don't see any reason why this shouldn't work. You end up writing quite a lot of plumbing code to handle the interop though.

I'd need more info about what your application was doing when __CRTisValidHeapPointer failed. Your heap has gotten corrupted somehow. It may or may not be related to CUDA code.

C# to C++ interop:

http://www.ademiller.com/blogs/tech/2009/09/c-optimization-revisited-part-3-the-native-option-c/

C++ and CUDA side-by-side:

http://www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

往事风中埋 2024-10-28 17:26:46

(Visual Studio 2010,CUDA 5.0)尝试设置:

链接器->系统->子系统:未设置

链接器->高级->入口点:空

(Visual Studio 2010, CUDA 5.0) Try to set:

Linker->System->Subsystem: Not Set

Linker->Advanced->Entry Point: Empty

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