Monday, October 3, 2011

Alpha release of ParaSail Compiler and Virtual Machine

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

8 comments:

  1. We are having some technical difficulties posting the release on the Google Group. Please stand by...

    ReplyDelete
  2. Here is a shortened link for alpha 0.1, rev 1.3:

    http://bit.ly/nwoOaT

    ReplyDelete
  3. Below is a simple mod to hello world and output. The output raises questions.
    1- 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

    ReplyDelete
  4. 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.:

    for 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.

    ReplyDelete
  5. If you are interested in following along with a new user of ParaSail, visit the blog:

    http://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.

    ReplyDelete
  6. I wrote:

    "... 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

    ReplyDelete