題 為什麼人們使用GPU進行高性能計算而不是更專業的芯片呢?


根據我的理解,人們開始使用GPU進行通用計算,因為它們是計算能力的額外來源。雖然它們不像每個操作的CPU一樣快,但它們有許多內核,因此它們可以更好地適應並行處理而不是CPU。如果您已經擁有一台恰好具有用於圖形處理的GPU的計算機,但是您不需要圖形,並且想要更多的計算能力,那麼這是有道理的。但我也明白人們會購買GPU 特別 增加計算能力,無意使用它們來處理圖形。對我來說,這似乎類似於以下類比:

我需要割草,但我的割草機很懦弱。因此,我將籠子從箱子風扇中取出,放在臥室裡,然後磨刀片。我把膠帶粘在我的割草機上,我發現它的效果相當好。多年以後,我是一家大型草坪護理企業的採購官。我有足夠的預算花在割草工具上。我沒有購買割草機,而是買了一堆盒子粉絲。再次,他們工作正常,但我必須支付額外的部分(如籠子),我不會最終使用。 (出於這個類比的目的,我們必須假設割草機和箱式風扇的成本大致相同)

那麼為什麼沒有具有GPU處理能力的芯片或設備的市場,而不是圖形開銷呢?我可以想到一些可能的解釋。如果有的話,哪一個是正確的?

  • 當GPU已經是一個很好的選擇(草坪割草機不存在,為什麼不使用這個非常好的盒子風扇?)時,這種替代方案太昂貴了。
  • “G”代表圖形的事實僅表示預期用途,並不意味著任何努力都使得芯片更適合圖形處理而不是任何其他工作(割草機和箱式風扇是相同的事情你得到了它;沒有必要修改讓一個人像其他人一樣運作)。
  • 現代GPU與其古老的前輩具有相同的名稱,但是現在高端的GPU並不是專門用於處理圖形的(現代箱式風扇的設計主要用作割草機,即使較舊的也不是)。
  • 很容易將任何問題轉化為圖形處理的語言(可以通過快速吹過空氣來切割草)。

編輯:

我的問題已得到解答,但根據一些評論和答案,我覺得我應該澄清我的問題。我不是在問為什麼每個人都不買自己的計算。顯然,大多數時候這樣做太貴了。

我只是觀察到似乎需要能夠快速執行並行計算的設備。我想知道為什麼最佳的這種設備似乎是圖形處理單元,而不是為此目的設計的設備。


104
2018-06-05 03:06


起源


因為他們 是 專門針對這類事物;它基本上是相同類型的數學。 nVidia已經為人們構建並銷售了僅用於GPU的電路板來進行這種大規模並行數字運算。 - Heptite
請記住,我們確實在芯片上添加了專門的“單位”。 AES是在CPU上以硬件(我認為)完成的。 AVX也在硬件中實現。但是,你在哪裡停下來?芯片製造商不知道你需要什麼,而且大多數人沒有能力(技術或財務)來擁有自己專為特定任務設計的芯片。圖形卡 - 正如其他所說 - 是一種專用架構,非常適合某些任務。它們對一切都不利 - 但對於某些特定的任務,因此在那裡使用。 - DetlevCM
更準確的類比將取代100米寬的農業聯合收割機的箱式風扇。 - MooseBoys
我的PC已經準備好使用GPU,設計和生產專用芯片可以讓我回到幾百萬。 - PlasmaHH
嘗試另一種類比。假設我們有箱式風扇,我們有直升機旋翼。在我們假設的世界中,箱式風扇的應用需要越來越大的風扇以更高的速度運行,直到我們最終得到20米碳纖維葉片箱式風扇,並且批量生產使它們便宜。然後有人意識到一個20米的箱式風扇基本上只是一個直升機旋翼,周圍有一個籠子。它確實是那麼相似。 - Graham


答案:


這真的是你所有解釋的組合。更便宜,更容易,已經存在,設計已經從純圖形轉移。


現代GPU可以被視為主要的 流處理器 使用一些額外的圖形硬件(以及一些固定功能加速器,例如用於編碼和解碼視頻)。 GPGPU 這些天的編程使用專門為此目的設計的API(OpenCL,Nvidia CUDA,AMD APP)。

在過去的十年或二十年中,GPU已從固定功能管道(僅限圖形)演變為可編程管道(著色器 讓你編寫自定義指令)到更現代的API,如OpenCL,提供對著色器核心的直接訪問,而無需附帶的圖形管道。

