gpt4 book ai didi

cuda - 如何从 C++ 头文件调用 CUDA 文件?

转载 作者:行者123 更新时间:2023-12-05 08:59:09 25 4
gpt4 key购买 nike

我知道从.c 文件调用.cu 文件的方法。但现在我想从 C 头文件中调用 .cu 文件。有可能做到吗?如果是这样,我应该如何设置我的项目?请帮忙......

最佳答案

这是一个有效的例子:

文件1.h:

int hello();

文件2.h:

#include <stdio.h>
#include "file1.h"

int myfunc(){
hello();
return 0;
}

文件1.cu:

#include <stdio.h>
#include "file1.h"

__global__ void mykernel(){
printf("Hello from mykernel\n");
}

int hello(){

mykernel<<<1,1>>>();
cudaDeviceSynchronize();
return 0;
}

文件2.cpp:

#include "file2.h"

int main(){
myfunc();
return 0;
}

构建和测试:

$ nvcc -arch=sm_20 -c file1.cu
$ g++ -c file2.cpp
$ g++ -o test file1.o file2.o -L/usr/local/cuda/lib64 -lcudart
$ ./test
Hello from mykernel
$

假设您打算包括您的 file2.h到 cpp 文件中,您不能直接从该 header 调用 cuda 内核并在 cpp 文件中使用它。您必须在 cuda 内核周围放置一个包装器,并调用包装器,如我所指出的。这是因为您的 cpp 文件将由主机编译器编译,主机编译器对 cuda 语法一无所知(例如 mykernel<<<1,1>>>(); )

此外,如评论中所述,保留头文件 file2.h 可能更有意义只是为了需要的原型(prototype),并把 myfunc 的实际功能定义到某处的 cpp 文件中。

关于cuda - 如何从 C++ 头文件调用 CUDA 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774217/

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