- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在进入 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/
我只需要澄清一些非常基本的东西 - 大多数计算示例都使用以下内容: ID = blockIdx.x*blockDim.x+threadIdx.x; //...然后对数组[ID]进行计算 我的问题是,如
这是一个概念性问题。在 CUDA 中,gridDim、blockDim 和 threadIdx 可以是 1D、2D 或 3D。我想知道他们的2D和3D版本是如何解释的? 更详细地说,CUDA是否将多维
我正在进入 C++/Cuda 并在“MortalityTable.obj”中遇到编译错误“未解析的外部符号 threadIdx”。 我创建了一个新的 C++ Cuda Runtime 项目,然后编译并
这个问题在这里已经有了答案: How to get VS 2010 to recognize certain CUDA functions (2 个答案) 关闭 9 年前。 Visual Studi
通过 cub::LaneId() 或类似以下的函数来解释是最简单的: inline __device__ unsigned get_lane_id() { unsigned ret; asm
通过 cub::LaneId() 或类似以下的函数来解释是最简单的: inline __device__ unsigned get_lane_id() { unsigned ret; asm
如何强制 GCC 使用代码中的 threadIdx 行进行编译? 我正在尝试使用 c 包装器编译我的 cuda 应用程序。 为了生成 .so 文件,我运行:nvcc -arch=sm_11 -o li
您好,您正在尝试在 CUDA 上并行化格子玻尔兹曼求解器。不知何故,我在将目标文件链接在一起时遇到错误。对象编译没有错误。 LBMSolver.o: In function >LBMSolver::c
我是 OpenCL 的初学者,试图将一个简单的 CUDA 函数转换为 OpenCL。在 CUDA 函数中,他们使用以下代码段来获取操作索引, int id = (blockIdx.x + blockI
我是一名优秀的程序员,十分优秀!