INSTALAÇÃO DO MODELO CAM3.1 NCAR

17 views
Skip to first unread message

Regis Grundig

unread,
Aug 1, 2019, 10:01:13 PM8/1/19
to CLIMABR


 












INSTALAÇÃO DO MODELO CAM3.1 NCAR

MANUAL DE INSTALAÇÃO E OPERAÇÃO


Pré-requisitos

Os pré-requisitos necessários para instalação do modelo  CAM 3.0  são:


·       Sistema Operacional Linux /Unix

·       Matlab versão 2012a ou 2012b com o  pacote nctoolbox (rodará no Windows)

·       Compilador Portland ou Intel.

·       Biblioteca NETCDF versão 3.6

·       Biblioteca OPENMPI (paraleleismo)


 


Estrutura de diretórios e o problema do paralelismo

 

Para fins didáticos, utiliza-se a seguinte estrutura de diretórios numa conta chamada cam em uma máquina do sistema Linux/Unix.

/u/cam/originais

/u/cam/MODELO1

/u/cam/MODELO2

/u/cam/MODELO3

/u/cam/MODELO4

/u/cam/INTEL  ou  /u/cam/PGI  (conforme escolha do compilador ou ambos)

 

No diretório originais armazena-se os códigos fontes dos modelos e demais pacotes. No diretório MODELO1 instala-se o modelo em sua forma serial, no MODELO2 instala-se o modelo na forma paralela para sistemas com memória distribuída (DM) e no MODELO3 instala-se a forma paralela para memória compartilhada (SMP). 

Um sistema de memória compartilhada (SMP) é um computador com  vários processadores e que compartilham uma única memória.  Um sistema de memória distribuída é um sistema onde vários processadores acessam cada um sua memória. Hoje em dia é mais comum ter sistemas híbridos (SMP+DM) em clusters de computadores, onde cada nó possui vários processadores que acessam uma mesma memória no nó, mas existem outros nós que possuem sua própria memória. Balancear o uso destas ferramentas é o grande objetivo de quem trabalha com aplicações de alta capacidade computacional.

Instalação dos sistemas primários 

 

Antes da instalação do modelo, necessita-se a instalação dos pacotes na seguinte ordem:

·       Compilador Fortran/CC/C++

·       Biblioteca NETCDF compilada com o compilador acima.

·       Biblioteca OPENMPI compilada com o compilador acima.

O compilador deve ser escolhido aquele que possui suporte para o modelo.  Para fins didáticos, escolheu-se o  compilador INTEL para  as atividades.   Tudo que for compilar com o compilador, deverá estar dentro do diretório /u/cam/INTEL.

Escolhido o compilador e instalado corretamente,  baixe os pacotes das bibliotecas nos seguintes lugares e armazene-as no diretório /u/cam/originais.

NETCDF : 

Site:  http://www.unidata.ucar.edu/downloads/netcdf/index.jsp

Baixar versão 3.6

OPENMPI

http://www.open-mpi.org/

Baixar versão mais atual.

Nota Importante:  Tanto o netcdf quanto o openmpi podem estar instalados em seu sistema, contudo compilados para Gnu Fortran. Se não for utilizar o GNU Fortran, vai ter que recompilar tanto o netcdf quanto o Openmpi.

 

A instalação  deverá ser realizada  de dentro do diretório originais mas a instalação será feita no diretório /u/cam/INTEL.

 

Após a instalação do  modelo , criar o ambiente de compilação.  Edite o arquivo .bashrc  no diretório /u/cam com as seguintes linhas:

 

 

export CSMDATA=/u/CAM/MODELO2/

source  /u/cam/INTEL/bin/ifortvars.sh intel64

source  /u/cam/INTEL/bin/iccvars.sh intel64

export CC=icc

export F77=ifort

export FC=ifort

export FCFLAGS=-O3

export CXX=icpc

