Visual Studio und OpenCL

charfi90
Mausschubser
Mausschubser
Beiträge: 61
Registriert: 8. Sep 2010 15:40

Visual Studio und OpenCL

Beitrag von charfi90 » 19. Jan 2012 21:27

Hallo,

kann mir jemand bitte sagen wie ich den include Verzeichnis und die opencl lib in mein visual studio projekt einbinden kann damit ich den vorgegebenen code kompilieren kann

viele Grüße

oliver_g
Mausschubser
Mausschubser
Beiträge: 62
Registriert: 17. Nov 2008 16:27

Re: Visual Studio und OpenCL

Beitrag von oliver_g » 19. Jan 2012 23:24

Je nach verwendetem SDK die Pfade in der CMakeLists.txt entsprechend anpassen und dann cmake ausführen:

Code: Alles auswählen

cmake -G "Visual Studio 10"
Das erstellt dir ein Projekt für Visual Studio, die Libraries sind dann schon eingebunden.

xshisdi32
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 10. Apr 2011 17:24
Wohnort: Bessungen, Darmstadt
Kontaktdaten:

Re: Visual Studio und OpenCL

Beitrag von xshisdi32 » 19. Jan 2012 23:26

CMake kann dir Visual Studio SLN's und VCPROJ's generieren.

charfi90
Mausschubser
Mausschubser
Beiträge: 61
Registriert: 8. Sep 2010 15:40

Re: Visual Studio und OpenCL

Beitrag von charfi90 » 20. Jan 2012 22:42

Hallo,

wo führe ich cmake aus ? in der Command ? heisst das ich kann das program nicht wie sont kompilieren und ausführen ?

Danke

bttf
Mausschubser
Mausschubser
Beiträge: 76
Registriert: 9. Nov 2011 14:04

Re: Visual Studio und OpenCL

Beitrag von bttf » 22. Jan 2012 16:32

Wie man das Ganze auf einem Windows Rechner mit Visual Studio zum laufen bekommt würde mich aber auch mal brennend interessieren!!!

Habe das NVIDIA SDK installiert und anschließend die ensprechenden Pfade in der CMakeLists.txt Datei geändert. Dann habe ich mit cmake ein VS Projekt generieren lassen. Das Probleme ist jetzt, dass VS das Projekt nicht kompiliert sondern mit einer Fehlermeldung aufhört:

fatal error C1083: Datei (Include) kann nicht geöffnet werden: "sys/time.h": No such file or directory

Kann mir bitte jemand erklären, wie ich das Praktikum an's laufen bekomme, ohne extra eine Linux Distribution installieren zu müssen! :mrgreen: Da man ja nicht die RBG Rechner belasten soll und man es auf den Clustern nicht auf der CPU testen kann, muss man es ja irgendwie auf dem heimischen PC zum laufen bekommen.....

xshisdi32
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 10. Apr 2011 17:24
Wohnort: Bessungen, Darmstadt
Kontaktdaten:

Re: Visual Studio und OpenCL

Beitrag von xshisdi32 » 22. Jan 2012 17:02

Probiers mal ohne "sys/".

bttf
Mausschubser
Mausschubser
Beiträge: 76
Registriert: 9. Nov 2011 14:04

Re: Visual Studio und OpenCL

Beitrag von bttf » 22. Jan 2012 18:15

Kann leider nicht testen, ob es so gehen würde. Es gibt nämlich noch ein anderes Problem wie mir aufgefallen ist. Wenn ich die Pfade zu den Headern und den Libraries so angeben, dass cmake einwandfrei durchläuft, findet VS beim kompilieren "opencl.h" nicht :x

Das habe ich der CMakeLists.txt stehen:

INCLUDE_DIRECTORIES("$(NVSDKCOMPUTE_ROOT)/OpenCL/common/inc")
TARGET_LINK_LIBRARIES(Praktikum5 "$(NVSDKCOMPUTE_ROOT)/OpenCL/common/lib/Win32")

Mit Backslash geht es nicht und wenn den Pfad ala "C:\Program Data\NVIDIA......" angibt auch nicht. Dann beschwert sich jedes mal cmake, dass was nicht stimmt.

Ich krieg hier noch die Krise! :shock:

cwb38
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 4. Okt 2010 15:53

Re: Visual Studio und OpenCL

Beitrag von cwb38 » 22. Jan 2012 18:27

bttf hat geschrieben:Kann mir bitte jemand erklären, wie ich das Praktikum an's laufen bekomme, ohne extra eine Linux Distribution installieren zu müssen! :mrgreen: Da man ja nicht die RBG Rechner belasten soll und man es auf den Clustern nicht auf der CPU testen kann, muss man es ja irgendwie auf dem heimischen PC zum laufen bekommen.....
Funktioniert bei uns unter Windows mit Eclipse...

bttf
Mausschubser
Mausschubser
Beiträge: 76
Registriert: 9. Nov 2011 14:04

Re: Visual Studio und OpenCL

Beitrag von bttf » 22. Jan 2012 18:32

Oh das wäre natürlich schön :-)

Da muss ich doch gleich genauer nachfragen: Muss man noch extra ein C++ Plugin installieren? Und was macht man dann mit der CMakeLists.txt oder gehts auch ohne???

cwb38
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 4. Okt 2010 15:53

Re: Visual Studio und OpenCL

Beitrag von cwb38 » 22. Jan 2012 18:38

Ja, man braucht das Eclipse C/C++ Plugin und MinGW; da Eclipse CMake Dateien nicht beachtet (wobei es dafür bestimmt auch Plugins gibt), muss man die Compileeinstellungen manuell über die Projekteigenschaften einstellen

bttf
Mausschubser
Mausschubser
Beiträge: 76
Registriert: 9. Nov 2011 14:04

