zoukankan      html  css  js  c++  java
  • CUDA软硬件的基本理解

    1、软件层

      CUDA从软件层分为流、线程格、线程块、线程。在一次Kernel调用时,需要指定一个grid下划分的block的布局和数量,以及一个block下thread的布局和数量。

      cuda stream(流)对应一个任务,存储了一个执行序列,如内存数据交换、执行kernel函数、内存数据交换。如果是多任务(不同kernel函数),则可以使用cuda stream,每个流携带一个kernel函数。(仿佛能并行???)

    2、硬件层

      GPU由多个SM组成,每个SM下包含 多个SP(执行单元)、共享内存、指令单元等。每个SM以block为单位执行任务(每个SM分配一个block),故block个数最好为SM的倍数,所以block下的线程可以通过共享内存进行通信,block之间无法通过shared memory通信。

      GPU应该是划分为一个内存拷贝引擎和一个kernel执行引擎,所以使用cuda stream可以在一定程度上并行。

      注:关于不同的kernel函数能否同时并行执行,好像是不行,但是为啥每个SM都有指令单元,那SM之间为啥不能执行不同的kernel并行呢???

  • 相关阅读:
    iframe
    # ? & 号在url中的的作用
    面向对象和面向过程
    dom
    DOM对象与jquery对象有什么不同
    绑定js
    leetcode — search-for-a-range
    leetcode — search-for-a-range
    leetcode — search-in-rotated-sorted-array
    leetcode — longest-valid-parentheses
  • 原文地址:https://www.cnblogs.com/chen9510/p/13515574.html
Copyright © 2011-2022 走看看