/meld

Meld virtual machine.

Primary LanguageC++

===================================================
Source code organization

Compiler is written in CL and is placed in cl-meld
Virtual machine is written in C++ and is placed in meld
In order to compile programs we first use the CL compiler and then the C++ compiler.

===================================================
How to compile CLM programs

Go to meld/benchs
Run script ./compile.sh progs/<program>.meld
Compiler will generate a code/<program>.cpp file
Go back to the meld directory: cd ..
Compile final program with ./compile.sh benchs/code<program>.cpp

===================================================
How to run CLM programs

After step 4, programs will be placed in ~/meld/benchs/code/<program>
Run with './benchs/code/<program> -c thX' where X is the number of executing threads
Many other flags are supported by CLM programs:
	-t: Shows execution time.
	-s: Shows results of the program.
Some programs also accepted input arguments: add -- and then a list of arguments after the virtual machine arguments presented before.
	Files in meld/benchs/args/<program> indicate which arguments are used for benchmarks.

===================================================
Running SSSP programs

Compile shortest-DATASET.meld, where DATASET is the graph data set.
Example: shortest-uspowergrid.meld
	Execute as ./benchs/code/shortest-uspowergrid -c thX -t -- N
	where N is a positive number and represents how many source nodes are going to be used (a node is used if NodeId % N == 0). Use N=1 for uspowergrid.
By default, SSSP runs with coordination. Add flag -n to run it without coordination.

In order to compile programs with datasets such as LiveJournal and Orkut, please do the following:
$ cd meld/benchs/
$ make progs/data/orkut.txt
$ make progs/data/weighted-livejournal.txt

Afterwards, compile programs are usual. Use the following arguments:
- orkut: 3000000
- livejournal: 3000001

(All arguments can be inspected by reading meld/benchs/args/shortest-livejournal, for example).

Note that it will take a while to pre-process these programs. The CLM compiler has not been optimized enough to process huge graphs. Remember to run the virtual machine with enough memory.

===================================================
Running N Queens programs

Program available as 8queens-N-CONF.meld, where N is the size of the board and CONF is the configuration.
Example: 8queens-13.meld to run the 13 queens program without any coordination. The coordinated programs are available with CONF=bottom-static, for example.

===================================================
Running MiniMax programs

Use program min-max-tictactoe-big.meld and min-max-tictactoe-big-coord.meld (to use the regular and the coordinated program, respectively).

===================================================
Running HT programs

Programs available as:
	- new-heat-transfer-120-coord0.meld (Works as the regular and coordinated version, use -n to run without coordination).
	- new-heat-transfer-120-coord.meld (Works as the Local version).
For both of these programs use the following arguments: 0.0001 0.005

===================================================
Running LBP/SBP

Programs available as:
	- belief-propagation-400.meld (LBP)
	- splash-bp-400 (SBP): use 100 as program argument
They are also available in other sizes.