CUDA C 编程入门学习记录

ops/2025/1/19 11:59:40/

这是本人21年读书时学习CUDA基础知识保留的一些笔记,学习时的内容出处和图片来源不记得了,仅作为个人记录!

CUDA编程

host:主机端CPU
device:设备端GPU
kernels:核函数

  • global:定义一个kernel函数
    • 入口函数,CPU调用,GPU执行,返回void
  • 线程层次
    grid-> block -> threads : 找到一个线程:需要每个线程的编号(threadIdx)和对应的block
    在这里插入图片描述
  • <<<1个block,block的索引是2维的>>>
  • int i 获取索引的下标
  • 块索引 blockIdx
  • 块维度 blockDim
  • 上面的代码可以只用了一个block,可使用多个block
    在这里插入图片描述
  1. 线程的全局位置更改(int i)
  2. 定义每个线程块空间大小(16,16)
  3. 需要多少个block(N/16,N/16)
  • 例如N=32
  • 每块16×16个线程(threadIdx([0,15],[0,15]))
  • Grid有2×2个线程块Block(blockIdx([0,1],[0,1]) blockDim = 16)
  • 那么int i = blockIdx.x * blockDim.x + threadIdx.x
  • 线程同步:
  • Host与device数据传输
    • global memory 全局存储器
    • Constant memory 常量存储器
    • cudaMalloc() global memory分配
    • cudaFree()释放空间
  • 拷贝cudaMmcpy(目的地址,原地址,size, cudaMemcpyHostToDevice)
例如矩阵相乘,每个元素互不影响
  • cpu实现:
    在这里插入图片描述

  • gpu实现:

  1. 对输入和输出数据内存进行管理,分配内存
  2. 并行处理
  3. 拷贝回cpu,释放内存
  4. 伪代码
    在这里插入图片描述
  5. cuda核函数实现:
    在这里插入图片描述
  6. 调用
    在这里插入图片描述
线程同步

每一个块block可以使用__syncthreads()等待上面程序所有线程都执行完成调用下面方法。

参考

图片来源
很老的一个视频但是入门确实是够了,推荐~


http://www.ppmy.cn/ops/151372.html

相关文章

弱口令漏洞+文件上传漏洞

一、弱口令漏洞 &#xff08;一&#xff09;基本原理 1.弱口令&#xff1a;容易被别人猜到或破解的命令 2.常见弱口令&#xff1a; 3.漏洞利用&#xff1a;bp爆破 &#xff08;二&#xff09;工具使用 bp intruder的四个模块&#xff1a; 1.sniper&#xff1a;只攻击一个…

商城系统中的常见 BUG

以下是商城系统中一些常见的 BUG&#xff1a; 功能与操作类 支付问题&#xff1a;如无法成功完成支付&#xff0c;支付过程中出现延迟、错误或订单重复支付等&#xff0c;还可能因网络问题导致支付失败或数据不一致。 登录 / 注册问题&#xff1a;用户在注册或登录时可能遇到…

Linux《Linux简介与环境的搭建》

在学习了C或者是C语言的基础知识之后就可以开始Linux的学习了&#xff0c;现在Linux无论是在服务器领域还是在桌面领域都被广泛的使用&#xff0c;所以Linxu也是我们学习编程的重要环节&#xff0c;在此接下来我们将会花大量的时间在Linxu的学习上。在学习Linux初期你可以会像初…

物联网通信协议对比-带表格

背景 现在物联网话题是热门&#xff0c;各行各业都在应用。常见的物联网协议&#xff0c;如&#xff1a;MQTT、CoAP、XMPP、SOAP、REST等 物联网协议整理 MQTT&#xff08;Message Queue Telemetry Transport&#xff09;消息队列遥测转输协议&#xff0c;工作原理类似于一个…

数字化的三大战场与开源AI智能名片2+1链动模式S2B2C商城小程序源码的应用探索

摘要&#xff1a;本文深入探讨了数字化转型背景下&#xff0c;电商平台、社交平台和内容平台作为数字化的三大战场&#xff0c;在推动各行业变革中的关键作用。同时&#xff0c;本文引入了开源AI智能名片21链动模式S2B2C商城小程序源码的概念&#xff0c;分析了其在快消品行业数…

RustDesk ID更新脚本

RustDesk ID更新脚本 此PowerShell脚本自动更新RustDesk ID和密码&#xff0c;并将信息安全地存储在Bitwarden中。 特点 使用以下选项更新RustDesk ID&#xff1a; 使用系统主机名生成一个随机的9位数输入自定义值 为RustDesk生成新的随机密码将RustDesk ID和密码安全地存储…

OLED--软件I2C驱动__标准库和HAL库

一、标准库---版本一 OLED.c--标准库 #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x…

Python大数据可视化:基于python的电影天堂数据可视化_django+hive

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 电影数据 看板展示 我的信息 摘要 电影天堂数据可视化是…