我正在阅读一篇有关CUDA的文章,内容为“ CUDA程序是具有并行内核的串行程序”。我的问题是:
成为串行程序意味着什么?我知道串行与并行相反,但是就CUDA的代码在不同的处理器,不同的内核等上运行而言,这意味着什么呢?我知道CUDA的要点是它有助于并行编程,因此我想知道其中的哪一部分是串行的。
拥有多个内核是什么意思?我一直都将内核理解为操作系统的一部分,我认为CUDA只是在操作系统中运行的软件,对吗? CUDA如何具有多个内核,以及如何使用它们来实现并行性?
答案 0 :(得分:1)
从单个线程的角度编写CUDA内核。它回答了“每个线程将做什么”的问题。 CUDA内核为每个线程将执行的操作提供了一个定义。从单线程的角度来看,它似乎是一个串行程序。但是,在启动时,当许多线程“并行”执行同一代码时,它将变为并行。
我认为您在误解。 CUDA具有“并行内核”,这意味着CUDA中的每个内核都有机会表达(根据其编写方式以及CUDA概念的详细信息,例如内置变量)和清单(在启动时跨多个执行线程) )并行。这并不意味着CUDA本质上需要多个内核来表示并行性。单个CUDA内核启动本质上是并行的。
您可能需要阅读the CUDA programming guide