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. 显示异步行为。

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...