剩下的圖形位很小。它們只是卡片成本的一小部分,因此將它們排除在外並不便宜得多,而且會產生額外設計的成本。所以通常沒有這樣做 - 大多數GPU沒有面向計算的等價物 - 除了最高層,這些都非常昂貴。

普通的“遊戲”GPU非常常用,因為規模經濟和相對簡單使它們便宜且易於上手。從圖形編程到使用GPGPU加速其他程序,這是一條相當容易的路徑。與其他選項不同,隨著更新,更快的產品可用,升級硬件也很容易。


基本上,選擇歸結為:

  • 通用CPU,非常適合分支和順序代碼
  • 正常的“遊戲”GPU
  • 面向計算的GPU,例如 Nvidia特斯拉 和 Radeon Instinct 這些通常根本不支持圖形輸出,因此GPU有點用詞不當。但是,它們確實使用與普通GPU類似的GPU內核,OpenCL / CUDA / APP代碼或多或少可直接移植。
  • FPGA使用非常不同的編程模型,而且成本非常高。這是進入的重要障礙的地方。它們也不一定比GPU快,具體取決於工作負載。
  • ASIC,定制設計電路(硬件)。這是非常昂貴的,只有極端規模才能變得值得(我們至少會說幾千個單位),並且你確定程序永遠不需要改變。它們在現實世界中很少可行。每次技術進步時,您還必須重新設計和測試整個事物 - 您不能像使用CPU和GPU那樣交換新的處理器。

109
2018-06-05 04:10



當計算實際上為自己付費時,ASIC也是有意義的(加密挖掘) - ratchet freak
實際上,FPGA通常比GPU更差。問題是FPGA非常靈活;他們可以實施許多不同的操作。然而,計算通常是數學的一種形式,實際上大部分只是兩個操作:加法和乘法(減法和除法是上述的變體)。 GPU非常非常擅長這兩項操作,遠遠超過FPGA。 - MSalters
您需要澄清有關FPGA的更多信息。有一個“加強”的想法有點誤導。他們更側重一步。 - Yakk
作為最後一個例子,谷歌有自己的“Tensor處理單元”用於機器學習。他們定制的程度尚不清楚,但被描述為ASIC。 - mbrig
@MSalters FPGA在GPU上的主要賣點之一是性能/瓦特,隨著數據中心開始進入功率牆(FPGA通常更節能),這一點變得越來越重要。就數學而言,FPGA在定點和整數運算中與GPU相當,並且僅在浮點數學中滯後。 - wilcroft


我最喜歡的比喻:

  • 中央處理器:博學者天才。一次可以做一兩件事,但這些事情可能非常複雜。
  • GPU:大量低技術工人。他們每個人都不能做很大的問題,但在大眾中你可以做很多事情。對於你的問題,是的,有一些圖形開銷,但我認為它是邊緣的。
  • ASIC / FPGA: 一家公司。你可以僱用大量的低技術工人或幾個天才,或者低技術工人和天才的組合。

您使用的內容取決於成本敏感性,任務可並行化的程度以及其他因素。由於市場的發展方式,GPU是大多數高度並行應用的最佳選擇,當功耗和單位成本是主要考慮因素時,CPU是最佳選擇。

直接提出您的問題:為什麼GPU通過ASIC / FPGA?一般成本。即使今天的GPU價格膨脹,使用GPU仍然(通常)比設計ASIC以滿足您的需求更便宜。正如@ user912264指出的那樣,有些特定任務對ASIC / FPGA很有用。如果您有一項獨特的任務,並且您將從規模中受益,那麼設計ASIC / FPGA是值得的。實際上,您可以專門為此目的設計/購買/許可FPGA設計。例如,這是為了為高清晰度電視中的像素供電。


32
2018-06-05 16:28



評論不是為了回答,這對我來說似乎是一個合理的答案。 - Raimund Krämer
@BobtheMogicMoose但是使用為基因組分析設計的定制FPGA比在GPU中使用等效代碼可能要快幾個數量級。當你支付科學家坐在那裡等待結果時,更快的FPGA會很快收回成本。 - user912264
FPGA也讓普通開發人員更容易訪問 - 例如微軟有一個 使用FPGA的雲AI解決方案 (項目BrainWave)。 AWS也有一些產品。任何人都可以租用一些自定義FPGA來完成專門的任務而不必自己構建,即使在幾年前也不適用於許多用例。 - brichins
是的,我認為甚至還有FPGA愛好套件可與arduino raspberry-pi相媲美。我仍然認為編程FPGA比更開發的架構成本更高。 - BobtheMagicMoose


你的比喻很糟糕。在類比中,當你為大型草坪護理業務購買設備時,你 假設 有很好的割草機可供選擇。計算領域並非如此 - GPU是現成的最佳工具。

專用芯片的研發成本和可能的性能提升可能太高而無法合理製造。

也就是說,我知道Nvidia推出了一些專門用於通用計算的GPU - 它們沒有視頻輸出 - 有點像賣盒子風扇已經被移除的籠子。


10
2018-06-05 16:06





當然,您可以使用專用芯片,既可以提高能效,也可以提高計算速度。讓我告訴你比特幣採礦的歷史:

  • 比特幣是新的,極客用他們的CPU。
  • 比特幣是一個新的,聰明的極客與他們的GPU。
  • 比特幣現在(有點)很有名,人們購買FPGA。
  • 比特幣現在很有名(2013年),甚至新手購買ASIC(“專用集成電路”)也能有效開採。
  • 阻止獎勵下降(定期),即使舊的ASIC也不再有利可圖。

所以不,沒有理由使用GPU而不是專門的“巨型計算器”。經濟激勵越大,硬件越專業化。然而,如果你不是一次生產成千上萬,它們很難設計並且不可製造。如果設計芯片不可行,你可以買一個 那些 離最近的沃爾瑪。

TL; DR 當然你可以使用更專業的芯片。


9
2018-06-05 12:52



“當然你可以使用更專業的芯片” - 但是有專門的比特幣芯片(SHA-256),然後是Litecoin(scrypt),這就是它。其他問題的高性能計算硬件不存在。 (也就是說,性能高於當前的高端GPU) - Agent_L


你在類比中所描述的正是發生的事情。正如你抓住風扇並削尖刀片以試圖將其用作割草機一樣,一組研究人員意識到“嘿,我們這裡有一些非常好的多核處理單元,讓我們嘗試將它用於通用計算! “。

結果很好,球開始滾動。 GPU來自僅圖形設備,支持通用計算,以幫助處理最苛刻的情況。

因為無論如何,我們對計算機的計算要求最高的操作是圖形。它足以讓我們看看今天遊戲的驚人進步與幾年前的遊戲相比。這意味著GPU的開發投入了大量的精力和金錢,並且它們也可以用於加速某種通用計算(即非常平行)的事實,這只是增加了它們的受歡迎程度。

總而言之,您提供的第一個解釋是最準確的:

  • 當GPU已經是一個很好的選擇時,這種替代方案的開發成本太高。

GPU已經存在,它們隨時可供所有人使用並且可以使用。


8
2018-06-05 06:53



我必須不同意“計算要求最高的操作”是圖形,當然取決於“我們”究竟是誰。對於普通用戶來說,是的,但在科學與工程界,有很多東西比圖形要求更高。畢竟,可以使用單個中檔PC和GPU組合完成可接受的圖形(如游戲)。重大問題通常會將數百或數千個此類單元組合在一起以獲得petaflop範圍內的性能 - 然後問題仍可能需要數天或數週的計算時間。 - jamesqf
我期望從計算機中進行的計算要求最高的操作是 技術上圖形,但運動結構計算並不是大多數人(或GPU設計師)在聽到“圖形”一詞時所想到的。 - Mark


具體而言,GPU在“任務並行”意義上不是“核心”。在大多數情況下,它採用“數據並行”的形式。 SIMD是“單指令多數據”。這意味著你不會這樣做:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

這意味著您有1024個指令指針,它們執行以不同速率進行的單獨任務。 SIMD或“矢量計算”將同時在整個陣列上執行指令,更像是:

c = a * b

“循環”在“*”和“=”指令中,而不是在指令之外。以上內容將同時對所有1024個元素執行此操作,在所有這些元素的SAME指令指針上執行此操作。這就像a,b和c有三個巨大的寄存器。 SIMD代碼受到極大限制,只適用於不過分“分支”的問題。

在實際情況中,這些SIMD值不會大到1024個項目。想像一個變量,它是一個綁定在一起的int32團伙。您可以將乘法視為真實的機器指令。

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

真正的GPU比SIMD更複雜,但這是它們的本質。這就是為什麼你不能將隨機CPU算法扔到GPU上並期望加速。算法分支的指令越多,對GPU的適用性就越低。


5
2018-06-05 21:51





這裡的其他答案非常好。我也會投入2美分。

CPU變得如此普遍的一個原因是它們是靈活的。您可以重新編程它們以執行各種任務。如今,對於生產產品的公司而言,它更便宜,更快速地將小型CPU或微控制器固定在某些東西上並編程其功能,而不是開發定制電路來完成相同的任務。

