Czy można skompilować OpenCL przy użyciu Mingw i Nvidia SDK?Kompilacja OpenCL na Mingw Nvidia SDK
Jestem świadomy, że nie jest on oficjalnie obsługiwany, ale to po prostu nie ma sensu. Czy biblioteki nie są dostarczane jako statycznie połączone biblioteki? Chodzi mi o to, że kiedyś skompilowany z jakimkolwiek kompilatorem, który może być i powiązany z powodzeniem, jaki powinien być problem?
Udało mi się skompilować i skutecznie połączyć mój kod z bibliotekami OpenCL dostarczonymi z pakietem SDK Nvidii, jednak plik wykonywalny generuje błąd segmentacji pod numerem clGetPlatformIDs
, który jest pierwszym wywołaniem OpenCL w moim kodzie.
Oto moja komenda kompilacji
x86_64-w64-mingw32-g++ -std=c++11 File.cpp \
-L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64" \
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" \
-gcoff -lOpenCL -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 \
-lshell32 -lole32 -loleaut32 \
-luuid -lodbc32 -lodbccp32 -luser32 -lgdi32 -lmingwex -m64 \
-DWIN32 -D_DEBUG -D_CONSOLE
Zauważ, że biblioteki te zostały podjęte z pliku .sln kodu próbki OpenCL.
Próbowałem różnych kombinacji tych bibliotek i nic nie działa.
Istnieje również sposób kompilacji przy użyciu Mingw i łącza za pomocą czegoś innego? Nie jestem pewien, czym może być coś innego.
Dlaczego nie używasz VC++ Express, aby zbudować kod hosta? Czy używasz 32-bitowych lub 64-bitowych bibliotek? Istnieje mylące połączenie CUDA \ v5.0 \ lib \ x64 i -luse32 -lcomdlg32 -ladvai32 ... -m64 czy wszystkie te biblioteki są potrzebne? Uprość linię poleceń. –
64-bitowy, mój kod C++ używa funkcji C++ 11, więc VC++ nie ma wyjścia. Próbowałem usunąć i dodać biblioteki, ślepy zaułek. – omarzouk