web-dev-qa-db-fra.com

Installation d'OpenMP sur Mac OS X 10.11

Comment puis-je exécuter OpenMP sur Mac OSX 10.11 afin d’exécuter des scripts via terminal ?

J'ai installé OpenMP: brew install clang-omp.

Lorsque j'exécute, par exemple: gcc -fopenmp -o Parallel.b Parallel.c, l'expression suivante retourne: fatal error: 'omp.h' file not found

J'ai aussi essayé: brew install gcc --without-multilib mais malheureusement, ceci a finalement retourné le texte suivant (après avoir installé quelques dépendances): 

The requested URL returned error: 404 Not Found
Error: Failed to download resource "mpfr--patch"

Des solutions recommandées?

18
WΔ_

Sur un mac, la commande gcc est un lien symbolique vers Clang. Donc, en appelant gcc -fopenmp -o your_program your_program.c, vous utilisez en fait Clang, qui n’a pas jusqu’à présent pris en charge OpenMP.

Les versions plus récentes de Clang prennent en charge OpenMP selon this post (où vous pouvez également trouver des instructions sur la manière de le configurer).

Par contre, si vous voulez toujours utiliser gcc, je peux vous guider à travers les étapes qui ont fonctionné pour moi.

  1. Installez gcc avec infusion. La commande que vous avez utilisée devrait fonctionner: brew install gcc --without-multilib

    Sinon, si brew dit que gcc est déjà installé, vous pouvez essayer brew reinstall gcc --without-multilib

    Comme vous l'avez peut-être noté, si vous ne spécifiez pas --without-multilib brew, vous êtes averti qu'OpenMP risque de ne pas fonctionner. 

  2. Trouvez l'emplacement du gcc nouvellement installé. Brew ajoute le numéro de version à gcc afin qu'il ne soit pas en conflit avec celui installé par les outils de ligne de commande. Vous trouverez le lien symbolique dans usr/local/bin. Dans mon cas, c'est usr/local/bin/gcc-5. Si vous cliquez avec le bouton droit de la souris et choisissez "Afficher l'original", l'exécutable gcc-5 doit s'afficher dans /usr/local/Cellar/gcc/5.3.0/bin/gcc-5 (les numéros de version peuvent être différents).

  3. Vous devez maintenant en informer votre système. Lorsque vous appelez un compilateur, votre bash examinera /usr/bin par défaut et non /usr/local/bin. Vous devez ajouter ce répertoire à votre $ PATH. Cela peut être facilement fait avec la commande:

    PATH=/usr/local/bin:$PATH

  4. Maintenant, vous devriez pouvoir compiler avec OpenMP activé en utilisant:

    gcc-5 -fopenmp -o your_program your_program.c

    Remarque: gcc-5 est la version que j'ai installée, la vôtre peut différer.

36
Alejandro Daniel Noel
  • installer clang-omp

    brew install clang-omp
    
  • assurez-vous que vous utilisez l'outil de ligne de commande xcode

    xcode-select --install
    
  • J'ai eu une erreur lors de l'exécution d'un exemple de code openmp

    /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);
    
  • Supprimez simplement un espace présent entre __ et KAI du fichier

  • Maintenant, utilisez la commande

    clang-omp -fopenmp helloopenmp.c
    

    et lancez le code suivant

    #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());
    }
    
  • Vous devriez obtenir une sortie semblable à celle-ci

    Hello from thread 3, nthreads 4
    Hello from thread 2, nthreads 4
    Hello from thread 0, nthreads 4
    Hello from thread 1, nthreads 4
    
  • A travaillé sur OS X 10.11.3 et avec la mise à jour de la préparation du 18 février 2016

13
prakharjain

macOS High Sierra version 10.13.6 (17G65)

1. Installez gcc

brew reinstall gcc --without-multilib

2. Compiler

gcc-8 -Wall -fopenmp your-parallel-program.c

Notez que le fichier gcc-8 regarde l'installation de la version version, le vôtre peut être gcc-7 ou 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

C'est tout!

3
  1. Installez gcc en utilisant brew.

    brew install gcc
    
  2. Vérifiez que gcc est installé.

    $which g++-7
    /usr/local/bin/g++-7
    
  3. Changer le compilateur cmake cxx.

    cmake -DCMAKE_CXX_COMPILER=g++-7
    make
    

Peut-être que cela vous aidera.

1
Javan You
brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 .. 
make -j 
0
Adrian Leo

Après avoir installé gcc:

brew install gcc --without-multilib

et exportation PATH:

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

Vous devrez peut-être exporter CC, ce qui fonctionne pour moi:

export CC=/usr/local/bin/gcc

Ceci peut-être gcc-7, ou autre chose.

0
navins