当前位置:网站首页>CUDA中的函数执行空间说明符
CUDA中的函数执行空间说明符
2022-07-02 06:12:00 【扫地的小何尚】
函数执行空间说明符
函数执行空间说明符表示函数是在主机上执行还是在设备上执行,以及它是可从主机调用还是从设备调用。
1 __global__
__global__ 执行空间说明符将函数声明为内核。 它的功能是:
- 在设备上执行,
- 可从主机调用,
- 可在计算能力为 3.2 或更高的设备调用(有关更多详细信息,请参阅 CUDA 动态并行性)。
__global__函数必须具有 void 返回类型,并且不能是类的成员。
对 __global__ 函数的任何调用都必须指定其执行配置,如执行配置中所述。
对 __global__ 函数的调用是异步的,这意味着它在设备完成执行之前返回。
2 __device__
__device__ 执行空间说明符声明了一个函数:
- 在设备上执行,
- 只能从设备调用。
__global__和__device__执行空间说明符不能一起使用。
3 __host__
__host__ 执行空间说明符声明了一个函数:
- 在主机上执行,
- 只能从主机调用。
相当于声明一个函数只带有__host__执行空间说明符,或者声明它没有任何__host__、__device__或__global__执行空间说明符; 在任何一种情况下,该函数都仅为主机编译。
__global__ 和 __host__ 执行空间说明符不能一起使用。
但是, __device__ 和 __host__ 执行空间说明符可以一起使用,在这种情况下,该函数是为主机和设备编译的。 Application Compatibility 中引入的 __CUDA_ARCH__ 宏可用于区分主机和设备之间的代码路径:
__host__ __device__ func()
{
#if __CUDA_ARCH__ >= 800
// Device code path for compute capability 8.x
#elif __CUDA_ARCH__ >= 700
// Device code path for compute capability 7.x
#elif __CUDA_ARCH__ >= 600
// Device code path for compute capability 6.x
#elif __CUDA_ARCH__ >= 500
// Device code path for compute capability 5.x
#elif __CUDA_ARCH__ >= 300
// Device code path for compute capability 3.x
#elif !defined(__CUDA_ARCH__)
// Host code path
#endif
}
边栏推荐
- 如何使用MITMPROXy
- Introduce uview into uni app
- 浅谈三点建议为所有已经毕业和终将毕业的同学
- AttributeError: ‘str‘ object has no attribute ‘decode‘
- Invalid operation: Load into table ‘sources_orderdata‘ failed. Check ‘stl_load_errors‘ system table
- 日期时间API详解
- Is there a really free applet?
- State machine in BGP
- LeetCode 90. Subset II
- Flutter hybrid development: develop a simple quick start framework | developers say · dtalk
猜你喜欢

Deep learning classification network -- vggnet

ZABBIX server trap command injection vulnerability (cve-2017-2824)

社区说|Kotlin Flow 的原理与设计哲学

The difference between session and cookies

Problems encountered in uni app development (continuous update)

Detailed explanation of BGP message

Spark overview

Ros2 --- lifecycle node summary

亚马逊aws数据湖工作之坑1

Flutter hybrid development: develop a simple quick start framework | developers say · dtalk
随机推荐
Common means of modeling: combination
Talking about MySQL database
Codeforces Round #797 (Div. 3) A—E
VLAN experiment of switching technology
Ti millimeter wave radar learning (I)
Zabbix Server trapper 命令注入漏洞 (CVE-2017-2824)
No subject alternative DNS name matching updates. jenkins. IO found, the reason for the error and how to solve it
Ros2 --- lifecycle node summary
稀疏数组(非线性结构)
Compte à rebours de 3 jours pour l'inscription à l'accélérateur de démarrage Google Sea, Guide de démarrage collecté à l'avance!
如何使用MITMPROXy
Replace Django database with MySQL (attributeerror: 'STR' object has no attribute 'decode')
利用传统方法(N-gram,HMM等)、神经网络方法(CNN,LSTM等)和预训练方法(Bert等)的中文分词任务实现
CNN visualization technology -- detailed explanation of cam & grad cam and concise implementation of pytorch
Cookie plugin and localforce offline storage plugin
LeetCode 283. Move zero
经典文献阅读之--SuMa++
Decryption skills of encrypted compressed files
Invalid operation: Load into table ‘sources_orderdata‘ failed. Check ‘stl_load_errors‘ system table
In depth understanding of JUC concurrency (I) what is JUC