Installation ============ These instructions install a python command line interface to mandrake. If you are not comfortable with using the terminal, or just want to have a quick look, try our `web version `__ (and see documenation on :doc:`web`). Installing with conda (recommended) ----------------------------------- If you do not have ``conda`` you can install it through `miniconda `_ and then add the necessary channels:: conda config --add channels defaults conda config --add channels bioconda conda config --add channels conda-forge Then run:: conda install mandrake If you are having conflict issues with conda, our advice would be: - Remove and reinstall miniconda. - Never install anything in the base environment - Create a new environment for mandrake with ``conda create -n mandrake_env mandrake`` conda-forge also has some helpful tips: https://conda-forge.org/docs/user/tipsandtricks.html Installing manually ------------------- You will need to install the dependencies, which are listed in ``environment.yml``. We would still recommend using conda to do this:: conda create -n mandrake_env python conda env update -n mandrake_env --file environment.yml conda activate mandrake_env You can then install by running:: python setup.py install If you have the CUDA toolkit installed and ``nvcc`` on your path, this will also compile the GPU code:: -- CUDA found, compiling both GPU and CPU code By default the code will be built for CUDA SM versions 70 (V100), 75 (20xx series), 80 (A100) and 86 (30xx series). If you need more help on getting the GPU code to work, please see the page in the `pp-sketchlib docs `__, which uses the same build procedure. Developer notes ^^^^^^^^^^^^^^^ Install the debug build (which can be stepped through with ``gdb`` and ``cuda-gdb``) by running:: python setup.py install --debug To run:: cuda-gdb python set args mandrake-runner.py r To run without installing, run:: python setup.py build and add the following lines to the top of each python module file:: import os, sys sys.path.insert(0, os.path.dirname(__file__) + '/../build/lib.macosx-10.9-x86_64-3.9') sys.path.insert(0, os.path.dirname(__file__) + '/../build/lib.linux-x86_64-3.9') To change the compiler used, edit the following part of ``setup.py``:: cmake_args = ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir, '-DPYTHON_EXECUTABLE=' + sys.executable, '-DCMAKE_C_COMPILER=gcc-10', '-DCMAKE_CXX_COMPILER=g++-10', '-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON'] To profile the GPU code, uncomment the lines under 'Set these to profile' in ``CMakeLists.txt`` (there are three of these, two at the top, one in the CUDA section) and reinstall. Run nsight-systems with:: nsys profile -o sce_ -c cudaProfilerApi --trace cuda,osrt,openmp mandrake nsight-compute with:: ncu -c 10 -o sce_ --set full --target-processes all mandrake