Ich bin ein Neuling in der GPU-Programmierung. Ich habe einen Laptop mit NVIDIA GeForce GT 640-Karte. Ich bin mit 2 Dilemmata konfrontiert, Vorschläge sind sehr willkommen.
Wenn ich mich für CUDA - Ubuntu oder Windows entscheide CUDA ist eindeutig besser für Windows geeignet, während die Installation unter Ubuntu ein schwerwiegendes Problem darstellen kann. Ich habe einige Blogposts gesehen, die behaupten, CUDA 5 unter Ubuntu 11.10 und Ubuntu 12.04 installiert zu haben . Ich konnte sie jedoch nicht zum Arbeiten bringen. Außerdem arbeiten Standard-CUDA-Lehrbücher lieber in der Windows-Domäne und sind in Bezug auf die Installation und das Arbeiten mit Unix / Ubuntu mehr oder weniger leise.
CUDA oder OpenCL - Das ist wahrscheinlich schwieriger als meine erste Frage! Ich bin meistens auf GPGPU-Projekte mit CUDA / Nvidia gestoßen, aber OpenCL ist wahrscheinlich die nächstbeste Option in Open Source und die Installation in Ubuntu wird wahrscheinlich kein Problem sein, obwohl einige Vorschläge hier am nützlichsten sind. Verzichte ich auf Funktionalität, wenn ich mich für OpenCL und NICHT für CUDA entscheide?
Hilfe oder Anregungen?
quelle
Antworten:
Wenn Sie OpenCL verwenden, können Sie es problemlos sowohl unter Windows als auch unter Linux verwenden, da Bildschirmtreiber ausreichen, um OpenCL-Programme auszuführen, und Sie zum Programmieren lediglich das SDK installieren müssen. CUDA stellt höhere Anforderungen an bestimmte GCC-Versionen usw. Die Installation unter Linux ist jedoch nicht viel schwieriger.
Unter Linux hat CUDA seltsame Anforderungen wie die Verwendung von GCC 4.6 oder 4.7. Wenn Sie eine andere Version von GCC verwenden, können Sie Ihr Programm nicht mehr kompilieren. Wenn Sie OpenCL verwenden, können Sie jeden Compiler verwenden, da Sie nur eine Verknüpfung mit der allgemeinen OpenCL-Bibliothek herstellen müssen. So ist OpenCL einfacher einzurichten, zu verwenden und zu kompilieren. Sobald Sie ein OpenCL-Programm kompiliert haben, kann es auf jeder Hardware ausgeführt werden (sofern es dafür codiert ist), auch wenn es mit dem OpenCL SDK einer anderen Marke kompiliert wurde.
Sie können OpenCL-Programme schreiben, die auf Nvidia-, AMD- und Intel-Hardware, auf GPUs, CPUs und Beschleunigern funktionieren. Darüber hinaus arbeitet Altera daran, OpenCL auf FPGAs zu unterstützen! Wenn Sie CUDA verwenden, müssen Sie nur Nvidia-GPUs verwenden und Ihren Code für andere Plattformen erneut in OpenCL oder einer anderen Sprache schreiben. Eine schwerwiegende Einschränkung der Verwendung von CUDA und langfristig eine ernsthafte Zeitverschwendung.
Ich sehe, dass jemand einige alte Referenzen zwischen CUDA und OpenCL gepostet hat, aber sie sind alt! Wenn diese Dokumente nicht verfügbar waren, unterstützte nur AMD OpenCL ordnungsgemäß. Seit 2013 wird OpenCL von ARM, Altera, Intel usw. unterstützt und ist zum Industriestandard geworden.
Der einzige Nachteil ist, dass Sie, da OpenCL so flexibel ist, mehr Optionen und Möglichkeiten zum Codieren von Speicherzuordnungen, Übertragungen usw. in Ihrem Programm haben. Daher kann es sich vielleicht komplizierter anfühlen.
quelle
Ich denke, es ist nicht sehr schwierig, eine Cuda-Umgebung auf Ubuntu einzurichten. Sie können es versuchen.
Ich denke, als Student der Computerarchitektur müssen Sie sowohl OpenCL als auch CUDA lernen. Und Sie sollten zuerst Cuda lernen, da CUDA mehr Hardware- und Laufzeitinformationen bereitstellt. Die Hardware-Kenntnis ist sehr wichtig, wenn Sie Ihre GPU-Codes optimieren möchten.
quelle