美文网首页
GPU并行计算与CUDA编程

GPU并行计算与CUDA编程

作者: winter_sweetie | 来源:发表于2019-11-16 20:42 被阅读0次

2019年11月16日更

自从学deep learning以来,常常要跟GPU打交道,不过浅尝辄止,精力都放在代码上。曾经还跟着教程安装CUDA和CUDNN,但我对这两者具体的用途一无所知。所以我觉得有必要系统学一学啦,在b站跟了一套课程,记录一下学习笔记。

1. CPU和GPU的区别

CPU和GPU的结构

从两者结构入手:

  • CPU(central processing unit): latency oriented design

    • powerful ALU, 强大的运算单元,在很少的时钟周期中完成算术运算。
    • large Cache,可以一次保存很多的数据到缓存中,以后使用时直接在缓存里取即可,无需找memory,因此有较低的时延。
    • sophisticated Control,复杂度逻辑控制单元,通过分支预测/数据转发降低时延。
  • GPU(graphics processing unit): throughput oriented design

    • energy efficient ALU
    • small Cache, 提高吞吐量
    • simple control, no branch prediction nor data forwarding
    • a massive number of threads

引用知乎@虫子君的一段比喻:

GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生。

GPU的策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。

但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。

或者我们用愚公移山的例子,GPU就像是愚公找了邻里子孙,许多人浩浩荡荡地挖山,人多就是力量;而CPU就像是直接借助先进的挖掘机,一次就铲起大量的土,但挖掘机可是一笔不小的开销呢。

所以说到这里,我们便可以发现,CPU和GPU的使命是不同的。之所以现在深度学习和图形学等领域需要用到GPU,是因为对图像的处理,其实就是对卷积核/像素的处理,本身就是可以并行的任务,用GPU可以极大地提高运算速度。

相关文章

  • gpu的安装

    和GPU有关的组件有NVIDIA,cuda,cudnn,gpu 其中gpu是硬件,cuda是gpu的并行计算框架。...

  • CUDA 入门之 Ubuntu 系统下环境搭建

    CUDA 简介 CUDA 是由英伟达公司开发的并行计算平台和编程模型的统称。通过这个平台我们可以利用 GPU 并行...

  • GPU并行计算与CUDA编程

    2019年11月16日更 自从学deep learning以来,常常要跟GPU打交道,不过浅尝辄止,精力都放在代码...

  • 深入理解CUDA点积运算

    最近一直在学习CUDA并行计算的相关知识。在学习《GPU高性能编程CUDA实战》(机械工业出版社)这本书时,遇到了...

  • 教你一步步写一个cuda path tracer:cuda简介和

    cuda定义 cuda是nvidia推出的一种通用并行计算架构,该架构能够充分利用gpu强大的并行计算能力,解决一...

  • 简述GPU,CUDA,cuDNN,CUDA Toolkit之间的

    GPU:显卡,有很多核,擅长并行计算。CUDA (Compute Unified Device Architec...

  • CUDA与OpenCL之间的差异

    CUDA和OpenCL都是实现计算机异构并行计算架构,然而CUDA是针对NVIDIA公司的GPU,而OpenCL是...

  • cuda入门

    一、基本概念介绍 1、什么是cuda? CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解...

  • GPU编程的高效策略

    在上一篇文章《那么CUDA是如何进行并行编程的?》中,为了让GPU的并行计算更加高效,本篇文章从高效的内存策略和屏...

  • CUDA(二)-GPU设备查询以及设备信息

    前言 为了快速了解GPU以及入门CUDA编程,很有必要对GPU硬件有一个基本的认识, 下面通过cuda_runti...

网友评论

      本文标题:GPU并行计算与CUDA编程

      本文链接:https://www.haomeiwen.com/subject/mrquictx.html