コンテンツにスキップ

SIMD

出典: フリー百科事典『ウィキペディア(Wikipedia)』
SIMDの概念図
PU = 処理装置 (processing unit)

single instruction, multiple dataSIMD[ 1][ 2]1[5] (vector operation) SIMDpacked data

解説

[編集]



4X, Y, Z, W


3232132141281324SIMD11/4128使128264×2使432×4使816×8使168×16使124816



SIMD使ILLIAC IVCray-11120

1990CPU/GPU

SIMD使256SIMD2561128使2

SIMD32SIMD使ALU使SIMD使

[編集]

マイクロプロセッサ

[編集]

命令拡張

[編集]

演算装置

[編集]

演算装置自体がSIMD型のもの

GPU

[編集]

GPUSIMDGPGPU1SIMDSIMT

GPUXYZW/RGBA321284-way SIMD1132 (FMA) SIMT22-way SIMD844-way SIMDGPUSIMDSIMT[8]

NVIDIA GeForceNVIDIA QuadroNVIDIA Tesla

NVIDIAGPU32Warp

AMD RadeonAMD FirePro

AMDGPU64Wavefront

PowerVR

PowerVR Series54-wayPowerVR Series616-way[9]

物理演算プロセッサ

[編集]

3Dゲームに必要な物理演算を高速化するため、SIMDを利用。

  • PhysX(用のチップ)

汎用アクセラレータ

[編集]

PCI Express接続の汎用SIMDアクセラレータ。倍精度行列演算を高速に行う目的で、ワークステーションスーパーコンピュータなどに搭載される。

  • CSX600 - クリアスピードによるメニーコアSIMD演算ユニット
  • SX-Aurora TSUBASA Vector Engine - NECのスパコンSX-Aurora TSUBASA搭載の演算ユニットをバラ売りしたもの。8コア、最大2.45TFLOPS[10]

コンパイラサポート

[編集]

SIMD (intrinsics/intrinsic functions) C/C++使SIMDSIMD

SIMDSIMD使[11][12][13]Clang/LLVM

OpenMP 4.0SIMD[14]

JavaJava 16Vector API[15]

.NET.NET Framework 4.664 (RyuJIT) System.NumericsSIMD使SIMDJIT[16]

WebAssembly128SIMDChrome 91Firefox 89Safari 16.4[17]

ビット演算

[編集]

ビット演算 (bitwise operation) の命令は、複数のビットを同時に処理することのできる並列性を持つため、広義のSIMDとして並列計算に利用されることもある。

脚注

[編集]

注釈

[編集]


(一)^ ("sim-dee") [1]

(二)^ "single instruction stream, multiple data stream" [2][3][4]

出典

[編集]


(一)^ SIMD - MDN Web Docs Glossary: Definitions of Web-related terms | MDN

(二)^ P.HAYES, JOHN (1978,1979). Computer Architecture and Organization. McGRAW-HILL INTERNATIONAL BOOK COMPANY. p. 211. ISBN 0-07-027363-4 

(三)^ 6 -  - 5 (II)  - 4  | 

(四)^ David A. Patterson and John L. Hennessy (2007). Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers. p. 596. ISBN 978-0-12-370606-5 

(五)^ SIMDSingle Instruction/Multiple Data - IT e-Words

(六)^  (2021331). Arm10Armv9SVE. PC Watch. 20211230

(七)^ riscv-v-spec/v-spec.adoc at master · riscv/riscv-v-spec. 2024621

(八)^ WeeklyNVIDIASoCXavierDenverVolta - PC Watch

(九)^  (2014319). Weekly PowerVR Series6 Rogue. PC Watch. 20211229

(十)^ NEC SX-Aurora TSUBASA Vector Engine

(11)^ Auto-Vectorizer in Visual Studio 2012  Overview  Parallel Programming in Native Code

(12)^ ® C++  - Compiler_AutoVectorization_Guide.pdf

(13)^ Auto-Vectorization in LLVM  LLVM git documentation

(14)^ OpenMP 4.0 使 SIMD  | iSUS

(15)^ JEP 338: Vector API (Incubator). openjdk.org. 202461

(16)^ .NET  | Microsoft Docs

(17)^ Using SIMD with WebAssembly  Emscripten 3.1.61-git (dev) documentation. emscripten.org. 202461

関連項目

[編集]