1

我几乎不明白 multiProcessorCount 属性给出的值代表什么,因为我在掌握 CUDA 架构时遇到了困难。

如果以下某些陈述显得幼稚,我深表歉意。据我目前了解,这里是硬件“层”:

  • CUDA 处理器是构建块的网格。
  • 一个构建块由两个或多个流式多处理器组成。
  • 流式多处理器由许多流式处理器组成,也称为核心
  • 流处理器是“大量”线程化的,这意味着它实现了许多硬件管理的线程。一个流处理器,一个核心,实际上一次只能计算一个线程,但它有许多“硬件线程”,可以在等待轮到它们被 SP 计算的同时加载数据。

在软件方面:

  • 由线程组成,由流式多处理器执行
  • 如果启动的块多于卡上流式多处理器的数量,我猜块会在某种队列中等待执行。
  • 软件线程被分配给流处理器,流处理器将它们分配给它们的硬件线程。与前一种情况类似,如果一个流处理器可以使用其硬件线程处理更多线程,则软件线程会在队列中等待。

在这两种情况下,允许启动的最大线程数和块数与卡上实际存在的流式多处理器、流式处理器和每个流式处理器的硬件线程数无关。这些概念是软件!

我至少接近现实吗?

话虽如此,multiProcessorCount 属性给出了什么?在我的 610M 上,它说我只有一个多处理器……这是否意味着我只有一个流式多处理器?我会拥有一个仅由一个流式多处理器组成的构建块吗?这对我来说似乎是不可能的。这意味着我一次只能执行一个块!此外,当我的卡规格说我有 48 个 cuda 核心时,他们是在谈论流处理器吗?

4

1 回答 1

2

也许这个答案会有所帮助。现在有点过时了,因为它指的是旧架构,但原理是一样的。

GPU 完全有可能由单个 SM(流式多处理器)组成,特别是如果它是移动 GPU。由多个 CUDA 内核组成的单个 SM 可以容纳多个线程块(在最新的 Kepler 一代 GPU 上最多 16 个)。

在您的情况下,您的 610M GPU 有一个流式多处理器 (SM),由 48 个 CUDA 内核(又名流式处理器,SP)组成。

于 2013-05-20T09:29:03.737 回答