You are here: Home » Projects » PEPS

PEPS (linux) & PErhaPS (windows)


PEPS is an active tool and its latest version was named PEPS 2009 (other versions exist, such as PEPS 2007). The main difference with PEPS 2003 is that the 2009 version retained the interactive menu system for data input and between this and PEPS 2007 is due to the latest research accomplishment concerning the novel technique to multiply the tensor strucuture which was called Split Algorithm (more information follows).

The project is divided in a version for Linux called PEPS and another for Windows, called PErhaPS.

The PErhaPS version is experimental experimental and should not be used for an elevated number of states. I did some testing and they showed that the Linux version, with optimization options is not only faster but also more reliable.

PEPS - Performance Evaluation of Parallel Systems

This version is to be executed in the Linux platform. The source code is freely available for the general public, allowing modifications.
- PEPS 2003: project and Makefile for Linux
- PEPS 2007: source code, modules and Makefile for Linux (READ BELOW!)
- PEPS 2009: source code and Makefile for Linux - last PEPS version
   1. tar xvfz peps2009.tar.gz
   2. make at ./peps2009 (linux)
   3. run ./peps2009/bin/peps (if not error)
   4. compile and solve models at bin directory - there are many


PErhaPS - Performance Evaluation of 'rha' Parallel Systems

That is a Windows porting of PEPS. The software was compiled using DevC++ (standard version 4.9.9.2) with all the possibilities already available for the Linux version.

- PErhaPS 2003: project Dev-C++ and source code
- PErhaPS 2003: binary only version for Windows - version 2003
- PErhaPS 2009: binary only version for Windows - version 2009 (read above!!)


IMPORTANT


To COMPILE the PErhaPS 2003 project in Linux (using the files from the Project Dev-C++ above)
1. uncomment the following line in the Makefile:
#LDFLAGS= -ldl -rdynamic
To EXECUTE on Windows (very very important):
1. DevC++ *MUST* be installed (we recommend DevC++ for its stability and gratuity) and
2. folder C:\Dev-cpp\bin *MUST* be configured as an Environment Variable in the Windows %PATH% (or just the PATH to mingw32-g++.exe [and installing DevC++ wherever you like])


PEPS 2007 (Modular version)


PEPS 2007 presents a set of modules for each tool feature.
Case this version is chosen to solve a SAN model, it will generate the following binary files:
     1. compile_san: compiles a SAN model and creates the des/ folder, saving auxiliary files
     2. compile_dsc: compiles SAN descriptor
     3. norm_dsc_ex: normalizes SAN descriptor
     4. solve_cnd_ex: solve a SAN model and presents results

All binary files should respect the proper order of execution (this is very important to observe).
For further information, visit this site, dedicated for PEPS 2007.

» Download the PEPS 2007 tool here

There are three bash scripts to compile and solve SAN models:
1. do.sh script to compile all modules.
2. run.sh to compile and solve a model (pass model name as parameter)
3. clean.sh to clean all auxiliary files created


Differences between 2003 and 2009 versions


New functionalities

a. new compiler, accepting the new automata description definition
b. new Vector-Descriptor Multiplication method (faster for a large class of models): Split

How to use Split for solving a SAN file

a. Execute perhaps2009.exe (windows) or ./peps2009 (linux)
b. Search for the following option in the textual application interface:
4) Preferences
8) Vector-Descriptor product method :
4) Use a Split approach (method S)
[1-5] Choose a strategy to 'cut' tensor terms:
c. Choose a cut strategy (in a nutshell, each tensor term can be divided in two equally important parts: sparse part and structured part. the first part will execute the sparse method whereas the second part will apply the known Shuffle algorithm. Due to the fact that tensor terms are sometimes described as being Classic (only constant rates) or Generalized (functional rates are present), one must choose a specific strategy for each case. The possibilities are, for example, restructure the tensor terms and send all identity matrices to the structured part or maybe evaluating the functions in the sparse part, to name a few. This is the main reason why is so important to choose the right strategy for faster executions. For more information, read the paper Split: A Flexible and Efficient Algorithm to Vector-descriptor Product or contact me for further explanations.

Predefined Available Cut Strategies

The list of possible strategies to choose is best explained as follows:

Opção Type of descriptor Description Strategy
1 constant tensor term reorder, identities in the structured part (shuffle) [strategy A]
2 generalized functional evaluations on the structured part (shuffle) [strategy B]
3 generalized functional evaluation in the sparse part (split) [strategy C]
4 generalized functional evaluation in the sparse part split, identities to shuffle [strategy D]
5 generalized only functional definition and identities to shuffle [strategy E]

d. Inspect the .tim file to verify the execution and results (it is possible to see where each tensor term was cut and how much was spent on extra memory).

Solving a model using the new compiler

a. Execute perhaps2009.exe (windows) or ./peps2009 (linux)
b. Search for the following option in the textual application interface:
1) Compile a SAN model
4) Compilation of PEPS 2007 version
Download a few SAN models to test (be careful, for there are some models with more then 80 million states, and the PEPS tool works only for 65 million states or less).