Wie kann ich OpenMP auf Mac OSX 10.11 zum Laufen bringen, damit ich Skripte ausführen kann über Klemme?
Ich habe OpenMP installiert: brew install clang-omp.
Wenn ich z.B. laufe: gcc -fopenmp -o Parallel.b Parallel.c der folgende Ausdruck gibt zurück: fatal error: 'omp.h' file not found
Ich habe auch versucht: brew install gcc --without-multilib aber leider hat dies schließlich Folgendes zurückgegeben (nachdem zuerst einige Abhängigkeiten installiert wurden):
The requested URL returned error: 404 Not Found
Error: Failed to download resource "mpfr--patch"
Irgendwelche empfohlenen Workarounds?
Mögliches Duplikat von Fehler beim Aktivieren von openmp – “ld: library not found for -lgomp” und Clang-Fehler
– Benutzer3528438
1. Februar 2016 um 16:02 Uhr
Ich hatte dieses Problem kürzlich und habe es durch Neuinstallation von clang-omp behoben.
– Jeff Hammond
2. Februar 2016 um 4:48 Uhr
Ähm, wenn Sie clang-omp wollen, müssen Sie es aufrufen und nicht GCC
So zwingen Sie Apples Clang, OpenMP zu unterstützen: stackoverflow.com/a/47230419/3419533
– Alexej Batjew
27. Dezember 2017 um 18:49 Uhr
Alejandro Daniel Noël
Auf einem Mac ist der Befehl gcc ein symbolischer Link zu Clang. Also per Anruf
gcc -fopenmp -o your_program your_program.c
Sie verwenden tatsächlich Clang, das bisher keine integrierte Unterstützung für OpenMP hatte.
Die neueren Versionen von Clang unterstützen OpenMP laut Dies post (dort finden Sie auch Anweisungen zur Einrichtung).
Wenn Sie jedoch weiterhin gcc verwenden möchten, kann ich Sie durch die Schritte führen, die für mich funktioniert haben.
gcc mit brew installieren. Der von Ihnen verwendete Befehl sollte funktionieren:
brew install gcc --without-multilib
Wenn Brew sagt, dass gcc bereits installiert ist, können Sie es alternativ versuchen
brew reinstall gcc --without-multilib
Wie Sie vielleicht bemerkt haben, wenn Sie es nicht angeben --without-multilib brew warnt Sie, dass OpenMP möglicherweise nicht funktioniert.
Suchen Sie den Speicherort des neu installierten gcc.
Brew hängt die Versionsnummer an gcc an, damit sie nicht mit der von Command Line Tools installierten kollidiert. Sie finden den Symlink in usr/local/bin.
In meinem Fall ist es
usr/local/bin/gcc-5
Wenn Sie mit der rechten Maustaste klicken und wählen “Original zeigen„Das soll es zeigen gcc-5 ausführbar in /usr/local/Cellar/gcc/5.3.0/bin/gcc-5 (Versionsnummern können abweichen).
Jetzt müssen Sie es Ihrem System mitteilen:
Wenn Sie einen Compiler aufrufen, wird Ihre Bash nachsehen /usr/bin standardmäßig und nicht in /usr/local/bin. Sie müssen dieses Verzeichnis zu Ihrem hinzufügen $PFAD.
Das geht ganz einfach mit dem Befehl:
PATH=/usr/local/bin:$PATH
Jetzt sollten Sie in der Lage sein, mit aktiviertem OpenMP zu kompilieren, indem Sie Folgendes verwenden:
gcc-5 -fopenmp -o your_program your_program.c
Anmerkung:gcc-5 ist die Version, die ich installiert habe, Ihre kann abweichen.
Funktioniert bei mir mit der aktuellen Version gcc-6. Wenn Sie Homebrew zum ersten Mal installieren, sollte die $PATH-Modifikation nicht in Ihre .bashrc-Datei geschrieben werden?
– APaul
31. Januar 2017 um 18:04 Uhr
Wo sind die Dateien? Ich erhalte eine Fehlermeldung, die besagt, dass keine Eingabedatei vorhanden ist
– SumNeuron
17. September 2017 um 8:24 Uhr
Auf welche Dateien verweisen Sie auf @SumNeuron? Wenn Sie die in der letzten Codezeile meinen, habe ich die erste angegeben. “Parallel” ist der Name der ausführbaren Ausgabedatei und “Parallel.c” ist die zu kompilierende Quelle. Ihr Terminal muss sich im selben Verzeichnis wie die Datei „Parallel.c“ befinden, sonst findet es sie nicht.
– Alejandro Daniel Noël
18. September 2017 um 5:39 Uhr
@AlejandroDanielNoel Meine Frage ist, woher Sie diese Dateien bekommen, da sie nicht mit gcc oder llvm installiert zu sein scheinen
– SumNeuron
18. September 2017 um 7:45 Uhr
Habe gerade diese Schritte ausprobiert und folgende Benachrichtigung von Homebrew erhalten: Warning: gcc: this formula has no --without-multilib option so it will be ignored!
– Alex Johnson
3. April 2018 um 19:18 Uhr
Pracharjain
clang-omp installieren
brew install clang-omp
Stellen Sie sicher, dass Sie das xcode-Befehlszeilentool verwenden
xcode-select --install
Ich hatte tatsächlich einen Fehler beim Ausführen eines OpenMP-Beispielcodes
/usr/local/opt/libiomp/include/libiomp/omp.h:139:21: error: expected ';' after top level declarator extern void __ KAI_KMPC_CONVENTION kmp_set_stacksize_s (size_t);
Entfernen Sie einfach ein Leerzeichen zwischen __ und KAI aus der Datei
Verwenden Sie nun den Befehl
clang-omp -fopenmp helloopenmp.c
und führen Sie den folgenden Code aus
#include <omp.h>
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
}
Sie sollten eine ähnliche Ausgabe erhalten
Hello from thread 3, nthreads 4
Hello from thread 2, nthreads 4
Hello from thread 0, nthreads 4
Hello from thread 1, nthreads 4
Funktioniert auf OS X 10.11.3 und mit Brew-Update vom 18. Februar 2016
clang-omp wurde in Commit c57e307 aus Homebrew/Core gelöscht: clang-omp: Migration nach Boneyard Die Funktionalität ist jetzt als Teil von LLVM in Homebrew verfügbar.
– Salat
17. April 2017 um 21:31 Uhr
macOS High Sierra-Version 10.13.6 (17G65)
1. gcc installieren
brew reinstall gcc --without-multilib
2. Kompilieren
gcc-8 -Wall -fopenmp your-parallel-program.c
Beachten Sie die gcc-8 beobachten Sie die Ausführung brew installiert, kann Ihre sein gcc-7 oder gcc-9
Keine Notwendigkeit hinzuzufügen --without-multilib 2019 nicht mehr.
– Louis Yang
7. Januar 2019 um 10:07 Uhr
ungültige Option: –ohne-multilib
– Skyy2010
13. März 2019 um 14:18 Uhr
ESbros
Standardmäßig verwendet GCC die Clang-Verteilung. Installieren Sie GCC mit Homebrew. Nach der Installation können Sie den Code kompilieren Angabe der GCC-Version installiert von Homebrew und Hinzufügen des OpenMP-Flags. Ein hello_world-Beispiel ist unten dargestellt:
Mögliches Duplikat von Fehler beim Aktivieren von openmp – “ld: library not found for -lgomp” und Clang-Fehler
– Benutzer3528438
1. Februar 2016 um 16:02 Uhr
Ich hatte dieses Problem kürzlich und habe es durch Neuinstallation von clang-omp behoben.
– Jeff Hammond
2. Februar 2016 um 4:48 Uhr
Ähm, wenn Sie clang-omp wollen, müssen Sie es aufrufen und nicht GCC
– Jeff Hammond
2. Februar 2016 um 4:49 Uhr
Ich versuche es gerade so: github.com/DmitryUlyanov/Multicore-TSNE/issues/1
– O.rka
19. Mai 2017 um 20:01 Uhr
So zwingen Sie Apples Clang, OpenMP zu unterstützen: stackoverflow.com/a/47230419/3419533
– Alexej Batjew
27. Dezember 2017 um 18:49 Uhr