gpt4 book ai didi

c++ - CUDA 和链接器错误

转载 作者:行者123 更新时间:2023-11-28 08:22:32 26 4
gpt4 key购买 nike

这可能是与Linker errors 2005 and 1169 (multiply defined symbols) when using CUDA __device__ functions (should be inline by default) 类似的问题,但不完全是。尝试在 VS2010 上构建项目(使用已显示在其他地方工作的代码)时,我遇到了几个 LNK2005 错误。我束手无策。

例如,我有以下三个文件:transposeGPU.htransposeGPU.cutransposeCUDA.cutransposeGPU.h可以总结如下:

void transposeGPU(float *d_dst, size_t dst_pitch,
float *d_src, size_t src_pitch,
unsigned int width, unsigned int height);

即没有任何包含的单个声明。该函数的定义可以在 transposeGPU.cu 中找到,可以总结如下:

#include <stdio.h>
#include "../transposeGPU.h"
#include "../helper_funcs.h"

#include "transposeCUDA.cu"

void
transposeGPU(float *d_dst, size_t dst_pitch,
float *d_src, size_t src_pitch,
unsigned int width, unsigned int height)
{
// execution configuration parameters
dim3 threads(16, 16);
dim3 grid(iDivUp(width, 16), iDivUp(height, 16));
size_t shared_mem_size =
(threads.x * threads.y + (threads.y - 1)) * sizeof(float);

transposeCUDA<<<grid, threads, shared_mem_size>>>(
d_dst, dst_pitch / sizeof(float),
d_src, src_pitch / sizeof(float),
width, height);
}

tranposeGPU.cu 除了定义 transposeGPU() 和调用 transposeCUDA( ),后者在 transposeCUDA.cu 中找到。现在,transposeCUDA.cu 按预期定义函数:

#include "common_kernel.h"

__global__ void
transposeCUDA(
float *g_dst, size_t s_dst_pitch,
const float *g_src, size_t s_src_pitch,
unsigned int img_width, unsigned int img_height)
{
// several lines of code...
}

一切看起来都井井有条,但我仍然收到 错误 LNK2005:“void __cdecl __device_stub__Z13transposeCUDAPfjPKfjjj(float *,unsigned int,float const *,unsigned int,unsigned int,unsigned int)” (?__device_stub__Z13transposeCUDAPfjPKfjjj@@YAX PAMIPBMIII @Z) 已经在 transposeGPU.obj 中的 transposeCUDA.obj 中定义。

那个和大约二十个其他类似的链接器错误。为什么?没有明显的重新定义发生。任何帮助将不胜感激。

最佳答案

如果您同时编译 transposeCUDA.cu 和 transposeGPU.cu,则会发生重新定义,因为定义出现在两个翻译单元中。您不应该 #include transposeCUDA.cu 并将 nvcc 应用于该文件。

关于c++ - CUDA 和链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282681/

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