首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在目标设备上运行CUDAfy.NET应用程序

无法在目标设备上运行CUDAfy.NET应用程序
EN

Stack Overflow用户
提问于 2015-10-01 19:32:49
回答 1查看 1.2K关注 0票数 0

我已经在CUDA 4.0CP框架上获得了一个现有的WinForms应用程序,我希望它能够在CUDA设备上进行计算。为此,我决定在C/C++工具包中使用CUDAfy.NET包装器,因为(据我所知)它是CUDA的唯一最新版本。开发在我的机器上没有任何重大问题,但是我在部署到另一个设备时遇到了麻烦。

更具体地说,当我在VS中构建项目,然后在我的机器上运行它时,它运行得很好。但奇怪的是,当初始化nvcc.exe模块时,它会运行CUDAfy,这是CUDAfy的一部分,不应该是必需的。当我试图在任何目标机器上运行二进制文件时,它会抛出这个异常:

无法在路径中找到编译器cl.exe。

这是一个与缺少用于C++编译器的VS工具有关的错误,它不应该出现在目标设备上。现在出现了最奇怪的事情:当我构建CUDAfy.NET附带的示例项目并尝试在目标设备上运行它时,它会抛出相同的异常。

根据CUDAfy.NET测试应用CUDAfy.NET的说法,目标机器没有什么问题,它是兼容的,并且具有CUDA功能。此外,我还在几个不同的设备上测试过,结果总是一样的。我已经跟踪了异常的起源,正如我所指出的,在初始化CUDAfy.NET时会引发该异常:

代码语言:javascript
复制
CudafyModule module = CudafyTranslator.Cudafy();
GPGPU _gpu = CudafyHost.GetDevice(eGPUType.Cuda);
_gpu.LoadModule(module);

根据CUDAfy.NET用户手册的说法,它在满足这些要求的设备上应该运行得非常好:

  • Windows 64位
  • .NET 4.0
  • 计算能力2.0或更高的NVIDIA GPU
  • 最新的NVIDIA驱动程序
  • 如果使用这些数学库,则CURAND、CUSPARSE、CUFFT和CUBLAS dlls
  • 预编译CUDAfy模块

所有这些都是满意的,但仍然不能运行。这就给我带来了麻烦,我被困在那里了。

其中一种可能是,它是由错误的代码编译造成的,而代码的目的是要被篡改。根据手册(我引用),“在部署情况下通常不会使用.NET代码,因为这需要完整的CUDA和Visual。通过使用cudaycl命令行工具,cudafy模块可以在.cdfy文件中松散,也可以嵌入应用程序集中(.exe或.dll)。”这应该是自动完成的,尽管如此,我还是尝试过使用cudaycl,可惜没有任何改进。但是,由于初始化CUDAfy时会出现异常,我认为问题的根源在其他地方。

其他原因可能是,我为特定的体系结构(如CUDA 2.0)构建了二进制文件,然后将其部署到另一个体系结构(例如CUDA 3.0)。在关于nvcc编译器的一节中,CUDA工具包文档提到了一些关于二进制代码的内容:“二进制代码是特定于体系结构的。使用指定目标体系结构的编译器选项-code生成一个cubin对象:例如,用-code=sm_35编译生成具有计算能力3.5的设备的二进制代码。”

不管怎么说,我现在都做不到。我希望你能提供任何帮助和建议。顺便说一下,我使用的是最新的CUDAfy.NET v1.29和CUDA工具包7.0 (CUDAfy.NET还不支持最新版本)。

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 10:27:17

CUDAfy_User_Manual_1_22.pdf中有一章专门讨论这个问题。它是“提高性能的5.2缓存模块”。

代码语言:javascript
复制
public class ArrayBasicIndexing
{
  CudafyModule km = CudafyModule.TryDeserialize();
  if (km == null || !km.TryVerifyChecksums())
  {
    km = CudafyTranslator.Cudafy();
    km.Serialize();

代码将检查是否已经编译了一个CUDAfy模块,并且只有在没有现有模块(或者已经过时)的情况下才会编译一个新模块。因此,您的应用程序将在开发机器上生成模块,然后可以将该应用程序与模块一起分发到其他机器。这些客户端机器将不再尝试生成新模块,因为应用程序没有改变。

如果您已经更改了应用程序,您将不得不运行它(以便它可以重新生成模块),然后重新分发模块与新版本的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32895454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档