neoParSA
is a highly modularized parallel and serial simulated annealing library in C++.
It is designed to be both easy to use and easy to extend.
neoParSA
library proper requires an implementation of MPI version 2.0 or above.
Common ones are
Intel MPI Library or other vender specific MPI implementations also work.
In addition to MPI, neoParSA
library propery also requires
- [CMake] >=2.8.0
- [Boost] >=1.56
[CMake]: https://cmake.org/
[Boost]: http://www.boost.org/
The pattern formation model test problem
fly
requires an extra library - [GNU Scientific Library][gsl] [gsl]: http://www.gnu.org/software/gsl/
neoParSA
uses CMake as a build system to allows cross platform, out of source
builds with flexible build options. It is always recommended to compile the library
in a separate directory. Suppose the source files are in the directory neoParSA
,
it is recommended to create a subdirectory build
inside.
$ cd neoParSA
$ mkdir build
If all dependencies are in their usual location, the build can be configured without extra options.
$ cd build
$ cmake ..
You can specify options to for configuration:
$ CC=icc CXX=icpc cmake -D CMAKE_BUILD_TYPE=Release -D BOOST_ROOT=$HOME/boost_1_59 ..
To compile just the library, do
$ make parsa
To make the library and all the test problems, do
$ make
neoParSA
requires the problem to be optimized to be enclosed in a class
with the following member methods:
size_t getDimension();
double get_score();
void generateMove(int index, double theta);
void restoreMove(int index);
For parallel versions, it needs three more:
size_t getStateSize();
void serialize(void *buf);
void deserialize(void const *buf);