Commit 778bd66b authored by Paul McCarthy's avatar Paul McCarthy 🚵
Browse files

DOC: Comments about CUDA projects

parent 5c7950be
......@@ -4,11 +4,12 @@
_This documentation is a work in progress_
This repository hosts information and documentation regarding the FSL conda package infrastructure.
This repository hosts information and documentation regarding the FSL conda package infrastructure.
This `README` file contains a general overview. More detailed information on different topics can be found in the folowing files:
- [`development_workflow.md`](development_workflow.md): Details on development and release workflows and processes.
- [`official_fsl_installations.md`](official_fsl_installations.md): Details on official/full conda-based FSL installations.
- [`local_development.md`](local_development.md): Setting up an FSL development environment on your own machine.
......@@ -21,7 +22,7 @@ This `README` file contains a general overview. More detailed information on dif
FSL is installed using the [**conda**](https://conda.io/) package and environment management system. Each FSL project is built as a conda package, and published to an internally hosted conda channel.
Prior to FSL 6.1.0, FSL was released and installed as a monolithic archive file, containing most FSL tools, and a separate conda environment called "`fslpython`", configured after the archive file was installed. Some of the reasons for transitioning to a purely conda-based release model are as follows:
Prior to FSL 6.1.0, FSL was released and installed as a monolithic archive file, containing most FSL tools, and a separate conda environment called `fslpython`, configured after the archive file was installed. Some of the reasons for transitioning to a purely conda-based release model are as follows:
- Simplify FSL installation procedure
- Reduce the size of `$FSLDIR`
......@@ -52,19 +53,25 @@ The official fsl/installer> script performs the following tasks:
Users may choose to install specific FSL packages by installing the desired FSL packages directly from the FSL conda channel into their own conda environment.
> **Note:** All FSL conda packages list the dependencies required for their execution, so when a particular package is installed, all of its run-time dependencies will also be installed. However, as we transition away from monolithic installations and towards conda-based installations, there are likely to be omissions and errors in the dependency hierarchy. These issues will be resolved on a case-by-case basis.
## FSL conda packages
All FSL projects and their dependencies are published as conda packages, either in the internal FMRIB conda channel, or on https://anaconda.org, in one of the `conda-forge` or `defaults` channels.
All FSL projects, and any dependencies which are not available on https://anaconda.org, are built according to a conda "recipe", which describes how the project can be built as a conda package. All FSL conda recipes are hosted as git repositories on the FMRIB gitlab server, under the `fsl/conda/` group.
All FSL projects, and any dependencies which are not available on https://anaconda.org, are built according to a conda *recipe*, which describes how the project can be built as a conda package. All FSL conda recipes are hosted as git repositories on the FMRIB gitlab server, under the `fsl/conda/` group.
To clarify, each FSL project, and internally managed dependency, comprises **two** git repositories:
To clarify, each FSL project, and internally managed dependency, comprises **two** git repositories<sup>*</sup>:
* The project repository contains the project source code/resources, and is typically hosted at `https://git.fmrib.ox.ac.uk/fsl/<project>`
* The recipe repository contains a conda recipe for the project, and is hosted at `https://git.fmrib.ox.ac.uk/fsl/conda/fsl-<project>`.
FSL conda packages are built automatically using Gitlab CI - the CI infrastructure for automatically building conda packages is hosted in the fsl/fsl-ci-rules> repository.
> <sup>*</sup>A small number of FSL projects have more than one recipe repository associated with them - for example, the [`fsl/fdt`](https://git.fmrib.ox.ac.uk/fsl/fdt) project has two recipes - the [`fsl/conda/fsl-fdt`](https://git.fmrib.ox.ac.uk/fsl/conda/fsl-fdt) recipe provides CPU executables, and the [`fsl/conda/fsl-fdt-gpu`](https://git.fmrib.ox.ac.uk/fsl/conda/fsl-fdt-gpu) recipe provides GPU/CUDA executables.
......@@ -13,6 +13,9 @@ Normally there should be no need to build FSL conda packages by hand, as stable
In order to build a FSL conda package locally, all you need is a (mini)conda environment with `conda-build` installed. You do not need to have a compiler, or even FSL, installed.
> **Note:** If you are building a CUDA package, you need to have `nvcc` installed - this cannot be installed through `conda`, so must be installed externally.
## Step 1: Clone the recipe repository
......@@ -36,7 +39,7 @@ export FSLCONDA_REPOSITORY=$(pwd)/avwutils
```
> Note: It is not currently possible to build a conda package from a local copy of a project which is *not* a git repository, nor from a dirty working tree (i.e. the changes you want to build must be committed). This functionality may be added in the future if it is deemed necessary.
> **Note:** It is not currently possible to build a conda package from a local copy of a project which is *not* a git repository, nor from a dirty working tree (i.e. the changes you want to build must be committed). This functionality may be added in the future if it is deemed necessary.
## Step 3: Choose the revision you want to build (optional)
......@@ -53,13 +56,13 @@ export FSLCONDA_REVISION=master
Now you can run `conda build` to build the conda package. The channel order is very important, and must be:
1. `conda-forge` Packages from conda-forge have highest priority
2. `defaults` Packages from anaconda have higher priority than the FSL channel
3. The FSL conda channel has the lowest priority.
> Note: The FSL conda channel URL is not yet finalised.
> **Note:** The FSL conda channel URL is not yet finalised.
```bash
......@@ -75,6 +78,9 @@ conda build \
If the build succeeds, the built package will be saved to the `dist` directory - binary packages will be saved in either the `osx-64` or `linux-64` sub-directories, and platform-independent (e.g. python) packages will be saved in the `noarch` sub-directory.
> **Note:** IF you are building a CUDA package, you must define an environment variable called `CUDA_VER`, which contains the `major.minor` CUDA version that you wish to build the package against, before calling `conda build`. For example, `export CUDA_VER="9.2"`.
## Building multiple FSL conda packages locally
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment