2016-11-07 213 views
3

我想開發一個可以在CPU或GPU上運行的算法庫。 GPU可以是Nvidia(然後算法將使用CUDA)或不算(然後該算法將使用OpenCL)。是否可以模擬GPU以進行CUDA/OpenCL單元測試?

我想在這個項目中,因爲也許來模擬GPU:

  • 我會用不同的計算機開發軟件,其中一些沒有GPU。

  • 該軟件將最終在可以具有GPU的服務器上執行,並且必須執行並通過單元測試。

有沒有一種方法可以模擬GPU以進行單元測試?

在下面的鏈接:

GPU Emulator for CUDA programming without the hardware

他們展示一個解決方案,但僅針對CUDA,不爲OpenCL和他們提出的軟件「GPUOcelot」不再積極維護。

+0

在CPU上性能會明顯下降,但是我需要知道是否有方法來測試算法是否正常工作,並且在沒有安裝GPU時它是正確編程的。在單元測試中有模擬數據庫正在監聽的庫,例如fakemongo https://github.com/fakemongo模擬一個mongodb數據庫列表來測試你的sql函數是否正確。 – Rob

+0

[用於CUDA編程的GPU仿真器沒有硬件]的可能重複(http://stackoverflow.com/questions/3087361/gpu-emulator-for-cuda-programming-without-the-hardware) –

+1

在該鏈接中,他們只會說關於cuda(而不是關於opencl)以及他們提出的解決方案是一種不積極維護的軟件。 – Rob

回答

3

這取決於你在模擬上的意思。你無法模擬GPU的速度。

GPU在架構上與CPU有很大不同,有很多工作線程(1000s,10000s,...),這就是我們使用它的原因。即使並行化代碼,CPU也只能有少量線程。他們也有不同的指令集。

然而,您可以使用專用軟件模擬執行,例如適用於NVIDIA GPU的NVEmulate和適用於AMD的OpenCL Emulator-Debugger

相關問題:GPU Emulator for CUDA programming without the hardware,其中接受的答案建議gpuocelot用於CUDA仿真。

+0

非常感謝,這就是我一直在尋找的東西。我在我的電腦中安裝了GPU,但有時我更喜歡使用不帶gpu的舊筆記本電腦在我的沙發上編碼,我需要知道該代碼是否正常工作。 – Rob

+1

@Rob在這種情況下,你可能想給rCUDA一看。它允許您從沒有GPU的節點訪問遠程GPU。請參閱:http://www.rcuda.net/index.php/what-s-rcuda.html –

相關問題