2009-09-09 131 views
3

我前幾天開始研究GPGPU,併成功實現了具有良好性能的cholesky因式分解,並且我參加了高性能計算會議,有人說「GPGPU是一個黑客」。GPGPU是黑客嗎?

我仍然困惑這是什麼意思,他們爲什麼說它破解。有人說這是黑客攻擊,因爲你正在將你的問題轉化爲矩陣並對其進行操作。但是我仍然很困惑,人們是否認爲這是一種黑客行爲,或者如果是的話,爲什麼?

任何人都可以幫助我,爲什麼他們稱它爲黑客,而我發現它沒有任何問題。

+0

只是好奇,會議在哪裏? – 2009-09-09 19:18:50

回答

14

這種觀點的一個可能的原因是GPU最初不是用於通用計算。編程GPU也不那麼傳統,也更加硬核,因此更可能被視爲黑客。

「將問題轉換爲矩陣」這一點根本不合理。無論您通過編寫代碼解決什麼任務,都可以選擇合理的數據結構在GPU矩陣可能是最合理的數據結構的情況下,它不是黑客攻擊,而只是使用它們的自然選擇。

但是,我認爲GPGPU普及是時間問題。人們只需要習慣這個想法。畢竟誰在乎計算機的哪個單元運行該程序?

1

我想他的意思是說,使用GPGPU迫使你重構你的實現,以便它適合硬件,而不是問題域。優雅的實施應該適合後者。

注意,單詞「黑客」可能有幾種不同的含義: http://www.urbandictionary.com/define.php?term=hack

+0

不應該有一個真正優雅的實現適合問題域和平臺嗎? – sharptooth 2009-09-09 06:58:39

+0

我認爲合適的平臺是必須的(如果有的話),而不是目標。 – 2009-09-10 06:50:11

2

顯然,只有誰說,可以肯定地說,爲什麼他說的話,而是人,這是我的看法:

  • 「黑客」不是一件壞事。
  • 它迫使人們學習新的編程語言和概念。對於試圖模擬天氣或蛋白質摺疊或藥物反應的人來說,這是一個不受歡迎的煩惱。他們並非真的想在第一時間學習FORTRAN(或其他),現在要學會另一個編程系統。
  • 編程工具是不是很成熟了。
  • 硬件並不像CPU那樣可靠,所以所有的計算都必須進行兩次,以確保你有正確的答案。其中一個原因是,GPU還沒有提供糾錯內存,所以如果你想用超過數千個處理器構建一臺超級計算機,宇宙射線在你的數字中翻轉的概率就會變得更加確定。

至於註釋「要轉換您的問題到矩陣,它做業務」,我認爲這顯示了很多無知的。幾乎所有的高性能計算都適合這種描述!

2

GPGPU在過去幾年中可能會出現的主要問題之一是可能會對後續任務進行編程並不容易。直到DX10,GPU之間沒有整數支持,分支仍然很差。這是一個很大的情況,爲了獲得最大利益,您必須以非常尷尬的方式編寫代碼,以便從GPU中提取各種效率增益。這是因爲您運行的硬件仍然專用於處理多邊形和紋理,而不是抽象的並行任務。

顯然,這就是我對其採取和因人而異

3

在GPU,擁有高效的內存訪問是極爲重要的實現最佳性能。這通常涉及重組或甚至選擇全新的算法和數據結構。這就是爲什麼GPU編程可以被視爲黑客的原因。其次,適應現有算法在GPU上運行本身並不是科學。某些GPU算法相關論文的科學貢獻相對較低,導致GPU編程的負面感受嚴格爲「工程」。

2

GPGPU可以回溯到數學協處理器的日子。黑客是解決漫長問題的捷徑。 GPGPU是一種黑客,就像IPV4之上的NAT一樣。計算問題就像網絡越來越大,我們試圖做更多的事情,GPGPU是一個有用的臨時解決方案,無論它是否位於核心CPU芯片之外,並且具有單獨的惡意API或者通過API被吸入CPU或製造符合路徑發現者。