什麼是向量化

將迴圈中逐元素進行的相同計算,改為使用SIMD指令一次對多個元素進行的最佳化。條件是重複之間沒有資料相依。

日文名稱: ベクトル化

「向量化」出現在1領域的3道練習題中(編譯器等)。

這個名詞所屬的領域: 編譯器

練習向量化的題目

編譯器的自動向量化所使用的指令種類,下列何者正確?

  1. A引發中斷的指令
  2. B同時處理多筆資料的SIMD指令
  3. C一次清除快取全部內容的指令
查看答案與解析

正確答案:B. 同時處理多筆資料的SIMD指令

自動向量化是一種最佳化,會找出對陣列的每個元素進行相同計算的迴圈,並替換為一次處理多個元素的SIMD指令。例如若是128位元的SIMD暫存器,可以同時將4個32位元的數相加,順利的話迴圈的運算次數可減為四分之一。其條件包括重複之間沒有相依、資料排列連續等,若可能有指標重疊,也會放棄向量化。這與中斷或快取操作的指令無關。

解析中的「向量化」

出現「向量化」的題目(3題)

  1. 上方迴圈難以使用SIMD指令向量化,其主要原因為何?
  2. 編譯器的自動向量化所使用的指令種類,下列何者正確?
  3. 在嚴格的設定下,編譯器不會擅自將浮點數的加法 (a + b) + c 重新排列為 a + (b + c),其理由下列何者正確?

相關名詞

SIMD 中斷 中間表示法(IR) 共同子運算式消除 行內展開 抽象語法樹(AST) 指令排程 迴圈展開 基本區塊 常數摺疊

前往名詞解釋列表