Package: parament
ParamentParallelizedMatrixExponentiation forNumericalTime evolutionParament is a GPU-accelerated solver for time-dependent linear differential equations.
Notably, it solves the Schrödinger's equation with arbitrary time-dependent control terms.
Parament is open-source and is released under the Apache Licence.DocumentationThe official documentation of Parament isavailable on Read The Docs.Try it outYou cantry Paramentfor free, in the browser, via Google Colab (no local GPU required!).InstallationPrerequisites (Windows)Install Microsoft Visual Studio (Community Edition is sufficient)Install the CUDA toolkit. Make sure the version of CUDA supports your GPU.Add the MSVC compiler to your PATH. For Visual Studio 2019, it can be found atC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\Hostx64\x64.You will have to substitute the exact version of the compiler you are using.Prerequisites (Linux)CUDA toolkit must be installed.Building paramentNote: this step is for building the shared library (DLL). If you are only interested in using parament from Python,
skip ahead. The python installer will build the library automatically.Runbuild.batorbuild.shin thetoolsfolder.
The working directory must be set to the repository root.
The script will create a/buildfolder, containing the binaries.Any extra command line arguments are forwarded
directly tonvcc. Use this to e.g. to compile for an older
GPU architecture, that is not targeted by the defaultnvccsettings.Building & installing pyparamentPyparament is the official Python wrapper. It requires Python >=3.6.At this time, pyparament is not yet available via PyPI. You can still install
the latest pyparament directly from Github by typing:pip install git+https://github.com/parament-integrator/parament#subdirectory=srcThis will automatically compile the C library, and install it alongside the Python wrapper.If you need to pass special arguments to thenvcccompiler, you can do so by setting aNVCC_ARGSenvironment variable.
For instance, if you are targeting a Tesla K80 GPU (compute capability 3.7) from CUDA 11+, run (Windows and Linux, respectively):setNVCC_ARGS=-arch=compute_37
pip install git+https://github.com/parament-integrator/parament#subdirectory=srcNVCC_ARGS="-arch=compute_37"pipinstallgit+https://github.com/parament-integrator/parament#subdirectory=srcAfter you have installed pyparament, you can run the test suite (requires pytest to be installed).pytest --pyargs paramentSource tree structureThis is a rough overview of the most important files and folders in this repository.├── _docs                       The source code for the documentation.
├── _src                        The root of the parament source.
│   ├── _cuda                   CPP source code.
│   └── _python                 Source code of Python wrapper.
│       └── _test               Built-in test-suite. See above.
├── _tests                      Runner script to execute test suite on Kaggle.     
└── _tools                      Various scripts, mainly related to building.
    └── build.bat               Build script for Windows. See above.
    └── build.sh                Build script for Linux. See above.Various other scripts in/toolsare mostly used in our internal automated build system.