130 lines
2.9 KiB
Markdown
130 lines
2.9 KiB
Markdown
# Ising Model
|
|
|
|
[Repo](https://github.uio.no/FYS3150-G2-2023/Project-4)
|
|
|
|
[Documentation](https://pages.github.uio.no/FYS3150-G2-2023/Project-4/)
|
|
|
|
## Requirements
|
|
|
|
### Operating systems
|
|
|
|
- Linux
|
|
- Has been tested on [Fedora 38](https://fedoraproject.org/)
|
|
- Will most likely work on other Linux distributions
|
|
- MacOS
|
|
- Might work, but hasn't been tested
|
|
- Windows
|
|
- Will most likely not work
|
|
|
|
### Tools
|
|
|
|
- Profiling
|
|
- [gprof](https://ftp.gnu.org/old-gnu/Manuals/gprof-2.9.1/html_mono/gprof.html)
|
|
- [scalasca](https://www.scalasca.org/)
|
|
- [score-p](https://www.vi-hps.org/projects/score-p)
|
|
|
|
### Libraries
|
|
|
|
- Python
|
|
- [matplotlib](https://matplotlib.org/)
|
|
- [numpy](https://numpy.org/)
|
|
|
|
- C++
|
|
- [Openmp](https://www.openmp.org/)
|
|
- [OpenMPI](https://www.open-mpi.org/)
|
|
- [Armadillo](https://arma.sourceforge.net/)
|
|
|
|
|
|
## Compiling
|
|
|
|
Compiling is as easy as running this command while being inside the src directory:
|
|
|
|
```shell
|
|
make
|
|
```
|
|
|
|
## Running programs
|
|
|
|
### C++ binaries
|
|
|
|
To run **main** or **test_suite**, just run this command while being inside src:
|
|
|
|
```shell
|
|
./<program-name>
|
|
```
|
|
|
|
### Python scripts
|
|
|
|
#### Install libraries
|
|
|
|
Before running the scripts, make sure that all libraries are installed.
|
|
Using pip, you can install all requirements like this:
|
|
|
|
```shell
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
This recursively install all the packages that are listed in **requirements.txt**.
|
|
|
|
#### Running scripts
|
|
|
|
For the Python scripts, run them from the src directory like this:
|
|
|
|
```shell
|
|
python scripts/<script-name>
|
|
```
|
|
|
|
If you have any problems running the scripts, you might have to run this instead:
|
|
|
|
```shell
|
|
python3 scripts/<script-name>
|
|
```
|
|
|
|
### Batch system
|
|
|
|
For the **phase_transition_mpi** program, there are scripts in the **src/jobs**
|
|
directory that come along with it. This is to be able to run it on a
|
|
batch system using Slurm if you have access to one.
|
|
This is the recommended way to use this program as it takes approximately 90
|
|
minutes to complete when using 8 processes where each process has 10 threads.
|
|
|
|
If you happen to have such a system available to you, then you should clone
|
|
this repo on that system, then compile it by running:
|
|
|
|
```shell
|
|
make phase_transition_mpi
|
|
```
|
|
|
|
You might have to load the Armadillo library using the **module** system before compiling.
|
|
|
|
After compiling, you can schedule it by running:
|
|
|
|
```shell
|
|
sbatch jobs/<script-name>
|
|
```
|
|
|
|
## Performance
|
|
|
|
This section aims to give an idea to the time it takes for the program to
|
|
run so that you know a bit what to expect if you decide to run it for
|
|
yourself.
|
|
|
|
### CPU
|
|
|
|
The times mentioned here are times achieved on a computer with these
|
|
specifications:
|
|
|
|
- CPU model
|
|
- Intel i7-9850H
|
|
- Threads
|
|
- 12
|
|
- Clock speed
|
|
- 4.6GHz
|
|
|
|
### Times
|
|
|
|
## Credits
|
|
|
|
The Doxygen theme used here is
|
|
[doxygen-awesome-css](https://github.com/jothepro/doxygen-awesome-css).
|