AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1522018
Accepted
Adolph Beyerlein
Adolph Beyerlein
Asked: 2024-07-30 09:20:33 +0800 CST2024-07-30 09:20:33 +0800 CST 2024-07-30 09:20:33 +0800 CST

Problemas na aplicação do método da função de Greens para calcular energias de troca com café expresso quântico e códigos mestres de troca

  • 772

Estou tentando calcular constantes de troca para compostos cristalinos de níquel (Ni) usando o método da função de Greens de Dm M. Korotin et al. Física. Rev. B 91, 224405 (2015). Isso é conseguido com uma combinação de café expresso quântico e um mestre de trocas de codinome. No entanto, quando eu baixo o exchanges-master de https://github.com/dkorotin/exchanges e o coloco em meu diretório inicial, o exchanges-master não irá compilar (usando command make) devido a erros como undefined reference to ‘omp_get_thread_num’.

Para mais detalhes, o computador que estou usando é novo:

  • É uma inveja da HP com um núcleo Intel i9 e 64 Gbytes de memória.
  • O código gfortran é a versão mais recente GNU Fortran (Ubuntu11.4.0-1ubuntu1-22.04) 11.4.0).
  • As versões mais recentes do lapack e blas também estão instaladas.

A única preparação que é instruída a fazer no diretório exchanges-master é designar gfortran e os pacotes lapack no Makefile usando o editor vim. Depois de fazer isso, está-se pronto para compilar com make, que supostamente produzirá exchanges.xos cálculos da função de Greens. No entanto, em vez disso, obtém-se:

(i) gfortran   -o exchanges.x exchanges.o parameters.o general.o iomodule.o find_nnbrs.o green_function.o -L/usr/local/opt/lapack/lib/ -llapack -lblas
(ii) /usr/bin/ld: exchanges.o: in function `MAIN__':
(iii) /mnt/c/Users/adolp/exchanges-master/exchanges.f90:61: undefined reference to `omp_get_max_threads_'
 `compute_g_._omp_fn.0':
(iv) /mnt/c/Users/adolp/exchanges-master/green_function.f90:23: undefined reference to `omp_get_num_threads'
(v) /usr/bin/ld: /mnt/c/Users/adolp/exchanges-master/green_function.f90:23: undefined reference to `omp_get_thread_num'
(vi) /usr/bin/ld: /mnt/c/Users/adolp/exchanges-master/green_function.f90:23: undefined reference to `GOMP_barrier'
(vii)/usr/bin/ld: green_function.o: in function `compute_g_':
(viii) /mnt/c/Users/adolp/exchanges-master/green_function.f90:21: undefined reference to `GOMP_parallel'
collect2: error: ld returned 1 exit status
make: *** [Makefile:28: exchanges.x] Error 1
Note the compilation is OK with our choices made in the Makefile (see line (i) above).  The difficulty begins when it compiles the greens function calculation with 
‘/usr/bin/id: exchanges.oi in function  ‘MAIN_’

Todos os erros estão relacionados ao OMP e GOMP. Pode-se primeiro pensar que a solução é compilar o Quantum expresso desabilitando o processamento paralelo e o openmp. No entanto, compilei o QE de todas as maneiras. O 'exchanges-master' parece ser bastante independente em operação do expresso quântico. A única função do QE é fornecer os dados de entrada para exchanges.x, que é o pacote de trabalho obtido do exchanges-master após sua makecompilação.

Os arquivos onde ocorrem os erros estão no diretório exchanges-master e sua localização (ou seja, linha do arquivo) é fornecida com os erros listados em (ii) a (viii) acima. Como esses arquivos são necessários para realizar os cálculos, não se pode evitar os comandos dados em seu código relacionados ao OMP e GOMP. Parece que a única coisa que se pode fazer é definir bem o seu uso. No entanto, não há instruções sobre como fazer isso. Outra solução possível e talvez mais provável seria usar versões anteriores do exchanges-master que provavelmente não faziam referência ao OMP e ao GOMP. No entanto, as versões anteriores não estão listadas no Github.

compiling
  • 1 1 respostas
  • 221 Views

1 respostas

  • Voted
  1. Best Answer
    steeldriver
    2024-07-30T09:57:51+08:002024-07-30T09:57:51+08:00

    Parece ser suficiente adicionar -fopenmpao comando do vinculador, bem como ao comando do compilador - adicionando-o à LIBSvariável (como nos parâmetros sugeridos em #gfortan Mac Os) ou - mais formalmente correto, eu acho - por meio da LFLAGSvariável:

    # gfortran linux
     FC = gfortran 
     FFLAGS = -fopenmp -Og -O2 -g
     LIBS = -llapack -lblas
     LFLAGS = -fopenmp
    

    (você não precisa -L/usr/local/opt/lapack/lib/se tiver instalado o LAPACK/BLAS dos repositórios do Ubuntu). De man gfortran(ênfase minha):

           -fopenmp
               Enable   the  OpenMP  extensions.   This  includes  OpenMP  "!$omp"
               directives in free form and "c$omp", *$omp and  "!$omp"  directives
               in  fixed form, "!$" conditional compilation sentinels in free form
               and "c$", "*$" and "!$" sentinels in fixed form, and  when  linking
               arranges  for  the  OpenMP  runtime  library  to be linked in.  The
               option -fopenmp implies -frecursive.

    Então

     $ make
    gfortran  -c -fopenmp -Og -O2 -g -o parameters.o parameters.f90
    gfortran  -c -fopenmp -Og -O2 -g -o general.o general.f90
    gfortran  -c -fopenmp -Og -O2 -g -o iomodule.o iomodule.f90
    gfortran  -c -fopenmp -Og -O2 -g -o find_nnbrs.o find_nnbrs.f90
    gfortran  -c -fopenmp -Og -O2 -g -o green_function.o green_function.f90
    gfortran  -c -fopenmp -Og -O2 -g -o exchanges.o exchanges.f90
    gfortran  -fopenmp -o exchanges.x exchanges.o parameters.o general.o iomodule.o find_nnbrs.o green_function.o -llapack -lblas
     $ 
     $ ./exchanges.x
    
         ------------------------------------------------------------------
                               Program EXCHANGES                           
          for calculation of exchange parameters of the Heisenberg model.  
    
         Please cite "D. M. Korotin et al., Phys. Rev. B 91, 224405 (2015)"
             in publications or presentations arising from this work.      
         ------------------------------------------------------------------
    
            We are using the model with the exchange term defined as:      
    
                            H = \sum_ij J_{ij} e_i e_j,                    
    
          where e_i,j are unit vectors and sum runs once over ions pairs   
    
         ------------------------------------------------------------------
    
    
         Running in   1 threads
    
    ^C
    
    • 4

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve