From 8c7fce3eef68217ab0994cf7d772ead80a0e3e97 Mon Sep 17 00:00:00 2001 From: lazariv <taras.lazariv@tu-dresden.de> Date: Tue, 23 Nov 2021 17:30:59 +0000 Subject: [PATCH] Minor text polishing --- .../software/custom_easy_build_environment.md | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/doc.zih.tu-dresden.de/docs/software/custom_easy_build_environment.md b/doc.zih.tu-dresden.de/docs/software/custom_easy_build_environment.md index 4dbd33a72..e23305c90 100644 --- a/doc.zih.tu-dresden.de/docs/software/custom_easy_build_environment.md +++ b/doc.zih.tu-dresden.de/docs/software/custom_easy_build_environment.md @@ -1,16 +1,16 @@ # EasyBuild -Sometimes the [modules installed in the cluster](modules.md) are not enough for your purposes and +Sometimes the [modules](modules.md) installed in the cluster are not enough for your purposes and you need some other software or a different version of a software. For most commonly used software, chances are high that there is already a *recipe* that EasyBuild -provides, which you can use. But what is Easybuild? +provides, which you can use. But what is EasyBuild? [EasyBuild](https://easybuilders.github.io/easybuild/) is the software used to build and install software on ZIH systems. The aim of this page is to introduce users to working with EasyBuild and to utilizing it to create -modules +modules. ## Prerequisites @@ -59,9 +59,9 @@ marie@login$ ws_list | grep 'directory.*EasyBuild' put commands in a batch file and source it. The latter is recommended for non-interactive jobs, using the command `sbatch` instead of `srun`. For the sake of illustration, we use an interactive job as an example. Depending on the partitions that you want the module to be usable on -later, you need to select nodes with the same archtitecture. Thus, use nodes from partition ml -later, if you want to use the module on nodes of that partition. In this example, we assume that we -want to use the module on nodes with x86 architecture und thus, use Haswell nodes. +later, you need to select nodes with the same architecture. Thus, use nodes from partition ml for +building, if you want to use the module on nodes of that partition. In this example, we assume +that we want to use the module on nodes with x86 architecture und thus, Haswell nodes will be used. ```console marie@login$ srun --partition=haswell --nodes=1 --cpus-per-task=4 --time=08:00:00 --pty /bin/bash -l @@ -71,20 +71,15 @@ marie@login$ srun --partition=haswell --nodes=1 --cpus-per-task=4 --time=08:00:0 Using EasyBuild on the login nodes is not allowed. -**Step 3:** Load EasyBuild module. +**Step 3:** Specify the workspace. The rest of the guide is based on it. Please create an +environment variable called `WORKSPACE` with the path to your workspace: ```console -module load EasyBuild +marie@compute$ export WORKSPACE=/scratch/ws/1/marie-EasyBuild #see output of ws_list above ``` -**Step 4:** Specify the workspace. The rest of the guide is based on it. Please create an -environment variable called `WORKSPACE` with the location of your workspace: - -```console -marie@compute$ WORKSPACE=/scratch/ws/1/marie-EasyBuild #see output of ws_list above -``` - -**Step 5:** Load the correct modenv according to your current or target architecture: +**Step 4:** Load the correct module environment `modenv` according to your current or target +architecture: === "x86 (default, e. g. partition haswell)" ```console @@ -92,16 +87,16 @@ marie@compute$ WORKSPACE=/scratch/ws/1/marie-EasyBuild #see output of ws_list ab ``` === "Power9 (partition ml)" ```console - marie@compute$ module load modenv/ml + marie@ml$ module load modenv/ml ``` -**Step 6:** Load module `EasyBuild` +**Step 5:** Load module `EasyBuild` ```console marie@compute$ module load EasyBuild ``` -**Step 7:** Set up your environment: +**Step 6:** Set up your environment: ```console marie@compute$ export EASYBUILD_ALLOW_LOADED_MODULES=EasyBuild,modenv/scs5 @@ -114,13 +109,13 @@ marie@compute$ module use "${EASYBUILD_INSTALLPATH_MODULES}/all" marie@compute$ export LMOD_IGNORE_CACHE=1 ``` -**Step 8:** Now search for an existing EasyConfig: +**Step 7:** Now search for an existing EasyConfig: ```console marie@compute$ eb --search TensorFlow ``` -**Step 9:** Build the EasyConfig and its dependencies +**Step 8:** Build the EasyConfig and its dependencies (option `-r`) ```console marie@compute$ eb TensorFlow-1.8.0-fosscuda-2018a-Python-3.6.4.eb -r @@ -128,14 +123,14 @@ marie@compute$ eb TensorFlow-1.8.0-fosscuda-2018a-Python-3.6.4.eb -r This may take a long time. After this is done, you can load it just like any other module. -**Step 10:** To use your custom build modules you only need to rerun steps 4, 5, 6, 7 and execute +**Step 9:** To use your custom build modules you only need to rerun steps 3, 4, 5, 6 and execute the usual: ```console -marie@compute$ module load TensorFlow-1.8.0-fosscuda-2018a-Python-3.6.4 #replace with name of your module +marie@compute$ module load TensorFlow-1.8.0-fosscuda-2018a-Python-3.6.4 #replace with the name of your module ``` -The key is the `module use` command which brings your modules into scope so `module load` can find +The key is the `module use` command, which brings your modules into scope, so `module load` can find them. The `LMOD_IGNORE_CACHE` line makes `LMod` pick up the custom modules instead of searching the system cache. @@ -150,8 +145,8 @@ It might also be helpful to inspect the build environment EasyBuild uses. For th marie@compute$ eb myEC.eb --dump-env-script` ``` -This command creates a sourceable .env file with `module load` and `export` commands that show what -EB does before running, e.g., the configure step. +This command creates a sourceable `.env`-file with `module load` and `export` commands that show +what EasyBuild does before running, e.g., the configuration step. It might also be helpful to use -- GitLab