2014-09-24 106 views
-1

我是CUDA的新手。而在第三維寫一個快速的3D陣列求和程序,有一些問題,進入我的腦海:第三維CUDA陣列求和

  1. 最自然的方法是使用每個矩陣條目線程,每個線程循環通過第三維。在這種情況下,內存是否考慮合併?由於相鄰線程訪問相鄰元素;他們只有循環變量的大步。

  2. 爲了提高性能,減少第三維確實有所幫助。

  3. 是否有任何圖書館使用?對於2D求和,使用cuBLAS被認爲是一個不錯的選擇。我正在考慮一種強制類型轉換,它會欺騙編譯器將這段內存視爲二維數組,並使用來自cuBLAS的矩陣向量乘法。

+0

你有沒有考慮過使用Thrust,只有在內存中正確安排'3D'數組? – JackOLantern 2014-09-24 20:21:46

+0

但是推力庫不被視爲一個高性能庫嗎?出於某種原因,我需要高性能代碼。 – Fontaine007 2014-09-25 05:56:36

回答

1
  1. 這是一個凝聚的讀取。

  2. 您可以用同樣的方法使用cuBLAS。只要告訴GEMV第一個(未收縮的)尺寸是nx * ny。