gpt4 book ai didi

c++ - 编写 CUDA 内核以替换等效的仅 CPU 函数

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

我有一些 .cpp 文件实现了平滑粒子流体动力学,这是一种用于模拟流体流动的粒子方法。

这些粒子技术中最耗时的部分之一是在模拟的每个时间步为每个粒子寻找最近的邻居(K-最近邻居或范围搜索)。

现在我只想使用 GPU 和 CUDA 加速邻居搜索例程,取代我当前基于 CPU 的邻居搜索例程。只有邻居搜索将在 GPU 上运行,而其余的模拟在 CPU 上进行。

我的问题是,我应该如何编译整个代码?更具体地说,假设我在文件 nsearch.cu 中编写了邻居搜索核函数。

然后我是否应该重命名我以前的所有.cpp文件为.cu文件并重新编译整个集合(连同nsearch.cpp)。 cu) 使用 nvcc?至少对于简单的示例,nvcc 不能 编译扩展名为 .cpp 的 CUDA 代码,即 nvcc foo.cu 编译但 nvcc hello.cpp 没有。

简而言之,这个 CUDA 插件的结构应该是什么,我应该如何编译它?

我在工作中使用 Ubuntu Linux 10.10、CUDA 4.0、NVIDIA GTX 570(计算能力 2.0)和 gcc 编译器

最佳答案

您需要编写 nsearch.cu 文件并用“nvcc -c -o nsearch.o”编译它,然后将 nsearch.o 链接到主应用程序。必须有一个 nsearch.h 文件导出实际内核的包装器。

in nsearch.h : 
void kern();

in nsearch.cu:
void __global__ kern__() {
}
void kern() {
kern__<<<...>>>();
}

关于c++ - 编写 CUDA 内核以替换等效的仅 CPU 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8232636/

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