Shamrock install (From source)#
Shamrock Download#
You have two options: Using your fork of shamrock,Using the main repo
git clone --recurse-submodules git@github.com:Shamrock-code/Shamrock.git
If you want to use your fork clone it using (replace <login> by your github username):
git clone --recurse-submodules git@github.com:<login>/Shamrock.git
One of the easiest way to get started is to use the Shamrock environments which setup SYCL compiler and configure/compile shamrock for you.
AdaptiveCpp setup#
First start by checking that you have the right packages installed on your system
!!! info end “Installation instruction” To install recommended package to compile AdaptiveCpp === “Linux (debian)”
If you don't have llvm (...) :
```bash
wget --progress=bar:force https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 18
sudo apt install -y libclang-18-dev clang-tools-18 libomp-18-dev
```
for the other requirements :
```bash
sudo apt install cmake libboost-all-dev python3-ipython
```
=== "MacOS"
```bash
brew install cmake libomp boost open-mpi adaptivecpp
```
=== "Conda"
Nothing to do at this stage
First use of the environments#
Now you can initialise a Shamrock environment:
=== “Linux (debian)”
```bash
./env/new-env --builddir build --machine debian-generic.acpp -- --backend omp
```
=== “MacOS”
```bash
./env/new-env --builddir build --machine macos-generic.acpp -- --backend omp
```
=== “Conda”
```bash
./env/new-env --machine conda.acpp --builddir build -- --backend omp
```
And then to configure & compile Shamrock:
# Now move in the build directory
cd build
# Activate the workspace, which will define some utility functions
source ./activate
# Configure Shamrock
shamconfigure
# Build Shamrock
shammake
Wait ??? What happened ?#
The first step is the new-env script which given a build folder and a machine (describe a system to compile on) will setup the build directory with everything required to compile Shamrock. Typically the machine argument allows specializing the configuration to specific systems (eg. debian-generic.acpp, debian-generic.intel-llvm, adastra-mi250x.intel-llvm, …). The end goal of the environment is to setup all the exports, or modules loads on supercomputers through a common script.
When running the first step it will print something close to :
> ./env/new-env --builddir build --machine debian-generic.acpp -- --backend omp
loading : Debian generic AdaptiveCpp
------------------------------------------
Running env setup for : Debian generic AdaptiveCpp
------------------------------------------
-- setting acpp target to : omp
-- generator not specified, defaulting to : ninja
-- cloning https://github.com/AdaptiveCpp/AdaptiveCpp.git
And then it will go on configuring & compiling AdaptiveCpp and give you a handy little script … activate available in the build folder.
Now move in the build directory :
cd build
Activate the workspace, which will define some utility bash functions:
source ./activate
For example you have access to:
setupcompiler: which setup the compilerupdatecompiler: which update the compiler then recompile itshamconfigure: configure shamrockshammake: build Shamrock
The cool thing is that the Cmake command to build Shamrock can get quite complex for some configuration, the use of environments especially the shamconfigure command completely hides it. When a new supercomputer appears we just have to write a environment script for it, and then its done.
Check that everything is running fine#
Does the executable start ?
./shamrock --help
or
./shamrock_test --help
Both commands should just print the help.
Quick fixes#
Remarks#
If you want to setup the code with GPUs or do any advanced configuration please heads to those guides : …