gpt4 book ai didi

c++ - 有没有人真正让 NVCC 和英特尔编译器协同工作?

转载 作者:行者123 更新时间:2023-11-30 04:05:04 26 4
gpt4 key购买 nike

关于尝试让 NVCC 使用英特尔编译器的问题很多。这行不通,我明白了。

人们给出的最常见的答案是使用 NVCC/cl.exe 将设备代码编译成库,然后单独编译主机代码并链接它们。我正在尝试这个,但我无处可去。

在 VS2012 中,我创建了一个包含 2 个项目的解决方案 - 一个 CUDA,另一个是控制台应用程序。

我已将 CUDA 项目设置为使用 VS2012 编译成静态库。编译没问题。

我已将控制台应用程序设置为 intel 14.0 并编译为 exe。我还向“附加库依赖项”添加了正确的路径,并通过“附加依赖项”告诉编译器有关 CUDA 库的信息(我还告诉编译器有关 cudart_static.lib 的信息)。

Build dependency也设置为先编译CUDA工程。

但是,这种设置并不好。给我一个连谷歌都不知所措的错误:

Error   5   error MSB4057: The target "ComputeLegacyManifestEmbedding" does not exist in the project.   C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms\Win32\PlatformToolsets\Intel C++ Compiler XE 14.0\Toolset.targets  1162    7   rxnCalc_cpp

为了验证链接是否正常,如果我将两个项目都设置为通过 VS2012 编译,我不会遇到任何问题。

操作系统 - Windows 7 64 位(虽然是 32 位应用程序)

平台 - VS2012

Cuda 工具包 - 6.0

Cuda 计算版本 - 5.0(并按此编译)

那么,我是在浪费时间还是遗漏了什么?似乎我已经浏览了一百篇文章,但我还没有看到一个成功。很多人急于告诉你这是你应该做的,但没有人告诉你如何去做!

最佳答案

对于所有使用 Windows 并试图让 CUDA 和英特尔编译器合作的人,请参阅我关于如何设置解决方案的初始问题。

为了使其正常工作,根据 Roger Dahl 的建议,我将 CUDA 项目更改为 DLL。

这涉及以下修改:

  1. 将CUDA工程改成dll

  2. 将 __declspec(dllexport) 添加到 CUDA 包装函数

  3. 将控制台链接器指向 DLL 库文件

这有效,我现在能够利用所有英特尔编译器优化。

但是,请注意,我确实需要将英特尔编译器设置为仅执行单个文件 IPO。多文件IPO会报错,这个有点意料之中。

希望这对同一条船上的其他人有所帮助。

关于c++ - 有没有人真正让 NVCC 和英特尔编译器协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com