export INC_MPI=/u/cam/INTEL/mpi/include

export LIB_MPI=/u/cam/INTEL/mpi/lib

export  PATH=$PATH:/u/cam/INTEL/mpi/bin

export  LD_LIBRARY_PATH=/u/cam/INTEL/mpi/lib:/u/cam/INTEL/lib:

 

 

Obviamente para outros compiladores deve-se alterar as opções e diretórios.

 

Instalação do netcdf:

 

Descompacte o arquivo baixado e entre no diretório resultante. Digite o seguinte comando:

./configure --prefix=/u/cam/INTEL/NETCDF3/

Make all install

 

Instalação do openmpi:

 

Descompacte o arquivo baixado e entre no diretório resultante. Digite o seguinte comando:

./configure --prefix=/u/cam/INTEL/mpi

 

Adquirir o código fonte do modelo

 

O código fonte do modelo pode ser baixado  no seguinte site:

 

http://www.cesm.ucar.edu/models/atm-cam/download/

 

Os arquivos devem ser baixados para o diretório originais.

Os arquivos a serem baixados são:

 

http://www.cesm.ucar.edu/models/atm-cam/download/cam3.1/cam3.1.p2_source_code.tar.gz

http://www.cesm.ucar.edu/models/atm-cam/download/cam3.1/cam3.1_forall_datasets.tar.gz

http://www.cesm.ucar.edu/models/atm-cam/download/cam3.0/cam3.0_landsurf_datasets.tar.gz

 

Baixar tudo ou somente a resolução que for usar:

 

http://www.cesm.ucar.edu/models/atm-cam/download/cam3.1/cam3.1_64x128_T42_datasets.tar.gz

http://www.cesm.ucar.edu/models/atm-cam/download/cam3.1/cam3.1_48x96_T31_datasets.tar.gz

http://www.cesm.ucar.edu/models/atm-cam/download/cam3.1/cam3.1_128x256_T85_datasets.tar.gz

 

Para fins didáticos,  instalara-se a versão  de resolução T85 do modelo.  

Instalação do Modelo versão serial

 

Justificativas

 

A instalação da versão serial não é necessária para a operação. Contudo, em sistemas onde nunca foi instalado o modelo é aconselhável a instalação serial  pois podem surgir problemas na instalação das versões em paralelo que não são problemas do paralelismo. 

Por outro lado, é bom se ter a versão serial para avaliar o desempenho do modelo. Por exemplo, roda-se por um determinado tempo em serial. A versão paralela deve rodar em menor tempo do que a  versão serial.  O índice de desempenho será quanto menor esse tempo, melhor o desempenho. Caso o tempo, em paralelo aumente é por que alguma coisa está errada com o  modelo ou ele chegou a um limite do paralelismo.

Outro teste de desempenho é para char o número de escalabilidade do sistema. Roda-se em serial um caso teste.  Depois roda-se me paralelo com 2, 4, n processadores e verifica-se a escalabilidade do sistema, ou seja, se o desempenho aumenta ou diminui com o número de processadores. Isso evita que se utilize processadores a mais ou a menos de um sistema computacional.

Instalação serial.

 

Vá até o diretório /u/cam/MODELO1 e descompacte os arquivos do CAM que estão em /u/cam/originais através do comando gzip

gzip -xzvf  /u/cam/originais/<arquivo do cam>

Descompactados, agora digite:

export CSMDATA=/u/CAM/MODELO1/

./cam1/models/atm/cam/bld/configure -i -x   -cam_exe cam_intel_serial -nosmp -nospmd -fc ifort  -cc icc -res 128x256 -target_os linux_intel 

Pressione [enter] em todas as questões.

Depois digite:

gmake clean

gmake

Se não houver erros devido a problemas de pré-requisitos , modelo foi compilado.

 

Instalação do Modelo em paralelo

 

Instalação  tipo memória distribuída

 

Execute a instalação do modelo em serial.

