首页
学习
活动
专区
圈层
工具
发布

连接核
EN

Stack Overflow用户
提问于 2013-12-17 14:30:27
回答 1查看 298关注 0票数 0

我在.cu文件中有一个CUDA内核,在另一个.cu文件中有另一个CUDA内核。我知道,使用动态并行性,我可以从父内核调用另一个CUDA内核,但是我想知道是否有任何方法可以通过驻留在另一个.cu文件中的子内核来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 15:02:29

可以,停那儿吧。

关键是使用单独的编译和设备代码链接,即可在nvcc上使用。由于动态并行的使用已经需要这一点,所以这里并没有什么新的东西。

下面是一个简单的例子:

ch_kernel.cu:

代码语言:javascript
复制
#include <stdio.h>

__global__ void ch_kernel(){

  printf("hello from child kernel\n");
}

main.cu:

代码语言:javascript
复制
#include <stdio.h>

extern __global__ void ch_kernel();

__global__ void kernel(){

  ch_kernel<<<1,1>>>();
}

int main(){

  kernel<<<1,1>>>();
  cudaDeviceSynchronize();
}

用下列方法汇编:

代码语言:javascript
复制
nvcc -arch=sm_35 -rdc=true -o test ch_kernel.cu main.cu -lcudadevrt
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20636800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档