Skip to content

zhlou/neoParSA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

neoParSA: a scalable parallel simulated annealing library

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.

Contents

  1. Dependencies
  2. Build
  3. Usage

1. Dependencies

MPI

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.

Other dependencies

In addition to MPI, neoParSA library propery also requires

2. Build

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

3. Usage

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);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published