【问题标题】:What does it mean for CUDA to have parallel kernels?CUDA 拥有并行内核意味着什么?
【发布时间】:2019-06-22 02:17:31
【问题描述】:

我正在阅读一篇关于 CUDA 的文章,上面写着“CUDA 程序是具有并行内核的串行程序”。我的问题是:

  1. 串行程序是什么意思?我知道串行与并行相反,但是对于在不同处理器、不同内核等上运行的 CUDA 代码而言,这意味着什么?我知道 CUDA 的意义在于它促进了并行编程,所以我很想知道它的哪一部分是串行的。

  2. 拥有多个内核意味着什么?我一直认为内核是操作系统的一部分,我认为 CUDA 只是在操作系统中运行的软件,对吧? CUDA如何拥有多个内核,如何使用它们来实现并行性?

【问题讨论】:

标签: parallel-processing cuda operating-system kernel


【解决方案1】:
  1. CUDA 内核是从单线程的角度编写的。它回答了“每个线程会做什么?”的问题。 CUDA 内核为每个线程将做什么提供了一个单一的定义。从单线程的角度来看,它似乎是一个串行程序。然而,它在启动时变为并行,当许多线程“并行”执行相同的代码时。

  2. 我认为您误解了。 CUDA 具有“并行内核”意味着 CUDA 中的每个内核都有机会表达(根据它的编写方式,以及 CUDA 概念的细节,例如内置变量)和清单(在启动时,跨多个执行线程) 并行性。这并不意味着 CUDA 本质上需要多个内核来表达并行性。单个 CUDA 内核启动本质上是并行的。

您不妨阅读the CUDA programming guide

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2010-09-14
    相关资源
    最近更新 更多