GPU编程基础-CUDA实现图像处理

本文介绍了GPU编程的基础,包括Host和Device程序、Kernel函数、SIMT与SIMD的区别。重点讲解了GPU计算的Occupancy指标,它是衡量CUDA程序效率的重要参数,并阐述了GPU计算的基本流程。此外,还提供了一个基于CUDA的图像处理实例,以及针对Numba-NRT报错的解决方案。
摘要由CSDN通过智能技术生成

1. 相关基础概念

1.1 Host和Device程序

  • 在CPU上运行的称为Host程序;
  • 在GPU上运行的称为Device程序。

1.2 Kernel程序

GPU上运行的函数又被叫做Kernel函数。
Host程序在调用Device程序时,可以通过参数确定执行该Kernel的CUDA threads的数量。每个Thread在执行Kernel函数时,会被分配一个thread ID,Kernel函数可以通过内置变量threadIdx访问。一个Kernel函数对应一个Grid。每个Grid中的任务是一定的。当要执行这些任务的时候,每一个Grid又把任务分成一部分一部分的Block(线程块),Block中间有若干Thread(线程),再分成线程来完成。

1.3 SIMT和SIMD

  • CPU的SIMD单指令多数据,Single Instruction Multiple Data
  • Single Instruction Multiple Threads(SIMT)即GPU是单指令多线程。

CPU运算和GPU运算的差异性:**GPU简单说就是用多线程掩盖延迟。**这一设计区别于CPU的特点(CPU采用大量高延迟寄存器取代了少量低延迟寄存器),寄存器的数量保证了可以有大量线程同时存活,且可以在各组线程间快速切换。尽管每个线程是慢的,但庞大的线程数成就了GPU的数据吞吐能力。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robo-网络矿产提炼工

你的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值