CUDA 学习 1
创始人
2024-06-02 21:41:19
0

CUDA 学习 1

  • GPU简介
    • CPU与GPU适用方向
    • CPU与GPU线程的区别
  • CUDA杂记
    • API的级别分类
    • CUDA的应用组成
    • 编译器
    • 程序步骤
    • 限定符
    • 同步
    • kernel核函数限制

GPU简介

CPU与GPU适用方向

由于CPU与GPU的硬件结构差别,所以其适用方向亦有不同。
CPU中控制单元占比大,所以适用于低并行逻辑复杂的程序。
GPU中计算单元占比大,所以适用于高并行逻辑简单的大数据计算。

CPU与GPU线程的区别

  1. CPU线程是重量级实体,操作系统交替执行线程,线程上下文切换花销很大。
  2. GPU线程是轻量级的,GPU应用一般包含成千上万的线程,多数在排队状态,线程之间切换基本没有开销。
  3. CPU的核被设计用来尽可能减少一个或两个线程运行时间的延迟,而GPU核则是大量线程,最大幅度提高吞吐量。

CUDA杂记

API的级别分类

  1. 高级API:运行时API,使用简单,基于驱动API实现。
  2. 低级API:驱动API,适用相对困难。

CUDA的应用组成

CPU主机端代码 + GPU设备端代码

编译器

CUDA nvcc编译器会自动分离代码里面的不同部分,主机代码用C完成,则使用本地的C语言编译器编译,设备代码(kernel)用CUDA C完成,通过nvcc编译,在内核程序调用或GPU设备操作时,添加运行时库。

程序步骤

  1. 分配内存到GPU。
  2. 拷贝内存到设备。
  3. 调用CUDA内核函数执行计算。
  4. 把计算结果数据拷贝回主机端。
  5. 释放内存。

限定符

限定符执行调用备注
global设备端执行可以从主机调用也可以从计算能力3以上的设备调用必须有一个void的返回类型
device设备端执行设备端调用
host主机端执行主机调用可以省略

同步

CPU与GPU执行程序是异步的,核函数调用后会立刻到主机线程继续,而不管GPU端核函数是否执行完成,CUDA提供显示分方法,即在核函数后加入cudaDeviceSynchronize()函数,CPU会等待GPU执行完成,再进行CPU后续步骤。
对应的也有隐式方法,比如内存拷贝函数cudaMemcpy()。

kernel核函数限制

  1. 只能访问设备内存。
  2. 必须有void返回类型。
  3. 不支持可变数量的参数。
  4. 不支持静态变量。
  5. 显示异步行为。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...