Skip to content

adcirc/adcirc-spack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ADCIRC Spack Package

ADCIRC's cmake system can be used with the Spack (https://spack.io) package management system. This documentation provides a brief guide for setting up and building ADCIRC via the Spack system

Installation and Initial Setup

Installing Spack

If Spack is not currently installed on your system, you can install it using git:

$ git clone -c feature.manyFiles=true https://github.com/spack/spack.git ~/spack

In the above example, Spack will be installed in the user's home directory in a directory called spack. Spack has few requirements and it is heavily customizable.

Once spack is installed, you will need to initialize the environment. Assuming that the environment was installed to the user's home path as shown above, the command to initialize is:

$ source ~/spack/share/spack/setup-env.sh

Note that this command will need to be run each time the shell is initialized. If you want to add spack to your default environment, you will need to modify your ~/.bashrc or ~/bash_profile to run this command at startup.

Often, rather than placing the source command in the ~/.bashrc directly, it is more useful to alias the command as follows:

$ alias spack-setup=`source ~/spack/share/spack/setup-env.sh`

Initializing the ADCIRC Spack repository

Spack organizes collections of packages into "repositories". In the case of ADCIRC, the repository is currently maintained outside the official spack repository (though this may change in the future after user testing occurs).

To add the ADCIRC spack repository to your instance, use the command:

$ spack repo add /path/to/adcirc_repository/spack 

This assumes that the string /path/to/adcirc_repository is the root directory of the ADCIRC package.

Note that this command only needs to be run once per spack installation.

System Compiler Configuration

While Spack can easily build compilers from source or binary which are not currently installed on the target system, sometimes it is useful to use those which are already configured on the system to ensure compatibility with Infiniband or other system specific configurations.

Spack can locate available compilers on the system using the command:

$ spack compiler find

Note that for some systems which use modules, you may need to load the compilers before running the find command

Additionally, if you wish to use system libraries (including mpi), you can specify them as externals. You can allow spack to automatically detect these libraries using this command:

$ spack external find

or, by specifying manually using the packages.yaml file in either the user or system directory. Additional information for manual specification of external packages can be found here.

Note that this is not an exhaustive tutorial for the setup of Spack and users should consult the Spack documentation and tutorials directly for comprehensive instructions.

Building ADCIRC

The ADCIRC build process enabled by spack should be straight forward. To view the information on the ADCIRC package, you can run the command:

$ spack info adcirc

This will print out a listing of available versions and options for use within the spack package. Unless you have specific needs, it is recommended to use the preferred version. While development and master are both listed as "safe", the only version that should

$ spack install [email protected]

The default build will build adcirc and all dependencies from source as specified by your spack configuration. This will build (by default) ADCIRC in serial and parallel with netCDF enabled. Additional executables (such as adcswan, padcswan, and aswip) can be enabled by specificying additional flags to Spack as shown below:

$ spack install adcirc@develop +swan +aswip

If you'd like to change the compiler that is used to build adcirc, you can pass that using:

$ spack install adcirc@develop %oneapi

This will build ADCIRC using the Intel-LLVM (i.e. Intel OneAPI) compilers. Note that only ADCIRC version 56.00+ is compatible with the Intel-LLVM compiler suite. Note that you'll need to ensure these compilers are installed/enabled before executing the above command:

Installing Intel OneAPI Compilers

$ spack install intel-oneapi-compilers
$ spack activate intel-oneapi-compilers
$ spack compiler find
$ spack deactivate intel-oneapi-compilers

Following that, you should see output like below showing the new Intel compilers (intel, oneapi, and dpcpp) installed:

$ spack compilers
==> Available compilers
-- dpcpp debian11-x86_64 ----------------------------------------
[email protected]

-- gcc debian11-x86_64 ------------------------------------------
[email protected]

-- intel debian11-x86_64 ----------------------------------------
[email protected]

-- oneapi debian11-x86_64 ---------------------------------------
[email protected]

Another variant would be to enable the system to build OpenMPI from source using Intel-LLVM with SLURM support:

$ spack install adcirc@develop ^openmpi+legacylaunchers schedulers=slurm %oneapi

If you'd like to build with your specific mpi library, you should provide the specification that matches the one defined in your packages.yaml. This will force the system to build with the system MPI rather than one it tries to build itself.

$ spack install adcirc ^[email protected]%gcc

About

Spack package for the ADCIRC model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages