Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Panel
titleBGColorlightgrey
titleECMWF related questions


Expand
titleQ. How do I get an account on the ECMWF computer system?

A. All OpenIFS users will be given full access to this website. Access to other ECMWF systems may not always be required and your needs should be discussed with the OpenIFS team or User Support. Member state users should always apply for an account via their national Met Service representative. If you want to contact ECMWF prior to applying to your national Met Service then please see this list for the appropriate ECMWF User Support contact to ask: http://www.ecmwf.int/en/computing/get-support/user-support-contact-points

If you are a user from a non ECMWF member state you should contact openifs-support@ecmwf.int to discuss your needs.


Expand
titleQ. Where can I find information about the different IFS cycles?

A. Information about the changes between IFS cycles can be found on the main website 'Evolution of the ECMWF analysis and forecast system'. The ECMWF newsletter publish details of changes to the operational system.


Expand
titleQ. I can't retrieve files from the ECMWF ftp server. I get an error: ftp:bind: Address already in use.

A. This is usually caused by a firewall at the user site blocking ftp connections. There are two types of ftp connections, so-called 'active' and 'passive'. The essential difference is that 'active' mode tries to open multiple connections to the ECMWF ftp server. This behaviour is undesirable for sites running firewalls and is usually blocked. Although passive mode ftp is usually the default, if you see this error try using the '-p' option 'ftp -p' or, if it's available the command 'pftp' which invokes a passive mode only ftp.


Expand
titleQ. I use lftp to connect to ftp.ecmwf.int but get 'Reconnecting' message repeatedly...

A. If using the 'lftp' command, this supports ftp with and without SSL (secure connection) enabled. By default, it tries to use with SSL enabled.  There are several ways around this:

1. Edit the lftp config file to permanently disable this option for all ftp connections. Use a text editor and add the following to either in either the ~/.lftprc or ~/.lftp/rc file in your home directory:

Code Block
set ftp:ssl-allow false

2. To disable SSL for a connection on the command line:

Code Block
languagebash
% lftp -e "set ftp:ssl-allow off;" ftp.ecmwf.int



Anchor
compiling
compiling

Panel
titleBGColorlightgrey
titleCompiling OpenIFS / FCM related questions


Expand
titleQ. I get the error: Can't locate Time/Piece.pm in @INC

This error occurs because some modules are missing from the perl installation on your computer. We use the FCM software to compile OpenIFS which uses Perl.  Please see the Prerequisites page for more information about this and how to resolve the error.


Expand
titleQ. I get the error: [FAIL] master.exe: target not found after an update:

 A. When compiling this error message appears:

Code Block
[FAIL] make oifs           # 94.3s
[FAIL] make                # 94.8s
[FAIL] master.exe: target not found after an update:
[FAIL] /nfs01/n02/n02/emgdc/git/openifs/make/noopt/oifs/bin/master.exe: expect target file

Although make finished, the executable file 'master.exe' was not created. This means an error occurred at the final 'linking' stage when all the compiled object files are combined to make the final executable.

To see what actually caused the problem, look in the logfile generated by the fcm make command. It will be file make/$OIFS_BUILD/.fcm-make/log. Note the '.' in front of the .fcm-make directory name. This directory is 'hidden'. e.g. If you have: OIFS_BUILD=noopt, then the log file from the build will be in make/noopt/.fcm-make/log.

If you look in the logfile, go down to the bottom and look for any errors such as 'undefined reference' which prevented the final link step. A undefined reference means a subroutine/function could not be found either because a library is not included or some code files are missing.


Expand
titleQ. The command 'fcm make' gives the error: mpif90: command not found?

A. This is because the FCM configuration files assume the use of a 'compiler wrapper' which is typically provided by MPI (e.g. OpenMPI or MPICH) installations. Make sure you have a flavour of MPI installed and you have the 'bin' directory included on your PATH environment variable. For example, on linux use 'apt-get install libopenmpi-dev' to get OpenMPI. HPC machines may require you to use a 'module' command e.g 'module load openmpi': check your local help information.


Expand
titleQ. I get this error, what does it mean? "[FAIL] cpg1c.intfb.h: missing dependency (type=include)"

A. FCM has found an include statement: "#include cpg1c.intfb.h" in the source code but can't find the source file cpg1c.F90. Make sure the file exists or FCM is configured to look at all the sources.


Expand
titleQ. When I add my own modules I get an error: bad or missing dependency...

A. FCM performs a dependency check on all the code to make sure the compilation is correct. For external libraries, such as ecCodes or MPI, we have to tell FCM they are external and not part of the OpenIFS source code. To do this, edit the file make/cfg/oifs-depend.cfg and edit these lines near the top:

