# How to install ## Creating an environment We recommend installing conda if you don’t already have it. Follow instructions at Once you have that working, you can test that you can create an environment and activate it. Below we then provide a few different ways of getting Paicos up and running inside your conda environment: ## Option 1: Installing directly via PyPi or conda-forge This is probably the simplest way of installing Paicos. Note however, that these installations do not include the tests, examples and example data. You can always download these separately or simply peruse the examples documented online. #### Installation using the conda-forge distribution Copy-paste below commands into a terminal: ``` conda create -q -n paicos-conda python=3.11 --yes conda activate paicos-conda conda install paicos --yes # conda install pytest pytest-order cython --yes # Uncomment this line to also install developer dependencies ``` #### Installation using the PyPi distribution Copy-paste below commands into a terminal: ``` conda create -q -n paicos-pypi python=3.10 --yes conda activate paicos-pypi pip install paicos[dev] ``` On MacOs you might have to do something like this (see details below in "Compiling on MacOs") ``` CC=gcc-13 pip install paicos[dev] ``` #### Check that the installation succeeded If the installation succeeded then you can proceed: ``` # Check if installation worked and that you can import Paicos python -c "import paicos" ``` ## Option 2 (Developer installation): Compile the code and add its path to your PYTHONPATH You should use this option if you intend to make changes to Paicos ([this would be very welcome, see here for details on making contributions])(https://github.com/tberlok/paicos/blob/main/.github/CONTRIBUTING.md) ``` git clone git@github.com:tberlok/paicos.git cd paicos pip install -r requirements.txt pip install -r dev_requirements.txt make ``` Add the directory to your PYTHONPATH, e.g., I have ``` export PYTHONPATH=$PYTHONPATH:/Users/berlok/projects/paicos ``` in my `.bash_profile`. Finally, run the tests ``` make checks ``` #### Compiling on MacOs You will need an openmp-enabled compiler. On MacOs, you can install gcc via homebrew. You can then either modify `setup.py` with your compiler option, .e.g., ``` if sys.platform == 'darwin': os.environ['CC'] = 'gcc-13' os.environ['CXX'] = 'g++-13' ``` or by running `CC=gcc-13 make` instead of simply `make`. If you have installed gcc via homebrew, then you can get your compiler version by running `brew info gcc`, which you can use to modify the instructions above accordingly. #### Compiling Paicos inside a notebook It can sometimes also be useful to compile Paicos inside a Jupyter notebook, i.e., by running a notebook cell with the following content: ``` %%bash cd /path/to/paicos/ make clean make ``` ## GPU/CUDA requirements The visualization routines that run on GPU require installing CuPy (a drop-in replacement for NumPy that runs on the GPU) and Numba CUDA (just-in-time compilation of kernel and device functions on the GPU). These packages only work on CUDA-enabled GPUs, which means that you need a recent Nvidia GPU. An Nvidia GPU with good FP64 performance is desirable. These packages (CuPy and Numba) are not automatically included in Paicos. Up-to-date instructions for installing them can be found at: - CuPy: https://docs.cupy.dev/en/stable/install.html - Numba: https://numba.readthedocs.io/en/stable/cuda/overview.html#supported-gpus At the time of writing, we have had success installing for CUDA version 11.2 using ``` pip install numba pip install cupy-cuda112 ``` and then setting the path to the CUDA installation in .bashrc as e.g. (substitute with the path to the CUDA installation on your system) ``` export CUDA_HOME=/software/astro/cuda/11.2 # numba export CUDA_PATH=/software/astro/cuda/11.2 # cupy ``` If it worked, you should be able to do this: ``` import cupy as cp from numba import cuda ``` The parts of Paicos that are GPU-enabled need to be initialized, i.e., running ``` import paicos as pa pa.gpu_init() ``` will enable the GPU-code. You can add ``` # Whether to load GPU/cuda functionality on startup pa.load_cuda_functionality_on_startup(True) ``` to your `paicos_user_settings.py` (see details under 'User configuration') to do this automatically when paicos is imported.