OpenMP unter Mac OS X 10.11 installieren

Lesezeit: 5 Minuten

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

    – 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

Benutzer-Avatar
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.

  1. 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.

  2. 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).

  3. 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
    
  4. 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


Benutzer-Avatar
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


==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz
🍺 /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB

Das ist es!

  • 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

Benutzer-Avatar
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:

  1. brauen gcc installieren

  2. braue installiere libomp

  3. brauen info gcc

    gcc: stabil 10.2.0 (abgefüllt), KOPF

    GNU-Compiler-Sammlung

  4. export OMP_NUM_THREADS=8

  5. erstelle hallo.c

#include <stdio.h>
#include <omp.h>
int main(void){
    #pragma omp parallel 
    {
        printf("Hello World! \n");
    }

    return 0;
}
  1. gcc-10 -fopenmp hallo.c -o hallo
  2. Ausführen: ./Hallo
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!

Benutzer-Avatar
Javan Sie

  1. Installieren Sie gcc mit brew.

    brew install gcc
    
  2. Überprüfen Sie, ob gcc installiert ist.

    $which g++-7
    /usr/local/bin/g++-7
    
  3. Cmake cxx-Compiler ändern.

    cmake -DCMAKE_CXX_COMPILER=g++-7
    make
    

Vielleicht hilft dir das weiter.

Benutzer-Avatar
Navis

Nach der Installation von gcc:

brew install gcc --without-multilib

und PATH exportieren:

export PATH=/usr/local/bin:$PATH

Möglicherweise müssen Sie CC exportieren, was für mich funktioniert:

export CC=/usr/local/bin/gcc

Das ist vielleicht gcc-7 oder was auch immer.

Benutzer-Avatar
MLavoie

brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 .. 
make -j 

1383640cookie-checkOpenMP unter Mac OS X 10.11 installieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy