作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 cuda 文件,分别是 A 和 B。我需要从 A 到 B 调用一个函数,比如..
__device__ int add(int a, int b) //this is a function in A
{
return a+b;
}
__device__ void fun1(int a, int b) //this is a function in B
{
int c = A.add(a,b);
}
我该怎么做?
我可以使用静态关键字吗?请给我一个例子..
最佳答案
简短的回答是你不能。 CUDA 只支持内部链接,因此编译内核所需的一切都必须在同一个翻译单元中定义。
您可以将函数放入头文件中,如下所示:
// Both functions in func.cuh
#pragma once
__device__ inline int add(int a, int b)
{
return a+b;
}
__device__ inline void fun1(int a, int b)
{
int c = add(a,b);
}
并将该头文件包含到您需要使用这些函数的每个 .cu 文件中。 CUDA 构建链似乎支持 inline
关键字,并且这种声明不会在我使用的任何 CUDA 平台(不包括 Windows)上生成重复符号。我不确定它是否有效,所以请放心。
关于来自花药 cu 文件的 CUDA 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6252912/
我是一名优秀的程序员,十分优秀!