cuda编程与gpu并行计算(一):gpu与cuda概论

gpu和cpu的区别
GPU采用了数量众多的计算单元和超长的流水线。但只有非常简单的控制逻缉并省去了Cache。而CPU不仅被Cache 占国了大量空间,而且还有有复杂的控制逻辑和很多优化电路,相比之下计算能力是CPU很小的一部分

在这里插入图片描述
CPU的发展:处理器越来越小,处理速度越来越快,处理核变多
在这里插入图片描述
性能(低延时性Latency)与吞吐量(Throughput)

Cache local memory :CPU > GPU
Threads : GPU > CPU
Registers :GPU > CPU

CPU重性能 GPU重吞吐量

ALU,Cache: GPU的特点是有很多的ALU和很少的cache.缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。
Control: 控制单元可以把多个的访问合并成少的访问。
·GPU的虽然有dram诞延时,却有非常多的ALU和非常多的thead.为了平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads.通常来看GPU ALU会有非常重的pipeline就是因为这样。
CPU擅长逻缉控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码玻解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

CUDA,,全称是Compute Uified Device Architecture,英伟达在2007年推出这个统一计算架构。为了让gpu有可用的编程环境,从而能通过程序控制底层的硬件进行计算,CUDA提供host-device的编程模式以及非常多的接口函数和科学计算库,通过同时执行大量的线程而达到并行的目的。CUDA也有不同的版本,从1.0开始到现在的8.0,每个版本都会有一些新特性。CUDA是基于C语言的扩展,例如扩展了一些限定符device、shared等,从3.0开始
也支持c++编程,从7.0开始支持c++11。

在这里插入图片描述
CUDA应用程序可以通过直接调用底层的CUDA驱动来调用GPU硬件进行并行计算
也可以使用对底层驱动进行了一定封装的CUDA运行时库来简化编程过程(二者不可混合使用)

CUDA函数库
CUDA提供了几个较为成熟的高效函数库,程序员可以直接调用这些库函数进行计算,因而大大简化了程序员的工作量。其中最常用的包括:
CUFFT(利用CUDA进行傅里叶变换的函数库)
CUBLAS(利用CUDA进行加速版本的完整标准矩阵与向量的运算库). CUDPP(常用的并行操作函数库)
CUDNN(利用CUDA进行深度卷积神经网络,深度学习常用)

NVCC编程
由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码。一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以NVCC编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CUDA编程是一种用于GPU并行计算编程模型,它由NVIDIA推出并应用于其显卡产品系列。通过CUDA编程,开发者可以利用GPU并行计算能力来加速各种计算任务。下面是一些关于CUDA编程GPU并行计算的重要概念: 1. GPU:图形处理器(Graphics Processing Unit)是一种专门用于处理图形和并行计算的硬件设备。与传统的中央处理器(CPU)相比,GPU具有更多的核心和更高的内存带宽,适合并行计算任务。 2. CUDA:Compute Unified Device Architecture(CUDA)是一种并行计算平台和编程模型,用于利用GPU进行通用目的的并行计算CUDA提供了一套API和工具,使开发者能够直接在GPU上编写并运行并行计算代码。 3. 核函数(Kernel Function):在CUDA编程中,开发者可以定义一个称为核函数的特殊函数。核函数在GPU上并行执行,并且每个线程都会独立地执行该函数。通过合理设计核函数,开发者可以利用GPU并行计算能力来加速各种计算任务。 4. 线程、块和网格:在CUDA编程中,GPU上的并行计算是以线程为基本单位进行的。线程被组织成块(block),而块又可以组织成网格(grid)。开发者可以通过调整块和网格的大小来优化并行计算的性能。 5. 内存管理:CUDA提供了多种类型的内存,开发者可以根据需要选择合适的内存类型。其中,全局内存(Global Memory)是GPU上所有线程都可以访问的共享内存,而共享内存(Shared Memory)是块内线程共享的高速缓存。合理地使用不同类型的内存可以提高并行计算的效率。 通过CUDA编程,开发者可以将适合并行计算的任务分配给GPU来加速处理。这种方式在科学计算、深度学习、图像处理等领域得到广泛应用,能够显著提高计算性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值