mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-11-07 06:33:39 +01:00
94 lines
2.0 KiB
Markdown
94 lines
2.0 KiB
Markdown
QCaml (Quantum Camel)
|
|
=====================
|
|
|
|
<img src="data/chamo_bg.png" width="300" >
|
|
|
|
QCaml is a quantum chemistry software written in OCaml.
|
|
|
|
Requirements
|
|
------------
|
|
|
|
* BLAS/LAPACK : Linear algebra
|
|
* LaCaml : LAPACK OCaml interface
|
|
* gmp : GNU Multiple Precision arithmetic library
|
|
* Zarith : Arbitrary-precision integers
|
|
* GetOpt : Parsing of command-line
|
|
* Alcotest : Lightweight testing framework
|
|
* odoc-ltxhtml : https://github.com/akabe/odoc-ltxhtml
|
|
|
|
```bash
|
|
opam install dune lacaml getopt alcotest zarith camlp-streams
|
|
```
|
|
|
|
To use the Intel MKL library:
|
|
|
|
```bash
|
|
export LACAML_LIBS="-L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_rt -lpthread -lm -ldl"
|
|
opam install --assume-depexts lacaml
|
|
```
|
|
|
|
How to build the project
|
|
------------------------
|
|
|
|
Run `make` to compile the libraries and executables that are
|
|
meant to be installed.
|
|
```
|
|
$ make
|
|
```
|
|
|
|
How to run tests
|
|
----------------
|
|
|
|
```
|
|
$ make test
|
|
```
|
|
|
|
How to use local libraries interactively
|
|
----------------------------------------
|
|
|
|
Use `dune utop DIR` where DIR if the folder contains the `dune`
|
|
file for a library. For instance, our `sub2` sample library can be
|
|
used as follows:
|
|
|
|
```
|
|
$ dune utop sub2/lib
|
|
...
|
|
utop # Proj_sub2.A.do_something ();;
|
|
1525373137.245 seconds have elapsed since 1970-01-01T00:00:00.
|
|
- : unit = ()
|
|
```
|
|
|
|
Installation
|
|
------------
|
|
|
|
The project can be installed with or without opam.
|
|
Without opam, you can run the following which relies directly on
|
|
dune:
|
|
```
|
|
$ make install
|
|
```
|
|
Similarly:
|
|
```
|
|
$ make uninstall
|
|
```
|
|
|
|
With opam, you can install the current development version of your
|
|
project as a single opam package. It will override the currently
|
|
installed package of the same name, if any:
|
|
```
|
|
$ opam pin add QCaml .
|
|
```
|
|
For more information on `opam pin`, please consult the opam documentation.
|
|
|
|
The advantage of the opam-based method is that other opam packages can
|
|
depend on this one, and opam will recompile them automatically as
|
|
necessary.
|
|
|
|
|
|
Profiling
|
|
---------
|
|
|
|
The Landmarks memory profiler can be used.
|
|
|
|
|