openMP Linux Ubuntu 10.4 LTS Kompilier Probleme

Alles rund um die Programmierung mit Qt
Antworten
Halcom
Beiträge: 13
Registriert: 11. Mai 2007 09:01

openMP Linux Ubuntu 10.4 LTS Kompilier Probleme

Beitrag von Halcom »

Hallo,

ich bin noch ziemlich neu in der Linux Welt unterwegs und entsprechend unerfahren. Ich habe mein Program welches unter Windows läuft bereits erfolgreich unter Linux laufen.
Nun wollte ich mich ein wenig mit openMP beschäftigen. Ich habe ein paar einfache for Schleifen mit #pragma omp parallel for parallelisiert. Beim kompilieren erhalte ich aber nun Fehlermeldungen.

/home/mkan/workspace/ImageCapture/Source/ABSGUIBase/GUIHelper.h:306: undefined reference to `omp_get_thread_num'
/home/mkan/workspace/ImageCapture/Source/ABSGUIBase/GUIHelper.h:305: undefined reference to `GOMP_parallel_start'
/home/mkan/workspace/ImageCapture/Source/ABSGUIBase/GUIHelper.h:305: undefined reference to `GOMP_parallel_end'

Code: Alles auswählen

#include "omp.h"
....
QString ompString = QString("Number of OpenMP Threads: %1").arg(omp_get_num_threads());
qDebug(ompString.toAscii().data());
....
#pragma omp parallel for
for(int i = 0; i < sampleCount; i++)
  source16[i] = bitMask & (source16[i] >> bitshift);
omp.h habe ich includiert.

Im .pro file QMAKE_CXXFLAGS += -fopenmp hinzugefügt.

Kompiler ist der gcc 4.4.4 der Eigentlich openMP unterstützen sollte.

Ich habe auch einmal die /usr/lib/libgomp.so.1 includiert, dann kompiliert er zwar, zeigt mir auf meinem Quad Core aber nur bei omp_get_num_threads() nur einen Thread.
Wäre nett wenn mir jemand hilft wo mein Denkfehler liegt.

Gruß
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Die libopenmp.so includiert man auch nicht die linkt man!
Das machst du mit "LIBS += -lopenmp" in deinem .pro
Halcom
Beiträge: 13
Registriert: 11. Mai 2007 09:01

Beitrag von Halcom »

Vielen dank erst mal.

Ich meinte natürlich linken.

Das klingt sehr vielversprechend, leider findet er die bei mir nicht.

/usr/bin/ld: cannot find -lopenmp
collect2: ld returned 1 exit status
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Halcom hat geschrieben:Das klingt sehr vielversprechend, leider findet er die bei mir nicht.

/usr/bin/ld: cannot find -lopenmp
collect2: ld returned 1 exit status
Das lag an meiner Erwartungshaltung beim Lesen ;)
Ich habe "libopenmp" erwartet zu lesen, daweil heißt die Lib "libgomp".
Du musst natürlich gegen die Lib linken, welche deine Symbole entählt.
Also LIBS += -lgomp, wenn libgomp.so diejenige ist welche.
Halcom
Beiträge: 13
Registriert: 11. Mai 2007 09:01

Beitrag von Halcom »

Danke die war es natürlich.

Ist doch im Prinzip das selbe als wenn ich LIBS += /usr/bin/libgomp.so.1 schreibe?

Leider schreibt er mir nun immer noch hin das er nur einen Thread hat.

Number of OpenMP Threads: 1
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

int omp_get_max_threads()
int omp_get_num_procs()

Doku lesen ;)
Antworten