异构编程和cuda程序概念

文章目录

  • 异构编程和cuda程序概念
    • 一、异构系统和异构编程模型
      • 1、什么是异构系统
      • 2、异构系统优点
      • 3、什么是异构编程模型
    • 二、cuda基本知识
    • 三、cuda工作流程
      • 1、基本流程
      • 2、并行线程组织结构
      • 3、CUDA程序

异构编程和cuda程序概念

一、异构系统和异构编程模型

1、什么是异构系统

由多种不同指令集结构(ISA)处理器组成的计算机系统,通常由主处理器CPU和加速器(例GPU、MIC、DSP)组成。

2、异构系统优点

异构系统具有低功耗、高性能和可扩展性;

3、什么是异构编程模型

异构编程模型是用编程语言的语义来描述异构计算。
机器模型-》体系结构模型-》计算模型-》编程模型
机器模型最低层次抽象,包含对硬件与操作系统的描述;
体系结构模型描述互联网络及其作用以及通信的完成方式,定义计算机是同步还是异步,是SIMD结构还是其他体系结构特征;
计算模型抽象描述计算机的费用和资源,用于设计和分析算法并预测算法性能;
编程模型抽象层次最高。

二、cuda基本知识

1、cuda编程模型是一个异构模型,需要CPU和GPU协同工作
2、在CUDA中,host和device是两个重要的概念,用host指代CPU及其内存,而用device指代GPU及其内存
3、CUDA程序中既包含host程序,又包含device程序,它们分别在CPU和GPU上运行
4、host与device之间可以进行通信,这样它们之间可以进行数据拷贝

三、cuda工作流程

1、基本流程

(1)申请CPU主存
分配host内存,并进行数据初始化
(2)申请GPU显存空间
分配device内存
(3)将CPU主存中的数据拷贝至GPU显存
从host将数据拷贝到device
(4)启动GPU kernel程序计算
调用CUDA的核函数在device上完成指定的运算
(5)GPU将计算结果传回至CPU显存
将device上的运算结果拷贝到host上(性能)
(6)释放device和host上分配的内存

2、并行线程组织结构

(1)Thread:并行的基本的单位
(2)Thread block:合作的线程组,可以彼此同步工作,以1维、2维或3维组织,最多可以包含512个线程
(3)Grid:一组thread block,以1维、2维或3维组织,共享全局内存
(4)Kernel:在GPU上执行的核心程序

3、CUDA程序

(1)cuda工作的一个最重要流程是调用核函数来执行并行计算
(2)核函数用_global_符号声明,在调用时需要用<<>>来指定核函数要执行的线程数量
(3)在cuda中,每一个线程都要执行核函数,并且每个线程会分配一个唯一的线程号thread ID,这个ID值可以通过核函数的内置变量threadIdx来获得。

你可能感兴趣的:(cuda,异构编程)