Re: Visual Studio und OpenCL

Beitrag von bttf » 22. Jan 2012 19:05

OK, Eclipse für C++ hab ich jetzt und MinGW hatte ich auch so schon.

Jetzt wieder die Frage für Dumme: Wie "verbinde" ich die beiden? Bzw. wie nutze ich MinGW aus Eclipse heraus?

Ich hab es mit "New -> Project -> Makefile Project with Existing Code" probiert, weiß dann aber schon nicht mehr weiter, weil igendwie muss man Eclipse ja letztenendes auch sagen, wo die OpenCL Dateien sind....

cwb38
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 4. Okt 2010 15:53

Re: Visual Studio und OpenCL

Beitrag von cwb38 » 22. Jan 2012 19:49

Ok, hast du den Ordner MinGW/bin schon in deinem System-PATH? Gehen wir mal davon aus, dass das so ist...
Du musst über New -> C++ Project -> Executable -> Empty Project gehen und bei Toolchain den MinGW GCC auswählen (geht vllt. auch einfacher, aber so hat es bei mir immer funktioniert).
Nachdem das Projekt erstellt ist einfach die Dateien aus dem Coderahmen vom Praktikum reinkopieren per drag&drop; dann im Navigator über Rechtsklick die Properties des Projekts öffnen; über C/C++ Build -> Settings erstmal oben "All Configurations" auswählen; dann Tool Settings -> MinGW C++ Linker -> Libraries -> Add und schreib "OpenCL" rein (ohne ""); jetzt geh über C/C++ General -> Path and Symbols -> Includes -> Languages -> Add und setze die ersten beiden Haken und gib als Pfad "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include" (oder ähnlich, bzw. "C:\Program Files (x86)\AMD APP\include", wenn du AMD hast) an; dann wechsel im Tab auf Library Paths und den Add-Dialog: wieder die ersten beiden Haken setzen und "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\Win32" (oder ähnlich, bzw. "C:\Program Files (x86)\AMD APP\lib\x86") eintragen. Jetzt auf OK klicken und hoffen, dass es funktioniert, keine Garantie...

bttf
Mausschubser
Mausschubser
Beiträge: 76
Registriert: 9. Nov 2011 14:04

Re: Visual Studio und OpenCL

Beitrag von bttf » 22. Jan 2012 22:28

Erst Mal Danke für die Mühe! Leider sagt er immer noch "Launch failed. Binary not found."

Weil ich inzwischen dann doch ziemlich genervt war, habe ich jetzt Ubuntu installiert :mrgreen: Funzt darauf auch soweit prima mit cmake, aber wenn ich dann make ausführe, bricht er bei MIcomputation.cpp ab. Hab die Fehlermeldung nicht mehr genau im Kopf, aber er hat was gegen die "exit(1);" Befehle in dem Code. Die Fehlermeldung war irgendwas mit ".... in diesem Gültigkeitsbereich nicht definiert." Auf dem Cluster habe ich diese Fehlermeldung nicht bekommen, da klappt das kompilieren einwandfrei. Jemand 'ne Ahnung woran das liegt???

EDIT: Habe des Rätsels Lösung gerade in einem anderen Thread hier im Forum gefunden. In MIcomputation.cpp noch ein #include <cstdlib> dazu und in oclutil.cpp die Abfrage raus, ab es include't werden soll und es in jedem Fall include'en. Jetzt läuft es TATSÄCHLICH!!!! Was für ein Erfolg!!! :mrgreen: :mrgreen: :mrgreen: Hat auch nur den halben Tag gedauert xD

simon.r
Mausschubser
Mausschubser
Beiträge: 59
Registriert: 4. Okt 2010 16:13

Re: Visual Studio und OpenCL

Beitrag von simon.r » 23. Jan 2012 08:51

bttf hat geschrieben:Erst Mal Danke für die Mühe! Leider sagt er immer noch "Launch failed. Binary not found."
Hast du die Perspektive auch auf C++ umgestellt und den Code erstmal kompiliert?

JohannesRudolph
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 7. Nov 2010 01:42

Re: Visual Studio und OpenCL

Beitrag von JohannesRudolph » 23. Jan 2012 11:25

Also ich habe das ganze unter VS zum laufen bekommen, zugegebenermaßen ist es nicht ganz einfach.

1. Gettimeofday gibt es unter Windows nicht. Einen hinreichend genauen Ersatz bekommt man aber, wenn man einfach mal gettimeofday windows google'd.
2. Ich habe das AMD App SDK verwendet (x64) und erst mal mit absoluten Pfaden gearbeitet. Zugegebenermaßen ist das sehr hässlich und wäre es nicht nur für ein GDI Praktikum würde ich das auch nicht so machen. Man erzeugt ein leeres C++ Projekt und fügt dann alle dateien aus dem src Ordner des Projektrahmens als existierende Dateiein zum Projekt hinzu.
3. Include und Libs angeben: Projekteinstellungen, Compiler, Additional Include: Hier den include Ordner aus dem App SDK angeben. Projekteinstellungen, Linker, Additional Dependencies: Opencl.dll angeben, Additional Lib Directories: App SDK lib folder angeben.
4. Projekt auf x64 umstellen: solution anwählen neue Konfiguration erstellen. plattform x64 auswählen, die einstellungen müsst ihr aus der standard win32 debug konfiguration übernehmen (ein dialog wird euch danach fragen).

Die Aufstellung ist jetzt erst mal nur so aus dem Kopf, insebsondere die Namen der Menüeinträge stimmen wahrscheinlich nicht 100%ig, sind aber sinngemäß.

Hoffe das hilf jemandem, ansonsten Rückfragen mit genauer Fehlerbseschreibung.

Antworten

Zurück zu „Archiv“