核函数是GPU每个thread上运行的程序。必须通过__gloabl__函数类型限定符定义。形式如下:

__global__ void kernel(param list){  }

核函数只能在主机端调用,调用时必须申明执行参数。调用形式如下:

Kernel<<<Dg,Db, Ns, S>>>(param list);

<<<>>>运算符内是核函数的执行参数,告诉编译器运行时如何启动核函数,用于说明内核函数中的线程数量,以及线程是如何组织的。

<<<>>>运算符对kernel函数完整的执行配置参数形式是<<<Dg, Db, Ns, S>>>

  • 参数Dg用于定义整个grid的维度和尺寸,即一个grid有多少个block。为dim3类型。Dim3 Dg(Dg.x, Dg.y, 1)表示grid中每行有Dg.x个block,每列有Dg.y个block,第三维恒为1(目前一个核函数只有一个grid)。整个grid中共有Dg.x*Dg.y个block,其中Dg.x和Dg.y最大值为65535。
  • 参数Db用于定义一个block的维度和尺寸,即一个block有多少个thread。为dim3类型。Dim3 Db(Db.x, Db.y, Db.z)表示整个block中每行有Db.x个thread,每列有Db.y个thread,高度为Db.z。Db.x和Db.y最大值为512,Db.z最大值为62。 一个block中共有Db.x*Db.y*Db.z个thread。计算能力为1.0,1.1的硬件该乘积的最大值为768,计算能力为1.2,1.3的硬件支持的最大值为1024。
  • 参数Ns是一个可选参数,用于设置每个block除了静态分配的shared Memory以外,最多能动态分配的shared memory大小,单位为byte。不需要动态分配时该值为0或省略不写。
  • 参数S是一个cudaStream_t类型的可选参数,初始值为零,表示该核函数处在哪个流之中。

最新文章

  1. 我理解的webservice是这样的
  2. JavaScript实现输入验证(简单的用户注册)
  3. Java 2D API - 1. 基本概念
  4. NancyFx开发-Razor视图using外部Dll解决方案
  5. Change Git Default Editor in Windows
  6. RBL开发笔记一
  7. 让 Popwindow 向上弹出
  8. 【Pro ASP.NET MVC 3 Framework】.学习笔记.10.SportsStore:上传图片
  9. cf466C Number of Ways
  10. English - refer to...和refer to...as
  11. PostgreSQL 9.3 Streaming Replication 状态监控
  12. window编程之win程序框架
  13. SQL server 数据库——数学函数、字符串函数、转换函数、时间日期函数
  14. Java虚拟机系列-Java类加载机制
  15. ReactNative开发笔记(持续更新...)
  16. sqlmap 使用笔记
  17. DataSource - 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
  18. eclipse 如何安装freemaker ftl 插件
  19. How to Add Trust Sites into IE before IE10 through Group Policy
  20. ubuntu18虚拟机克隆之后ip相同的解决方案

热门文章

  1. scapy框架
  2. 清除input框对浏览器保存的用户名和密码自动填充问题
  3. RABC(Role-Based Access Control) 基于角色的权限访问控制
  4. 对sass通过compass进行编译
  5. Django 03 模板路径、模板变量、常用的过滤器
  6. 项目 08 WebSocket
  7. spring事物的管理方式
  8. jsonp——使用公共接口获取数据
  9. HDU 5908 Abelian Period 可以直接用multiset
  10. Java集合——集合框架Map接口