Flip entre o openmpi e o mpich como padrão usando o terminal linux

1

Eu preciso executar um código usando mpicc (gcc paralelo). Um servidor tem dois pacotes de mpicc instalados, a saber OPENMPI e MPICH at /usr/local/OPENMPI e /usr/local/MPICH , respectivamente. Por padrão mpicc de OPENMPI está sendo usado

which mpicc

mostra /usr/local/OPENMPI/bin/mpicc

Meu código é construído para o MPICH. Em vez de chamar mpicc de MPICH usando o caminho completo todas as vezes. Existe uma maneira fácil de tornar /usr/local/MPICH/bin/mpicc como padrão até que eu termine o meu trabalho e depois mude de volta para /usr/local/OPENMPI/bin/mpicc

    
por Jithu 26.12.2017 / 12:48

1 resposta

1

Acho que alias funcionaria perfeitamente para sua situação. Você pode adicionar o seguinte ao seu .profile ou .bash_profile :

alias mympicc='/usr/local/MPICH/bin/mpicc'

Uma solução mais permanente (mas ainda reversível) é adicionar a localização MPICH ao seu caminho ANTES da localização OPENMPI . Feito facilmente adicionando o seguinte, seu .profile ou .bash_profile :

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

Quando você digita um comando como mpicc , se não estiver em seu diretório atual, seu shell pesquisará o PATH , em ordem, portanto, é importante que posição você coloque para definir precedência.

Se você quiser ter um tipo de switch que possa ser usado para alternar facilmente entre os dois, poderá fazer algum tipo de função e adicioná-lo ao seu .bashrc (ou .profile / .bash_profile ? ):

use_mpicc () {
    shopt -s nocasematch
    case "$1" in
        mpich) export PATH="...:/usr/local/MPICH/bin:/usr/local/OPENMPI/bin:..." ;;
        openmpi) export PATH="...:/usr/local/OPENMPI/bin:/usr/local/MPICH/bin:..." ;;
        *) return 1 ;;
    esac
    shopt -u nocasematch
}

Neste exemplo, usei reticências no lugar do caminho real. Eu recomendo, na verdade, especificar o caminho completo nesta função (se usado) em vez de usar o método: PATH="Stuff_I_Need_added:$PATH" , pois isso só vai aumentar o seu PATH toda vez que você chamar a função, fazendo com que ela se torne obnóxiamente longa. / p>

Você chamaria assim:

$ use_mpicc mpich
$ # OR
$ use_mpicc openmpi

Mais informações sobre a configuração do seu caminho

    
por 26.12.2017 / 13:09

Tags