Code Block
build.prop{no-dep.f.module,class} = eccodes ifcore
build.prop{no-dep.include,class} = mpif.h

These lines let FCM know that the .mod files for eccodes, ifcore (Intel debugging) and .h file for MPI should be treated as external libraries and there are no compilation dependencies on them.

To add your own, taking mod_oasis.mod as an example, add it to the list:

Code Block
build.prop{no-dep.f.module,class} = eccodes ifcore mod_oasis
build.prop{no-dep.include,class} = mpif.h



Expand
titleQ. How do I change where FCM builds the library archive (libmaster.a) file before the link stage?

A. FCM queries the TMPDIR environment variable. If set it uses that location, otherwise it defaults to /tmp. On HPC systems, /tmp may not be the best choice if it is in memory.


Expand
titleQ. What does the $HERE variable in FCM configuration files mean?

A. The $HERE variable is a special variable that FCM interprets as the directory in which the configuration file resides. Unlike most of the other variables in the FCM configuration files, $HERE cannot be overridden by an environment variable of the same name.


Expand
titleQ. How do I change the compiler used by my MPI compiler wrappers?

A. For more information on how to correctly set your environment for compiling OpenIFS, see: HowTos: How to set your user environment.

It varies depending on your MPI implementation and your local environment. As an example, for OpenMPI, set the environment variables:
export OMPI_FC=pgf90
export OMPI_CC=pgcc
to use the Portland compilers instead of the default GNU (gfortran) compilers. Check the 'man page' of the mpif90 command to see what other options are possible. Some implementations allow you to use an option -fc to set the underlying compilers.

For Intel installations there are several ways in which the compiler can be set. Normally, the mpif90 command will invoke the gfortran compiler, the mpiifort will invoke the ifort compiler and the mpifc command can be used with a specified compiler on the command line. However, this behaviour can be changed by setting environment variables which these wrapper scripts will read. For more details consult the Intel compiler documentation.

Some HPC centres provide the 'module' command for loading and unloading particular compiler suites. Consult your local documentation for more details.


Expand
titleQ. I get an error about missing shared object file: error while loading shared libraries: libmkl_intel_lp64.so: cannot open shared object file: No such file or directory.

A. This can arise with the Intel compiler. The MKL library is Intel's version of the LAPACK and BLAS libraries which should be supplied with the compiler. The .so file extension means this is a shared library found at runtime. In order to find this library, the environment variable LD_LIBRARY_PATH must be set correctly. You will need to find the location of this library and add the directory to the LD_LIBRARY_PATH. Normally this is done for you by a small script supplied with the Intel compiler script. Please check your support information.


Expand
titleQ. I get undefined references to 'dgemm_', 'dgemv_', 'sgecon_' etc.

A. These routines come from the LAPACK and BLAS libraries. You may have one or other of these libraries missing from your .cfg config (or OIFS_LAPACK_LIB environment variable). Alternately you have specific both libraries but the compiler can't find them; check the pathnames to the libraries specified on the compile link carefully.


Expand
titleQ. I get undefined references to: 'jas_stream_memopen', 'jpc_decode', 'jas_matrix_create', 'jas_image_destroy', 'jpc_decode'

A. These are references to the JASPER library and arise because the eccodes library referred to in the OpenIFS build configuration was compiled with the Jasper library, but the LD_LIBRARY_PATH environment variable does not list the directory containing the library so the compiler can't find it. Either amend the LD_LIBRARY_PATH or add the -ljasper library to your compilation options.


Expand
titleQ. I get the error : There is no specific subroutine for the generic 'grib_write_bytes' when compiling grib_api_interface...

A. This error is most likely because the version of grib-api is too old. For example, OpenIFS 40R1 requires a minimum version of grib-api version 1.11.0. Please upgrade your version of grib-api, to the latest grib-api release or use the ecCodes library which has now replaced the grib-api library from ECMWF.


Expand
titleQ. Should I use the same compiler for OpenIFS, LAPACK, OpenMPI etc?

A. It's recommended that the same compiler suite is used to compile OpenIFS, your MPI installation and LAPACK. This may not always be practical but it's strongly recommended as some compilers use a different default size of LOGICAL variables which can cause crashes due to memory alignment problems in subroutine calls.


Expand
titleQ. Where is the log file from compiling OpenIFS kept?

A. The log output from compiling OpenIFS can be found in the 'make' directory, then in the build directories 'opt', 'noopt' etc. The FCM software keeps the log in a hidden directory called '.fcm-make'. So if OIFS_BUILD=opt was set, the logfile for this compilation would be : make/opt/.fcm-make/log.


...