CUDA学习(七十一)
函数参数:
__global__
函数参数通过常量内存传递给设备,限制为4 KB。
__global__
函数不能有可变数量的参数。
函数中的静态变量:
在__device__
或__global__
函数的主体中,只有__shared__
变量或没有任何设备内存空间说明符的变量可以用静态存储类声明。 在__device__
` host函数的主体中,只有未注释的静态变量(即没有设备内存空间说明符)可以用静态存储类声明。 未注释的函数范围静态变量与名称空间范围中定义的
__device__`变量具有相同的限制。 如果它们是类类型的,则它们不能具有非空的构造函数或非空的析构函数(请参阅设备内存空间说明符)。
下面显示了函数范围静态变量的合法和非法使用示例:
struct S1_t {int x;
};
struct S2_t {int x;__device__ S2_t(void) { x = 10; }
};
struct S3_t {int x;__device__ S3_t(int p) : x(p) { }
};
__device__ void f1() {static int i1; // OKstatic int i2 = 11; // OKstatic S1_t i3; // OKstatic S1_t i4 = { 22 }; // OKstatic __shared__ int i5; // OKint x = 33;static int i6 = x; // error: dynamic initialization is not allowedstatic S1_t i7 = { x }; // error: dynamic initialization is not allowedstatic S2_t i8; // error: dynamic initialization is not allowedstatic S3_t i9(44); // error: dynamic initialization is not allowed
}
__host__ __device__ void f2() {static int i1; // OKstatic __shared__ int i2; // error: __shared__ variable inside// a host function
}
函数指针:
主机代码中使用的__global__
函数的地址不能用于设备代码(例如,启动内核)。 同样,在设备(计算能力大于3.5)代码中采用的__global__
函数的地址不能用于主机代码。
不允许在主机代码中使用__device__
函数的地址。
函数递归:
__global__
函数不支持递归。
友函数:
__global__函数或函数模板不能在友函数声明中定义。
例子:
struct S1_t {friend __global__void foo1(void); // OK: not a definitiontemplate<typename T>friend __global__void foo2(void); // OK: not a definitionfriend __global__void foo3(void) { } // error: definition in friend declarationtemplate<typename T>friend __global__void foo4(void) { } // error: definition in friend declaration
};
类:
数据成员:
不支持静态数据成员,除了那些也是const限定的成员(请参阅Const限定变量)。
函数成员:
静态成员函数不能是__global__
函数。
虚函数:
当派生类中的函数覆盖基类中的虚函数时,覆盖函数和覆盖函数上的执行空间说明符(即__host__
,__device__
)必须匹配。
不允许将具有虚函数的类的对象作为参数传递给__global__
函数
编译器将虚函数表放置在全局或常量内存中。
虚基类:
不允许将__global__
函数作为参数传递给从虚基类派生的类的对象。
Anonymous Unions:
名称空间作用域匿名联合的成员变量不能在__global__或__device__函数中引用。
Windows的具体:
CUDA编译器遵循IA64 ABI进行类布局,而Microsoft主编译器不支持。 这可能会导致CUDA编译器计算与Microsoft主编译器不同的类布局和大小,对于满足以下任何条件的类类型“T”或对于任何具有T作为字段类型或基类类型 班级类型(直接或间接):
- T有虚函数。
- T有一个虚拟基类。
- T具有多个直接或间接空基类的继承。
- T的所有直接和间接基类('B')都是空的,并且T('F')的第一个字段的类型在其定义中使用B,使得B在F的定义中的偏移量0处布局。
只要受影响的类别类型专门用于主机或设备代码,程序应该正常工作; 请勿在主机和设备代码之间传递此类类型的对象(例如,作为__global__函数的参数或通过cudaMemcpy *()调用)
CUDA学习(七十一)相关推荐
- springboot学习(七十一)解决问题:the URL contained a potentially malicious String “;“
访问某个请求报错: org.springframework.security.web.firewall.RequestRejectedException: The request was reject ...
- JavaScript学习(七十一)—call、apply、bind学习总结
JavaScript学习(七十一)-call.apply.bind学习总结 一.call方法 call方法调用一个对象,简单的理解为调用函数的方式,但是它可以改变函数的this指向 二.apply() ...
- CUDA学习(四):CUDA编程七个步骤
博主CUDA学习系列汇总传送门(持续更新):编程语言|CUDA入门 文章目录 一.cudaMalloc.cudaMemcpy和cudaFree 介绍 二.CUDA编程七步曲 本章节学习内容: 1.CU ...
- CUDA学习(十一):原子操作实现向量内积
博主CUDA学习系列汇总传送门(持续更新):编程语言|CUDA入门 文章目录 一.原子操作的概念 二.一次原子操作替换两次归约 三.Block内归约,block间原子操作 本文章为 < GPU编 ...
- Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
1. Nutch 1.3 的页面评分机制 Nutch1.3目前默认还是使用OPIC作为其网页分数算法,但其之后,已经引入了PageRank-like算法,以弥补OPIC算法的不足,目前OPIC算法还是 ...
- 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...
- 七十一、Python | Leetcode字符串系列(上篇)
@Author:Runsen @Date:2020/7/3 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件
jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQ ...
- 深度学习(三十六)异构计算CUDA学习笔记(1)
异构计算CUDA学习笔记(1) 原文地址:http://blog.csdn.net/hjimce/article/details/51506207 作者:hjimce 近日因为感觉自己在深度学习工程化 ...
- Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)
下面是Google翻译的http://wiki.apache.org/nutch/NewScoring内容,是关于Nutch 新的链接分数算法的说明,有点类似于Google的PageRank,这里有其 ...
最新文章
- Xcode中通过删除原先版本的程序来复位App
- 【移动开发】Android中不用图片资源也能做出好看的界面
- 【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!
- cs-HtmlHelpers
- python 源码保护_Python代码保护
- C#增删改查操作Access数据库之二(数据库的增加)
- 前端学习(3117):react-hello-react的类中的方法
- 阿里规定超过三张表禁止join,这是为什么?
- 阿拉伯数字转换成人民币大写金额的方法
- vue 阻止输入框冒泡
- 为什么公司要和商标同步注册?
- gimp 抠图_【GIMP学习】抠图方法二则
- Js-函数作用域和块作用域
- java -1%3_Java_SE 流程控制
- 小学生日常行为规范PPT模板
- PHP取整,四舍五入取整、向上取整、向下取整、小数截取
- 怎样缓解灾难性遗忘?持续学习最新综述三篇
- sublime text3 配置python、ruby、c/c++(c/c++不推荐这个方法)
- 幼师计算机应用基础的认识200字,《计算机应用基础》课程教学与学前教育专业的深度融合...
- 解决Error:All flavors must now belong to a named flavor dimension.