.. _install: ************ Installation ************ .. note:: Prebuilt binary wheels for common architectures are planned for a future release. Until then, please follow the native install guide below. Prerequisites ------------- Before installing ParkiPy, ensure the following are available on your system: - `Conda `_ (Miniconda or Anaconda) - A C++17-capable compiler (e.g. GCC ≥ 9) - **For GPU builds**: CUDA ≥ 12 (NVIDIA) or ROCm (AMD) - **For multi-GPU builds**: an MPI library such as HPC-X or OpenMPI, and ``nvmath-python`` ≥ 8.0 Native Install -------------- The repository ships an ``install.sh`` script that creates a Conda environment and performs a native build of PyKokkos. The build is controlled by the environment variables listed below. .. list-table:: ``install.sh`` configuration flags :header-rows: 1 :widths: 25 15 60 * - Variable - Default - Description * - ``ENV_NAME`` - ``parki`` - Name of the Conda environment to create. * - ``PYTHON_VERSION`` - ``3.13`` - Python version used in the Conda environment. * - ``ENABLE_OPENMP`` - ``ON`` - Enable the Kokkos OpenMP execution space (CPU parallelism). * - ``ENABLE_CUDA`` - ``OFF`` - Enable the Kokkos CUDA execution space (NVIDIA GPU support). * - ``ENABLE_HIP`` - ``OFF`` - Enable the Kokkos HIP execution space (AMD GPU support). Set the desired variables and run the script: .. code-block:: bash # CPU-only build (OpenMP) bash install.sh # NVIDIA GPU build ENABLE_CUDA=ON bash install.sh # AMD GPU build ENABLE_HIP=ON bash install.sh # Custom environment name and Python version ENV_NAME=myenv PYTHON_VERSION=3.11 ENABLE_CUDA=ON bash install.sh Once the script completes, activate the environment: .. code-block:: bash conda activate parki # or whatever ENV_NAME was set to Verifying the Install --------------------- After activating the environment, confirm ParkiPy is importable: .. code-block:: python import parkipy print(parkipy.__version__) You can also run the full test suite from the repository root: .. code-block:: bash pytest tests Multi-GPU Installation ---------------------- Multi-GPU support requires two additional packages: ``mpi4py`` for inter-node communication and ``nvmath-python`` for distributed FFTs. The tests use the ``hpcx`` and ``nvhpc-hpcx-cuda12/25.5`` modules for CUDA and MPI libraries. Install both packages with ``pip`` after activating your Conda environment. ``mpi4py`` must be built from source so it links against your system MPI: .. code-block:: bash CC=gcc CXX=g++ CFLAGS="" CXXFLAGS="" \ pip install mpi4py --no-cache-dir --no-binary :all: pip install nvmath-python .. warning:: Do **not** install ``mpi4py`` from a pre-built binary (e.g. via Conda or the default pip wheel) when using a custom HPC MPI stack such as HPC-X. Building from source ensures the correct MPI library is linked. Once both packages are installed, the :mod:`parkipy.distributed.ewald` module will be available. Building the Documentation -------------------------- The documentation is built with `Sphinx `_ using the `Furo `_ theme. Install both into your Conda environment: .. code-block:: bash conda install -c conda-forge sphinx furo Then build from the ``doc/`` directory: .. code-block:: bash cd doc make html Open ``doc/build/html/index.html`` in a browser to view the result.