Hilfe beim kompilieren

SupeRalF
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 4. Okt 2010 16:48

Hilfe beim kompilieren

Beitrag von SupeRalF » 19. Jan 2012 14:23

Hi,
ich versuche aktuell verzweifelt, das Praktikum lokal bei mir zu kompilieren. Dafür habe ich das AMD APP SDK installiert (ich besitze eine AMD Grafikkarte) und die Pfade in den include und library ordner in die cmake eingetragen. Laut Aufgabenblatt sollte das jetzt funktionieren. Tut es leider aber nicht. Ich bekomme seitenlang Fehlermeldungen (bespielhafter Auszug):

Code: Alles auswählen

MIcomputation.cpp:(.text+0x55c): undefined reference to `clSetKernelArg'
MIcomputation.cpp:(.text+0x5c5): undefined reference to `clEnqueueWriteBuffer'
MIcomputation.cpp:(.text+0x61b): undefined reference to `clEnqueueWriteBuffer'
MIcomputation.cpp:(.text+0x691): undefined reference to `clEnqueueNDRangeKernel'
MIcomputation.cpp:(.text+0x6ac): undefined reference to `clFinish'
MIcomputation.cpp:(.text+0x716): undefined reference to `clEnqueueReadBuffer'
MIcomputation.cpp:(.text+0x7f3): undefined reference to `clReleaseMemObject'
hat jemand eine Ahnung, was bei mir noch falsch läuft?

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

Re: Hilfe beim kompilieren

Beitrag von oliver_g » 19. Jan 2012 15:07

Dann hast du die Pfade vermutlich nicht korrekt eingetragen. Folgende CMakeLists.txt funktioniert für das AMD APP SDK (Standardpfade!) unter Windows:

Code: Alles auswählen

# CudaCluster main cmake file
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

# cluster environment using cuda
PROJECT(Praktikum5)

#------------------------------------------------------------------------------
# options and flags
#------------------------------------------------------------------------------
# Set options
SET(CMAKE_VERBOSE_MAKEFILE off)
SET(CMAKE_BUILD_TYPE "Release")

SET(BUILD_FOR_64_BITS on CACHE BOOL "Build for 64 bit platforms?")

SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3")
SET(CMAKE_CXX_FLAGS_DEBUG  "-O0 -g")
SET(HEADER ../Fasta.h ../Matrix.h ../MIcomputation.h ../oclutil.h ../SequenceSet.h)
SET(SOURCE ../Fasta.cpp ../pr5.cpp ../SequenceSet.cpp ../MIcomputation.cpp ../oclutil.cpp)

# Global include path
INCLUDE_DIRECTORIES("/Program Files/AMD APP/include")


#------------------------------------------------------------------------------
# options and flags
#------------------------------------------------------------------------------
ADD_EXECUTABLE(Praktikum5 ${HEADER} ${SOURCE})

TARGET_LINK_LIBRARIES(Praktikum5 "/Program Files/AMD APP/lib/x86/OpenCL.lib")
Dateianhänge
CMakeLists.txt
(1.1 KiB) 11-mal heruntergeladen

SupeRalF
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 4. Okt 2010 16:48

Re: Hilfe beim kompilieren

Beitrag von SupeRalF » 19. Jan 2012 16:29

Das meine CMake anders ist, ist durchaus korrekt. Denn eine "OpenCL.lib" habe ich gar nicht. Ich habe unter /opt/AMDAPP/lib/x86/ nur eine "libglut.so" und eine "libGLEW.so". beide erzeugen den gleichen Fehler. Ich nutze Linux (Kubuntu 11.10 in der 32bit Version).
Meinst du, es ist leichter, das Praktikum unter Windows zu entwickeln?

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

Re: Hilfe beim kompilieren

Beitrag von oliver_g » 19. Jan 2012 16:44

Wenn du Linux verwendest, dann schau mal, ob unter /usr/lib oder /usr/lib64 eine libOpenCL.so liegt. Libraries für GLUT und GLEW brauchst du in diesem Praktikum nicht.

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

Re: Hilfe beim kompilieren

Beitrag von xshisdi32 » 19. Jan 2012 16:50

Linux und AMD APP SDK:
CMakeLists.txt:

Code: Alles auswählen

# CudaCluster main cmake file
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

# cluster environment using cuda
PROJECT(Praktikum5)

#------------------------------------------------------------------------------
# options and flags
#------------------------------------------------------------------------------
# Set options
SET(CMAKE_VERBOSE_MAKEFILE off)
SET(CMAKE_BUILD_TYPE "Debug")

SET(BUILD_FOR_64_BITS on CACHE BOOL "Build for 64 bit platforms?")

ADD_DEFINITIONS("-Wall -Wextra")

SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -ffast-math -g")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ffast-math")
SET(CMAKE_CXX_FLAGS_DEBUG  "-O0 -g")
SET(HEADER ../Fasta.h ../Matrix.h ../MIcomputation.h ../oclutil.h ../SequenceSet.h)
SET(SOURCE ../Fasta.cpp ../pr5.cpp ../SequenceSet.cpp ../MIcomputation.cpp ../oclutil.cpp)

#------------------------------------------------------------------------------
# options and flags
#------------------------------------------------------------------------------
ADD_EXECUTABLE(Praktikum5 ${HEADER} ${SOURCE})

	INCLUDE_DIRECTORIES("/opt/AMDAPP/include")
	find_library(OpenCL OpenCL /usr/lib)
        target_link_libraries(Praktikum5 OpenCL)


der_apfel
Erstie
Erstie
Beiträge: 14
Registriert: 9. Apr 2010 22:47

Re: Hilfe beim kompilieren

Beitrag von der_apfel » 19. Jan 2012 16:51

Das AMDAPP SDK installiert die benötigte libOpenCL.so auch nicht in dem Ordner "/opt/AMDAPP/lib/x86", sondern standardmäßig in den "normalen" Library Ordner deines Systems , also in "/usr/lib".
Du musst also die CMakeLists.txt in dem Fall wahrscheinlich so anpassen, dass dort die Einträge so aussehen

Code: Alles auswählen

INCLUDE_DIRECTORIES("/opt/AMDAPP/include") 
TARGET_LINK_LIBRARIES(Praktikum5 "/usr/lib/libOpenCL.so")
Wo die ganzen Libraries hin installiert werden, kann man übrigens auch in den AMD Installation Notes nachlesen!

edit: lol 3 Idioten 1 Gedanke ;)

SupeRalF
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 4. Okt 2010 16:48

Re: Hilfe beim kompilieren

Beitrag von SupeRalF » 19. Jan 2012 17:02

Ah, danke euch! Ich dachte, weil das AMD APP SDK einen lib Ordner beinhaltet, dass darin auch die Libraries abgelegt werden würden^^
bei mir heißt die Datei übrigens libOpenCL.so.1 ; da scheint es mal einen konflikt gegeben zu haben.

Antworten

Zurück zu „Archiv“