cuda - GPU/CUDA 核心是 SIMD 核心吗?

标签 cuda gpu gpgpu simd

让我们拿 nVidia Fermi Compute Architecture .它说:

The first Fermi based GPU, implemented with 3.0 billion transistors, features up to 512 CUDA cores. A CUDA core executes a floating point or integer instruction per clock for a thread. The 512 CUDA cores are organized in 16 SMs of 32 cores each.

[...]

Each CUDA processor has a fully pipelined integer arithmetic logic unit (ALU) and floating point unit (FPU).

[...]

In Fermi, the newly designed integer ALU supports full 32-bit precision for all instructions, consistent with standard programming language requirements. The integer ALU is also optimized to efficiently support 64-bit and extended precision operations. V


据我所知,我不清楚的是,GPU 在所谓的扭曲中执行线程,每个扭曲由大约 32 个线程组成。每个扭曲仅分配给一个核心(这是真的吗?)。那么这是否意味着,单个 SM 的 32 个内核中的每一个都是 SIMD 处理器,其中 单条指令 Handlebars 32 个数据部分 ?如果是这样,那么为什么我们说一个经线中有 32 个线程,而不是单个 SIMD 线程?为什么内核有时被称为标量处理器,而不是向量处理器?

最佳答案

Each warp is assigned to only one core (is that true?).



不,这不是真的。扭曲是 32 个执行线程的逻辑组合。要从单个 warp 执行单个指令,warp 调度程序通常必须调度 32 个执行单元(或“核心”,尽管“核心”的定义有些松散)。

内核实际上是标量处理器,而不是矢量处理器。 32 个内核(或执行单元)由 warp 调度程序编码以执行单个指令,跨 32 个线程,这就是“SIMT”绰号的来源。

关于cuda - GPU/CUDA 核心是 SIMD 核心吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283970/

相关文章:

synchronization - CUDA 线程围栏

linux - 缺少用于 CUDA 10.0 的静态 nVIDIA 工具包扩展库

cuda - 正确管理大于 GPU 可用内存的结果数组?

ios - Metal 计算着色器 : setting alpha to zero does not yield complete transparency

arrays - 源自中心的 3d 数组遍历

opengl - 是否可以将 OpenCV GpuMat 绑定(bind)为 OpenGL 纹理?

windows - 使用 nvprof 和 Visual Profiler 进行 GPU 功耗分析

不使用 device_vectors 的 Cuda 推力?

opengl - GPU 如何同时支持 OpenGL 和 DirectX API 执行?

c++ - OpenGL-CL多线程互操作