2009-11-07 57 views
0

我已将我的问题发布在CUDA论坛上,但不确定是否适合在此处发布链接以获取更多意见如果两个论坛之间有大量不同的受众。链接是here。对于任何不便之处,我表示歉意,并对此问题提出任何意见,因为我还没有听到有关特定CUDA内存访问和管理问题的具体信息。提前致谢。CUDA主机到设备(或设备到主机)在同一块图形卡上使用OpenGL应用程序呈现图形的memcpy操作

+0

在这里发布问题肯定会更好,而不是链接。最重要的是,你目前的问题似乎是在线程2上彻底退出cuda,但是你没有提供任何关于你实际得到什么错误的细节。没有细节,不是很容易帮助你。 – Bahbar 2009-11-18 12:21:41

+0

对不起,很难看到问题。我会在这里重新发布问题,而不是链接。 – stanigator 2009-11-18 23:42:18

回答

2

我不确定这是否是相关的,但没有看到更多的代码,但CudaObj的析构函数在哪里被调用?

你说:

但是,如果我这样做,这样,我碰上退出在CudaObj的析构函数的行,其中cudaFree()被调用的应用程序错误。这会导致CUDA上下文的清理代码由于错误而未被执行,导致内存清理代码,从而导致内存泄漏。

当你描述你如何改变cuda安装的东西在thread2的主要功能的开始。如果您从另一个线程调用CudaObj的析构函数,那么执行cudaFree清理将会出错,原因与您必须将cuda初始化移动到线程2中相同。您听起来像您已经知道这一点,但是cuda上下文特定于您的流程中的单个线程。根据文档不支持在其他线程中清理,尽管我从未尝试过。 希望这会有所帮助