6.827 Multithreaded Parallelism:
Languages and Compilers
Fall 2002


Course Announcements:



December 11, 2002

First, I just sent to all of you (individually) our feedback on your
projects -- if you have any questions, please feel free to ask us. We may
help you to figure out how to write things up. Second, for your project
reports, please use an ACM SIG Proceedings Template located at
http://www.acm.org/sigs/pubs/proceed/template.html#aL1.

I have also posted my copy of the template with a convenient makefile here.

You can compile Latex documents on Athena. Here's a good online reference on
Latex:
http://web.mit.edu/olh/Latex/ess-toc.html

It will make your report look tidy and clean. Third, please don't forget to
send us pointers to your code -- we may run to see that it actually works.
Please let us also know if there are any specific environment variable or
command-line arguments that you use.

Finally, if you would like your reports and talk slides to be posted on the
class website for future generations taking this class, please let us
know -- we really appreciate it! We will not post them without your written
permission.


November 25, 2002

A routing table that you can use in your IP Lookup projects in Bluespec is posted here. You can find the most recent version at the website of Route Views.


November 20, 2002

Ok, the Bluespec compiler is installed on Athena. If one logs into a Linux computer on Athena and types "add 6.827" then the command "bsc" will be available in the path and "man bsc" will also produce a short man page.  One can also type "bsc --help" to get a list of commandline parameters.

All the files, including libraries and documentation, can be conveniently found in one place:

  /mit/6.827/bsc/


November 18, 2002

This is a reminder that there will be a lecture in 6.827 tomorrow (Tuesday)
at 9:30AM in the playroom on the second floor of NE43 (LCS).  Another extra lecture will be on Thursday at the same time and place.


November 14, 2002

Bluespec Tutorial is posted online.


November 14, 2002

Please note that all Athena dialup machines (x.dialup.mit.edu and athena.dialup.mit.edu) are Suns, so you can only work with the old pH compiler if you SSH to them.

It's been pointed out to me that most of you haven't seen any documentation describing the differences between the current pH compilers and the syntax described in the book!  

For the current Linux compiler, there are extensive language notes in /docs/language:

  /mit/6.827/phc-new/phc/docs/language

The most relevant information there are the notes on the PHArray library, and in particular the indexing operations on IArrays and MArrays.  Barrier syntax works as in the book.  Note that update operations return a result after the update occurs, so that it's possible to sequence IArray and MArray operations using barriers if you're careful.  Indeed, it should be technically possible to do 2(c) with no barriers at all, while preserving parallelism, if you use //=^ carefully.

In general, I recommend that code which ONLY performs side effects should return the side-effected object when those effects are complete.  This often allows you to write slightly nicer code than if you return a junk value such as ().

If you're using the older Solaris compiler, read the above document anyway; the libraries are largely identical.  Barrier syntax, however, is older and cruftier.  Note the use of the "seq" and "par" keywords and nested indentation in the following code:

  let seq par x = a!^1  -- These two bindings happen in parallel
              y = a!^2
          -- Then a barrier conceptually occurs here
          _ = a//^= [(1, x+y), (2, x-y)]
          -- Then another barrier occurs here
  result = a
  in  result

Under the Linux compiler, this would look as follows:

  let ( x = a!^1
        y = a!^2
>>>
a //^= [(1, x+y), (2, x-y)]
>>>
result = a )
  in  result

Or more compactly, if you use the result of //^=:

  let ( x = a!^1
        y = a!^2
>>>
result = a //^= [(1, x+y), (2, x-y)]
      )
  in  result

-Jan


November 13, 2002

Professor Arvind approved of all of the proposals that you have submitted, so you can get started. I will schedule individual meetings with each of the groups two weeks from now to discuss the progress made so far.

*** Presentations ***
We have also decided to schedule project presentations for 9AM till 11AM on Wednesday, December 11th (since we have many groups, we need this extra half-an-hour before the official start of the class). Each of the presentations should be not more than 20 minutes long, and we encourage that both team members (in case of a team project) give a talk. We reserve the right to ask questions to both team partners as well.

*** Write-ups ***
Project write-ups will be due on Friday, December 13th, at 5PM. *** No extensions will be granted.*** Therefore, ideally, you will have your write-ups ready by the time you will have to give presentations.

Please let us know if you would rather make presentations in the afternoon on the same day -- this is also fine with us. Also, please check if you have any conflicts with your finals.

Good luck on the project!

September 24, 2002
Attention! If you are taking the class, but not receiving emails that we send to the class mailing list, ask Todd Amicon to add you to the list!