当前位置: 首页 > news >正文

核函数(Kernel function)

核函数

  • 核函数在GPU上进行并行执行

  • 注意:

    • 限定词__global__修饰 [双下划线]
    • 返回值必须是void
  • 形式:

    • _global_ void kernel_function( argument arg){

      ​ printf(“hello world from the GPU\n”);

      }

    • void __global__kernel_function( argument arg){

      ​ printf(“hello world from the GPU\n”);

      }

核函数的特点:

  1. 核函数只能访问GPU内存
    • CPU和GPU是异构架构
    • CPU有自己的内存, GPU有自己的显存
    • CPU和GPU之间进行内存访问只能通过PCIe总线进行
  2. 核函数不能使用变长参数
  3. 核函数不能使用静态变量
  4. 核函数不能使用函数指针
  5. 核函数具有异步性

CUDA程序编写流程:

int main(void){

​ 主机代码 //一般对GPU进行配置以及数据处理的内容

​ 核函数调用 //进行并行加速数据处理

​ 主机代码 //一般将GPU运行后的数据回传给CPU主机, 还会进行对CPU GPU内存的释放工作

​ return 0;

}

#include <stdio.h>// CUDA核函数(__global__修饰符表示在GPU上执行)
__global__ void hello_from_gpu(){printf(“hello world from the GPU\n”); // GPU端打印
}int main(void){// 调用核函数:1个块,每个块1个线程(总线程=1)// 格式如下:// 核函数名称<<<网格配置(grid), 块配置(block), 其他参数>>>(); // <<< ... >>>‌:CUDA特有的语法,用来指定核函数在GPU上的执行配置。// 1, 1:表示网格(grid)中的块(block)数量和每个块中的线程(thread)数量// 总线程数 = 网格中的块数 × 每个块中的线程数 = 1 × 1 = 1// CUDA的核函数并行执行,通过网格和块的层级结构,可以灵活地组织线程hello_from_gpu<<<1, 1>>>();// 等待GPU操作完成(否则主机代码可能提前退出)// 强制主机(CPU)等待GPU完成所有操作,确保打印输出可见// 因为GPU操作是异步的,若不等待,主机代码可能提前退出,导致看不到打印结果。cudaDeviceSynchronize();return 0;
}
http://www.dtcms.com/a/175215.html

相关文章:

  • langchain4j整合springboot
  • 【AI】基于生活案例的LLM强化学习(入门帖)
  • 第四章-初始化Direct3D
  • Blink和V8的关系
  • 雅思阅读--重点短语/句式39个
  • Day 12 训练
  • PostgreSQL存储过程“多态“实现:同一方法名支持不同参数
  • C语言进阶—函数(static,递归,回调,指针,内联,变参,结构体尺寸)
  • DID在元宇宙的应用爆发:数字身份资产化与跨平台迁移——解析Decentraland等项目的虚拟身份全链路实现
  • 25G 80km双纤BIDI光模块:远距传输的创新标杆
  • 蓝桥杯-通电(最小生成树java)
  • 盛最多水的容器
  • UE5 MetaHuman眼睛变黑
  • 软件设计师-软考知识复习(3)
  • 【强化学习】什么是强化学习?2025
  • 解决 Exception in thread “main“ java.lang.NoClassDefFoundError
  • 【java】程序设计基础 八股文版
  • 深入理解 Web 架构:从基础到实践
  • 0506--01-DA
  • tinyrenderer笔记(Phong光照模型)
  • QML ProgressBar控件详解
  • C++高性能内存池
  • 逻辑越权--登录和支付数据篡改
  • DeepSeek智能时空数据分析(七):4326和3857两种坐标系有什么区别?各自用途是什么?
  • 【Python面向对象编程】类与对象的深度探索指南
  • USB学习【2】通讯的基础-反向不归零编码
  • Linux 更改内存交换 swap 为 zram 压缩,减小磁盘写入
  • OrcaFex11.5
  • 多语言笔记系列:Polyglot Notebooks 中使用扩展库
  • Unity 游戏数量单位换算(K/M/B/T)