gpt4 book ai didi

c++ - LNK2001 : unresolved external symbol threadIdx

转载 作者:行者123 更新时间:2023-12-02 10:21:00 28 4
gpt4 key购买 nike

我正在进入 C++/Cuda 并在“MortalityTable.obj”中遇到编译错误“未解析的外部符号 threadIdx”。

我创建了一个新的 C++ Cuda Runtime 项目,然后编译并运行良好。
然后添加了一个类MortalityTable.cu.h ,没有任何 Cuda 代码,只是普通的 C++。编译并运行良好。

当我尝试添加 Cuda 内核时,错误就开始了(如果我把它注释掉,一切都很好)。我在 MortalityTable.cu 中有这些标题:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

这是我在同一个文件中的内核
__global__
void DevPLE(double* devple, double* devQxt, int maxAge, int years) {
int i = threadIdx.x;
double surv = 0, ple = 0;
for (int age = 0; age < maxAge; age++) {
surv = surv * (1.0f - devQxt[age * years + i]);
ple += surv;
}
devple[i] = ple + 0.5;
}

有什么想法可以让我编译和运行吗?
我还有 kernel.cu 中的示例代码当您创建一个新的 Cuda 运行时项目时,它具有相同的标题并且可以正常工作。所以看起来项目设置没问题,但由于某种原因不适用于 MortalityTable.cu...

最佳答案

.cu 文件用 nvcc 编译,.c .cpp 用 cl 编译。

在 cuda 项目中,您添加一个 c++ 文件 (cpp),但随后使用 .cu 扩展名重命名它,VS 也不会更改编译器。

如果您编辑项目文件 project.vcxproj,您可能需要检查您的 .cu 文件是否包含在 CudaCompile 标记中:

  <ItemGroup>
<CudaCompile Include="cudacode.cu" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="code.cpp" />
</ItemGroup>

关于c++ - LNK2001 : unresolved external symbol threadIdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60173101/

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