2016-11-07 1 views
3

Ich möchte eine Bibliothek mit einem Algorithmus entwickeln, der auf der CPU oder der GPU laufen kann. Die GPU kann Nvidia sein (dann wird der Algorithmus CUDA verwenden) oder nicht (dann wird der Algorithmus OpenCL verwenden).Ist es möglich, eine GPU für CUDA/OpenCL Unit Testzwecke zu emulieren?

würde Ich mag eine GPU in diesem Projekt emulieren, weil vielleicht:

  • Ich werde andere Computer verwenden, um die Software zu entwickeln, und einige von ihnen haben keine GPU.

  • Die Software wird schließlich in Servern ausgeführt, die eine GPU haben können oder nicht, und der Komponententest muss ausgeführt und bestanden werden.

Gibt es eine Möglichkeit, eine GPU für Komponententests zu emulieren?

In dem folgenden Link:

GPU Emulator for CUDA programming without the hardware

Sie zeigen eine Lösung, sondern nur für CUDA, nicht für OpenCL und die Software, die sie "GPUOcelot" vorschlagen wird nicht mehr aktiv gepflegt.

+0

Die Leistung wird auf einer CPU natürlich schlechter sein, aber ich muss wissen, ob es eine Möglichkeit gibt zu testen, dass der Algorithmus funktioniert und er korrekt programmiert ist, wenn keine GPUs installiert sind. In Komponententests gibt es Bibliotheken zu emulieren, dass eine Datenbank listet, zum Beispiel fakemongo https://github.com/fakemongo emuliert eine mongodb-Datenbank listining, um zu testen, dass Ihre SQL-Funktionen korrekt sind. – Rob

+0

Mögliches Duplikat von [GPU-Emulator für CUDA-Programmierung ohne die Hardware] (http://stackoverflow.com/questions/3087361/gpu-emulator-for-cuda-programming-without-the-hardware) –

+1

In diesem Link sprechen sie nur über cuda (nicht über opencl) und die von ihnen vorgeschlagene Lösung ist eine Software, die nicht aktiv gepflegt wird. – Rob

Antwort

3

Es hängt davon ab, was Sie bei der Emulation meinen. Sie können die Geschwindigkeit von GPUs nicht emulieren.

Die GPU ist architektonisch sehr verschieden von der CPU, mit vielen Arbeitsfäden (1000s, 10000s, ...), deshalb benutzen wir sie. Die CPU kann nur wenige Threads haben, auch wenn Sie den Code parallelisieren. Sie haben auch unterschiedliche Befehlssätze.

Sie können jedoch die Ausführung mit speziellen Software emulieren, wie NVEmulate für NVIDIA GPUs und OpenCL Emulator-Debugger für AMD.

Eine verwandte Frage: GPU Emulator for CUDA programming without the hardware, wo die angenommene Antwort gpuocelot für CUDA-Emulation empfiehlt.

+0

Vielen Dank, das ist, was ich gesucht habe. Ich habe eine GPU in meinem Computer, aber manchmal ziehe ich es vor, auf meinem Sofa mit einem alten Laptop ohne GPU zu programmieren, und ich muss wissen, ob der Code funktioniert. – Rob

+1

@Rob in diesem Fall möchten Sie vielleicht rCUDA einen Blick geben. Damit können Sie von einem Knoten ohne GPU auf eine Remote-GPU zugreifen. Siehe: http://www.rcuda.net/index.php/what-s-rcuda.html –

Verwandte Themen