当前位置: 首页 > 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.xdnf.cn/news/313525.html

相关文章:

  • GPS定位方案
  • 微机控制技术复习【一】
  • 汇总区间(简单)
  • AI 数字短视频数字人源码开发实用技巧分享​
  • HCIP【STP、RSTP、MSTP协议(详解)】
  • Linux中为某个进程临时指定tmp目录
  • Go语言——string、数组、切片以及map
  • 今年我国已发生三级以上地震318次
  • 从创业踩雷到依法解债:湖北理元理律师事务所的危机拆解逻辑
  • 继电器负载知识
  • 小刚说C语言刷题—1044 -找出最经济型的包装箱型号
  • win11 怎样把D盘空间分给C盘一点
  • day18-API(常见API,对象克隆)
  • 将nginx设置成自启动,防止每次开机后都要自己手动启动
  • nginx服务--基础
  • C语言数组和函数的实践———扫雷游戏
  • 调用DeepSeek的API
  • 文献综述怎么写?高效阅读、智能整理,告别文献焦虑!
  • 感知器准则感知器神经元模型——等价
  • 电动双向金属硬密封蝶阀:四大领域流体控制的终极解决方案 -耀圣
  • Vue 项目中使用 EJS 模板动态注入环境变量
  • Vue3.5 企业级管理系统实战(十七):角色管理
  • String、StringBuilder、StringBuffer的区别
  • 0506--01-DA
  • TDengine 车联网案例
  • 2025.5.6总结
  • python setup.py install --user和pip install -e .的区别
  • HHsuite3 的 HHblits 和 HHsearch比较
  • android设备运行bcc程序报错
  • 5.6刷题并查集