Skip to content

UBMLtonGroup/Multimlton_mlton_merge

Repository files navigation

MultiMLton
----------

MultiMLton is a compiler and runtime environment that targets scalable
multicore platforms. It is an extension of MLton, an open-source,
whole-program, optimizing Standard ML compiler. It combines new language
abstractions and associated compiler analyses for expressing and implementing
various kinds of fine-grained parallelism (safe futures, speculation,
transactions, etc.), along with a sophisticated runtime system tuned to
efficiently handle large numbers of lightweight threads.

http://multimlton.cs.purdue.edu

INSTALL
-------
Dependencies

	(1) MLton : For specific installation instructions, please refer to MLton
	installation. If you install MLton in your local directory, append the path
	to MLton’s lib and bin directory to the PATH environment variable.

	(2) GnuMP : MultiMLton has been tested with version 4.3.2

Build

	Type make in multiMLton/trunk. After a successful build, the newly built
	binaries are placed in multiMLton/trunk/build/bin/.

Known Issues/Caveats

	(1) Build process consumes a lot of memory (> 4 GB) and hence it might take
	a long time to build on a memory constrained machine.

	(2) Regression test Weak.2 fails

Notes

	MultiMLton has been tested on the X86_64 architecture running Linux with
	kernel version 2.6.18-164. Since MultiMLton uses C-Codegen in the backend,
	any system with GCC and POSIX threads should support MultiMLton. Please
	contact us if you have problems building or running MultiMLton.

RUNNING
-------
New @MLton parameters

	(1) number-processors <n> - number of processors to be used for running the
	program. Default is 1.

	(2) enable-timer <microsecs> - Timer interval in micro seconds. Timer is
	disabled by default.

Examples

	Some simple examples are available in trunk/testing/pacml. Create a new
	environment variable called MULTIMLTON, that points to the multiMLton
	binary. For convenience, add

		export MULTIMLTON=<multiMLtonRoot>/trunk/build/bin/mlton

	to your .bashrc file. Here, <multiMLtonRoot> corresponds to the directory
	where multiMLton source can be found. A Makefile is provided for building
	the tests. A make without arguments builds all of the tests in the
	directory. Individual tests, say test1_parasite.sml, can be built by

		make test1_parasite-amd64

	The program can be run by invoking

		./test1_parasite-amd64 @MLton number-processors 1 enable-timer 20000 -- 100

ACML/Parasite Sources
---------------------
	The source files for ACML and Parasites can be found in
	trunk/basis-library/pacml.

------------------------------
MultiMLton group
Department of Computer Science
Purdue University
chandras@purude.edu