-
Notifications
You must be signed in to change notification settings - Fork 38
Add docs for eessi #827
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
+97
−0
Merged
Add docs for eessi #827
Changes from 3 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
ad2ff81
draft of eessi docs
claudia-lola c3a03fd
Merge branch 'main' into eessi
claudia-lola 524fe0f
second draft of eessi doc
claudia-lola c225fd3
third draft of docs
claudia-lola 9a2aaee
Fix typo in EESSI documentation
claudia-lola 5ce8e6d
third draft of docs
claudia-lola 89817f2
final draft of eessi docs
claudia-lola 3d19793
Merge remote-tracking branch 'origin/eessi' into eessi
claudia-lola 47a0d0a
fixing linting
claudia-lola d3b8a67
Merge branch 'main' into eessi
sjpb File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| # EESSI Guide | ||
|
|
||
| ## How to Load EESSI | ||
| EESSI can be initialised using the following method. | ||
|
|
||
| The EESSI environment is sourced (in a non-reversible way) by running: | ||
sjpb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ```[bash] | ||
| source /cvmfs/software.eessi.io/versions/2023.06/init/bash | ||
| ``` | ||
|
|
||
| This is non-reversible because it: | ||
| - Changes your `$PATH`, `$MODULEPATH`, `$LD_LIBRARY_PATH`, and other critical environment variables. | ||
| - Sets EESSI-specific variables such as `EESSI_ROOT`. | ||
|
|
||
| This is the recommended method because it: | ||
sjpb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - Detects your CPU architecture and OS. | ||
sjpb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - Detects and configures GPU support. | ||
| - Prepares the full EESSI software stack. | ||
| - Sets up Lmod (environment module system). | ||
|
|
||
| The [EESSI docs](https://www.eessi.io/docs/using_eessi/setting_up_environment/) offer another method to load EESSI, in addition to one above. The alternative method only initialises the Lmod module system and does not load a platform-specific setup. For these reasons, it is recommened to use the method detailed above. | ||
sjpb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Successful environment setup will show `{EESSI 2023.06}` at the start of your CLI. | ||
|
|
||
| To deactivate your EESSI environment you can either restart your shell using `exec bash` or exit the shell by `exit`. | ||
|
|
||
| ## GPU Support with EESSI | ||
| To enable GPU support, you need a site-specific build that has CUDA enabled. For a guide on how to do this, please refer to [docs/image-build.md](../image-build.md). | ||
sjpb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### Using GPUs | ||
| All CUDA-enabled software in EESSI expects CUDA drivers in a specific `host_injections` directory. | ||
|
|
||
| #### To expose the NVIDIA GPU drivers: | ||
| Use the `link_nvidia_host_libraries.sh` script, provided by EESSI, to symlink your GPU drivers into `host_injections`. | ||
| ```[bash] | ||
| /cvmfs/software.eessi.io/versions/2023.06/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh | ||
| ``` | ||
| Rerun this script when your NVIDIA GPU drivers are updated. It is also safe to rerun at any time as the script will detect if the driver versions have already been symlinked. | ||
sjpb marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ### Building with GPUs | ||
|
|
||
| Run `which nvcc` to confirm that the CUDA compiler is found. | ||
|
|
||
| If `nvcc` is not found, add the CUDA path to your environment: | ||
| ```[bash] | ||
| export PATH=/usr/local/cuda/bin:$PATH | ||
| ``` | ||
|
|
||
| `which nvcc` should now show the path to the CUDA compiler. | ||
|
|
||
| #### Loading EESSI module for the GCC compiler | ||
|
|
||
| Running `which gcc` with EESSI initialised should initially show a path `.../2023.06/compat...` which points to the compatibility compiler. | ||
| It is important to load a `gcc` version that is compatible with the host's CUDA version: | ||
sjpb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ```[bash] | ||
| module load GCC/12.3.0 | ||
| ``` | ||
| Running `which gcc` will now give a path `.../2023.06/software...` which is the full compiler provided by EESSI. This is what we want for CUDA builds. | ||
|
|
||
| Now you can run `cmake` and `make` to compile CUDA using EESSI's `gcc`. | ||
|
|
||
| #### Test: Compile deviceQuery from CUDA-Samples | ||
| To test that your EESSI setup can compile CUDA, try compiling `deviceQuery` from CUDA-Samples with the following steps: | ||
| ```[bash] | ||
| git clone https://github.com/NVIDIA/cuda-samples.git | ||
| cd cuda-samples/Samples/1_Utilities/deviceQuery | ||
| mkdir -p build | ||
| cd build | ||
| cmake .. | ||
| make | ||
| ./deviceQuery | ||
| ``` | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.