Antes de executar o gmake, altere o arquivo Makefile  conforme abaixo:

# Make macros for CAM.

 

UNAMES       :=

ROOTDIR      := /u/CAM/MODELO2/cam1

EXENAME      := cam_intel_DM

MODEL_EXEDIR := /u/cam/MODELO2

INC_NETCDF   := /u/cam/INTEL/netcdf3/include

LIB_NETCDF   := /u/cam/INTEL/netcdf3/lib

MOD_NETCDF   :=

INC_MPI      := /u/cam/INTEL/mpi/include

LIB_MPI      := /u/cam/INTEL/mpi/lib

MPI_LIB_NAME := mpi

ESMF_ROOT    := /u/CAM/MODELO2/cam1/models/utils/esmf

ESMF_BLD     := /u/CAM/MODELO2/esmf

DEBUG        := FALSE

SMP          := TRUE

NESTED_OMP   := FALSE

USER_FC      := mpif90

USER_CC      := mpicc

USER_CPPDEFS :=

USER_CFLAGS  :=

USER_FFLAGS  :=

F_OPTIMIZATION_OVERRIDE :=

USER_LDFLAGS :=

 

 

O próximo bloco fica na linha: 556

ifeq ($(findstring mpif90,$(FC)),mpif90)   --->  Trocque ifort -> por mpif90

  ESMF_ARCH   := linux_intel

  mod_path    := -I$(ESMF_MOD)/$(ESMF_ARCH) -I$(MOD_NETCDF)

  FFLAGS      := $(cpp_path) $(mod_path) $(CPPDEF) -132 -autodouble -ftz -g

  SPEC_FFLAGS := $(FFLAGS)

  LDFLAGS     :=

  FREEFLAGS   := -FR

  ifeq ($(DEBUG),TRUE)

    FFLAGS += -CB

  else

    # Check for override of default Fortran compiler optimizations

    ifeq ($(F_OPTIMIZATION_OVERRIDE),$(null))

      FORTRAN_OPTIMIZATION := -O2

    endif

    FFLAGS += $(FORTRAN_OPTIMIZATION)

  endif

  ifeq ($(SMP),TRUE)

    FFLAGS +=    (retire o openmp)

    LDFLAGS +=  (retire o openmp)

  endif

endif

 

 

 

Assim feitas modificações, execute :

gmake clean

gmake

Se não houver erros, o modelo foi compilado com sucesso.

Instalação  tipo memória compartilhada (SMP)

 

Execute a instalação do modelo em serial.

Antes de executar o gmake, altere o arquivo Makefile  conforme abaixo:

# Make macros for CAM.

 

UNAMES       :=

ROOTDIR      := /u/CAM/MODELO2/cam1

EXENAME      := cam_intel_DM

MODEL_EXEDIR := /u/cam/MODELO2

INC_NETCDF   := /u/cam/INTEL/netcdf3/include

LIB_NETCDF   := /u/cam/INTEL/netcdf3/lib

MOD_NETCDF   :=

INC_MPI      := /u/cam/INTEL/mpi/include

LIB_MPI      := /u/cam/INTEL/mpi/lib

MPI_LIB_NAME := mpi

ESMF_ROOT    := /u/CAM/MODELO2/cam1/models/utils/esmf

ESMF_BLD     := /u/CAM/MODELO2/esmf

DEBUG        := FALSE

SMP          := TRUE

NESTED_OMP   := FALSE

USER_FC      := ifort

USER_CC      := ICC

USER_CPPDEFS :=

USER_CFLAGS  :=

USER_FFLAGS  :=

F_OPTIMIZATION_OVERRIDE :=

USER_LDFLAGS :=

 

O próximo bloco fica na linha: 556

ifeq ($(findstring mpif90,$(FC)),mpif90)   --->  Trocque ifort -> por mpif90

  ESMF_ARCH   := linux_intel

  mod_path    := -I$(ESMF_MOD)/$(ESMF_ARCH) -I$(MOD_NETCDF)

  FFLAGS      := $(cpp_path) $(mod_path) $(CPPDEF) -132 -autodouble -ftz -g

  SPEC_FFLAGS := $(FFLAGS)

  LDFLAGS     :=

  FREEFLAGS   := -FR

  ifeq ($(DEBUG),TRUE)

    FFLAGS += -CB

  else

    # Check for override of default Fortran compiler optimizations

    ifeq ($(F_OPTIMIZATION_OVERRIDE),$(null))

      FORTRAN_OPTIMIZATION := -O2

    endif

    FFLAGS += $(FORTRAN_OPTIMIZATION)

  endif

  ifeq ($(SMP),TRUE)

    FFLAGS +=    (coloque o openmp)

    LDFLAGS +=  (coloque o openmp)

  endif

endif

 

 

Assim feitas modificações, execute :

gmake

Se não houver erros, o modelo foi compilado com sucesso.

Instalação  tipo híbrida  (SMP+DM)

 

Execute a instalação do modelo em serial.

Antes de executar o gmake, altere o arquivo Makefile  conforme abaixo:

 

# Make macros for CAM.

 

UNAMES       :=

ROOTDIR      := /u/CAM/MODELO2/cam1

EXENAME      := cam_intel_DM

MODEL_EXEDIR := /u/cam/MODELO3

INC_NETCDF   := /u/cam/INTEL/netcdf3/include

LIB_NETCDF   := /u/cam/INTEL/netcdf3/lib

MOD_NETCDF   :=

INC_MPI      := /u/cam/INTEL/mpi/include

LIB_MPI      := /u/cam/INTEL/mpi/lib

MPI_LIB_NAME := mpi

ESMF_ROOT    := /u/CAM/MODELO3/cam1/models/utils/esmf

ESMF_BLD     := /u/CAM/MODELO3/esmf

DEBUG        := FALSE

SMP          := TRUE

NESTED_OMP   := FALSE

USER_FC      := mpif90

USER_CC      := mpicc

USER_CPPDEFS :=

USER_CFLAGS  :=

USER_FFLAGS  :=

F_OPTIMIZATION_OVERRIDE :=

USER_LDFLAGS :=

 

O próximo bloco fica na linha: 556

ifeq ($(findstring mpif90,$(FC)),mpif90)   --->  Trocque ifort -> por mpif90

  ESMF_ARCH   := linux_intel

  mod_path    := -I$(ESMF_MOD)/$(ESMF_ARCH) -I$(MOD_NETCDF)

  FFLAGS      := $(cpp_path) $(mod_path) $(CPPDEF) -132 -autodouble -ftz -g

  SPEC_FFLAGS := $(FFLAGS)

  LDFLAGS     :=

  FREEFLAGS   := -FR

  ifeq ($(DEBUG),TRUE)

    FFLAGS += -CB

  else

    # Check for override of default Fortran compiler optimizations

    ifeq ($(F_OPTIMIZATION_OVERRIDE),$(null))

      FORTRAN_OPTIMIZATION := -O2

    endif

    FFLAGS += $(FORTRAN_OPTIMIZATION)

  endif

  ifeq ($(SMP),TRUE)

    FFLAGS +=    (coloque o openmp)

    LDFLAGS +=  (coloque o openmp)

  endif

endif

Assim feitas modificações, execute :

Gmake clean

gmake

Se não houver erros, o modelo foi compilado com sucesso.

 

Execução do modelo

 

No caso serial:

./cam_serial  < namelist 

No caso em paralelo:

mpirun -np  n   ./cam_paralelo  < namelist 

onde n é o número de processadores que deve seguir : n deve ser sempre par. 

 

 

INSTALAÇÃO DO MODELO CAM3.docx
Reply all
Reply to author
Forward
0 new messages