通過使用與其他設備相同的設備,您可以利用已知的解決方案來解決使用相同設備(或類似設備)的問題。隨著平台的成熟,您的解決方案不斷發展並變得非常成熟和優化。在這些設備上編碼的人員也獲得了專業知識並且非常擅長他們的工藝。

如果您要從頭開始創建一種新的設備類型,這是GPU的替代品,即使是最早的採用者也需要數年時間才能真正了解如何使用它。如果將ASIC連接到CPU,如何優化將計算卸載到該設備上?

多年來,計算機體系結構社區一直充斥著這個想法(顯然它以前很流行,但最近見過復興)。這些“加速器”(它們的術語)具有不同程度的可重編程性。問題是,您如何定義加速器可以解決的問題範圍?我甚至和一些正在使用帶運算放大器的模擬電路來創建加速器的人交談來計算微分方程。好主意,但范圍極窄。

在你有一個工作加速器後,經濟力量將決定你的命運。市場慣性是一種令人難以置信的力量。即使某些東西是個好主意,重構您的工作解決方案以使用這種新設備在經濟上是否可行?也許,也許不是。

GPU對於某些類型的問題實際上很可怕,因此許多人/公司正致力於其他類型的設備。但GPU已經如此根深蒂固,他們的設備是否會變得經濟可行?我想我們會看到。

編輯:擴大我的答案,現在我已經下車了。

一項值得注意的案例研究是英特爾Larrabee項目。它起初是一個可以用軟件做圖形的並行處理設備;它沒有專門的圖形硬件。我和一個參與該項目工作的人進行了交談,他們說失敗並被取消的一個主要原因(除了可怕的內部政治)是他們無法讓編譯器為它製作好的代碼。當然它生成了工作代碼,但是如果產品的整個點都是最高性能,那麼最好使用能夠生成非常優化代碼的編譯器。這回顧了我之前的評論,關於硬件和軟件缺乏深入的專業知識,這對你的新設備來說是個大問題。

Larrabee設計的一些元素使其成為Xeon Phi / Intel MIC。該產品實際上已上市。它完全專注於並行化科學和其他HPC類型的計算。現在看來它是商業上的失敗。我在英特爾採訪過的另一個人暗示他們的價格/性能與GPU不具競爭力。

人們試圖將FPGA的邏輯綜合集成到編譯器中,以便您可以自動為FPGA加速器生成代碼。它們效果不好。

雲計算的一個地方似乎是加速器或GPU的其他替代品的真正肥沃土壤。谷歌,亞馬遜和微軟等大公司所存在的規模經濟使得投資替代計算方案變得有價值。有人已經提到了Google的張量處理單元。微軟在其Bing和Azure基礎架構中都有FPGA和其他東西。與亞馬遜相同的故事。如果規模可以抵消你在時間,金錢和工程師眼淚方面的投入,那絕對有意義。

總之,專業化與許多其他事物(經濟學,平台的成熟度,工程專業知識等)不一致。專業化可以顯著提高您的性能,但它會縮小您的設備適用範圍。我的答案集中在很多負面因素上,但專業化也有很多好處。絕對應該追求和調查,正如我所提到的,許多團體正在積極地追求它。

對不起,再次編輯:我認為你最初的前提是錯誤的。我認為這不是尋找額外計算能力來源的情況,更多的是人們認識到機會的情況。圖形編程是非常線性的代數,GPU的設計可以高效地執行矩陣乘法,矢量運算等常用操作。這些操作在科學計算中也很常見。

人們開始意識到英特爾/ HP EPIC項目所作出的承諾被誇大了(早在90年代初期的2000年代),人們對GPU的興趣就開始了。編譯器並行化沒有通用的解決方案。因此,與其說“我們在哪裡可以找到更多的處理能力,哦,我們可以嘗試GPU”,我認為更多的是“我們有一些擅長並行計算的東西,我們能否讓它更加普遍可編程”。很多參與者都在科學計算社區,他們已經有了可以在Cray或Tera機器上運行的並行Fortran代碼(Tera MTA有128個硬件線程)。也許從兩個方向都有運動,但我只聽到過從這個方向提到GPGPU的起源。


5
2018-06-06 00:51



“加速器”是指定制硬件還是低功耗計算節點的超級集群?您能否通過提供一些示例加速器硬件來詳細說明。 - manav m-n
對不起,我以為我是從上下文中弄清楚的。加速器只是協處理器或卸載卡的總稱。浮點最初是在協處理器而不是主CPU中,它本來被認為是一個加速器。 GPU,DSP,Xeon Phi,FPGA,當它們在PCIe卡上或類似的東西時,我提到的模擬微分方程,有些設備有助於虛擬化,目前有神經網絡加速器的研究。這些都是加速器的例子。 - NerdPirate


enter image description here

ASIC(定制矽)速度非常快,但設計和製造成本非常高。 ASIC過去是特定用途的,CPU是一種允許計算機“編程”的方法,因此計算任務可以由軟件執行。早期的CPU使人們能夠利用ASIC的強大功能,而無需通過在現場對芯片進行編程來節省大量成本。這種方法變得如此成功,它產生了你現在正在使用的(非常)快速的計算機。

那麼為什麼選擇GPU呢?

在90年代中期,3DFX意識到3D渲染任務非常具體,以至於定制ASIC的性能比CPU要好得多。他們創建了一個計算機協處理器,將3D渲染任務從CPU卸載到這個協同處理器,他們稱之為“GPU”。競爭和市場需求推動了這一領域的創新,以至於GPU的執行速度比CPU快得多,因此問題出現了,“為什麼我不能使用GPU來壓縮我的數字而不是CPU呢?” GPU製造商看到了需求和賺錢的方式,因此他們開始改變他們的平台以允許開發人員使用他們的硬件。但硬件硬件是如此特定於目的,以至於你可以要求GPU做什麼,現在仍然存在限制。我不會詳細說明為什麼在這裡。

那麼為什麼沒有更具針對性的矽?為什麼JUST圖形?

原因有兩個:1)價格。 GPU有一個很好的市場,可以證明它是合理的,但即使在那時,它也是一個巨大的風險。沒有人真正知道3DFX是否可以獲利(事實證明,他們實際上並沒有,並且已經不復存在)。即使是現在,憑藉GPU市場的規模,實際上只有3個競爭對手。 2)CPU實際上滿足了帶有指令擴展的“定制芯片”的需求。回想一下MMX--這實際上是英特爾試圖在3DFX速度提升的同時加速CPU中的圖形。從那以後,隨著所有這些自定義擴展,x86指令集已經變得非常龐大。許多這些擴展在當時都有意義(如MMX),但現在在處理器中大部分都是重量級的。但是,您無法刪除它們,因為它會破壞現有軟件。它實際上是ARM的賣點之一 - ARM是一個精簡指令集。沒有那麼多的指令擴展,但這使得矽更小,製造成本更低。

在我看來,如果你能降低定制芯片的成本,你可以賺很多錢。是不是有人在研究這個?

有一項名為FPGA的技術 - 現場可編程門陣列,自計算初期就開始存在。它本質上是一個可以使用軟件“在現場”設計的微芯片。這是非常酷的技術,但是使芯片可編程所需的所有結構佔用了大量的矽,並使芯片以更低的時鐘速度運行。如果芯片上有足夠的矽片並且可以有效地並行化任務,那麼FPGA的速度可以比CPU快。但是他們在你可以施加多少邏輯上受到限制。對於早期的比特幣採礦而言,除了最昂貴的FPGA之外的所有FPGA都比GPU慢,但是它們的ASIC對應有效地結束了GPU採礦的盈利能力。其他加密貨幣使用了無法並行化的特定算法,因此FPGA和ASIC並不比CPU和GPU更好地證明成本合理。

FPGA的主要限制因素是矽尺寸 - 你可以在芯片上安裝多少邏輯?第二個是時鐘速度,因為很難優化FPGA中的熱點,洩漏和串擾等問題。較新的製造方法使這些問題最小化,並且 英特爾與Altera合作提供FPGA 工程師可以利用“定制芯片”作為服務器中的協處理器的優勢。從某種意義上說,它即將到來。

FPGA會不會取代CPU和GPU?

可能不會很快。最新的CPU和GPU都是MASSIVE,矽片經過高度調整,具有良好的熱性能和電氣性能。您無法像定制ASIC那樣優化FPGA。除了一些突破性的技術,CPU可能仍然是FPGA和GPU協處理器的核心。


4
2018-06-09 01:30



許多這些擴展在當時都有意義(如MMX),但現在在處理器中大部分都是重量級的。  3D渲染是 遠 來自SIMD的唯一​​用例。 MMX的大部分“權重”是執行單元,可以與SSE2,AVX2和AVX512等更寬的矢量共享。它們大量用於CPU上的高質量視頻編碼,以及許多其他任務,包括高性能計算。但也有memchr,strlen和許多其他東西的庫實現。例如 過濾數組 一次超過1個元素 - Peter Cordes