We are very pleased to announce the first, alpha, release of the ParaSail prototype Compiler and Virtual Machine. This release includes executables for the Mac, Linux, and Windows. Please visit the ParaSail Google Group to download this release:
http://groups.google.com/group/parasail-programming-language
We are having some technical difficulties posting the release on the Google Group. Please stand by...
ReplyDeleteWe found a place to post the entire release. It is available at:
ReplyDeletehttps://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B6Vq5QaY4U7uNzVhYmE2YTctZmFjNy00NjBkLWJmOWQtY2EyOWFjNGFlOTA0&hl=en_US
We have made a minor update to this release, now alpha 0.1, rev 1.3, available at:
ReplyDeletehttps://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B6Vq5QaY4U7uMzM2NmVmODktOWI0ZC00ZTIxLWE5MTYtOTAyNzdiMDQxNDBj&hl=en_US
Here is a shortened link for alpha 0.1, rev 1.3:
ReplyDeletehttp://bit.ly/nwoOaT
Below is a simple mod to hello world and output. The output raises questions.
ReplyDelete1- I ran in a windows quad core.
It appears to only use 2 threads, I would have to seen at least 4.
2- the task scheduling order seems wierd
it seems to be working off both sides of the task queue with the 1-12 and one, is that expected
The program.
func Hello_World () is
for I in 1 .. 12 loop
Println("Hello world!"| I );
end loop
end func Hello_World;
The result;
Hello world!1
Hello world!12
Hello world!2
Hello world!11
Hello world!3
Hello world!10
Hello world!4
Hello world!9
Hello world!5
Hello world!8
Hello world!6
Hello world!7
The default "loop" is unordered. If you wanted it to iterate through the loop in forward sequential order, you need to say "forward loop", or "reverse loop" for reverse sequential order. E.g.:
ReplyDeletefor I in 1..12 forward loop
Println("Hello World!" | I);
end loop;
If you wanted to do them all in parallel, then:
for I in 1..12 concurrent loop
Println("Hello world!" | I);
end loop;
The default loop is performed in a semi-random order which the compiler is then allowed to
freely parallelize in the absence of data dependencies. This is part of the approach forcing you to work a bit harder if you really want to do things sequentially.
Note that "Println" is a bit of a special case in that it actually has side effects but the compiler treats it as being side-effect free, so you can dump one in anywhere without affecting legality. Once we have a "production" I/O package, there will be I/O routines that take files, and to use those you would have to worry about side-effects, etc. Println is intended more for logging and debugging, rather than for production use.
As far as core usage, the current run-time support library is simulating multiple cores. The next release will use a true multi-threaded run-time, so you will see more cores in use.
If you are interested in following along with a new user of ParaSail, visit the blog:
ReplyDeletehttp://fatandys.blogspot.com
Andy already has some more detailed instructions on how to download, install, and run ParaSail, and presumably will be following up with additional insights as he continues his evaluation of ParaSail.
I wrote:
ReplyDelete"... As far as core usage, the current run-time support library is simulating multiple cores. The next release will use a true multi-threaded run-time, so you will see more cores in use."
Note that the latest release (alpha 0.2, rev 1.5) now has a multi-thread run-time:
http://bit.ly/rsxQDX