From: Mark Hoemmen
Subject: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <f445rt$1fpg$1@geode.berkeley.edu>
Greetings!

I might be helping to teach a parallel programming course for advanced 
undergraduates this coming fall semester.  We can assume that incoming 
students have learned Scheme (they've gone through SICP) and probably 
also Java.  They have seen a few ideas from shared-memory 
multiprocessing in their operating systems course, but probably haven't 
done any serious multiprocessing in their projects.

What I'd like to know is which CL or Scheme systems would be good for 
teaching students how to work with threads and interthread 
communication.  We really need true multiprocessing, not just 
preemption.  I'd prefer an open-source (or at least "free like beer") 
solution that runs on multiple OS's and architectures.

Many thanks in advance!
mfh

From: Dimiter "malkia" Stanev
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <4665ABF4.2090106@mac.com>
As far as I know, Corman Common Lisp has such features. It comes with 
the full source code, except for the IDE. It's not that expensive either 
($250 or $300, not sure now).

www.cormanlisp.com

I'm happy with LispWorks myself, but it's not real multi-threading. I 
don't know much about other lisp systems.

Mark Hoemmen wrote:
> Greetings!
> 
> I might be helping to teach a parallel programming course for advanced 
> undergraduates this coming fall semester.  We can assume that incoming 
> students have learned Scheme (they've gone through SICP) and probably 
> also Java.  They have seen a few ideas from shared-memory 
> multiprocessing in their operating systems course, but probably haven't 
> done any serious multiprocessing in their projects.
> 
> What I'd like to know is which CL or Scheme systems would be good for 
> teaching students how to work with threads and interthread 
> communication.  We really need true multiprocessing, not just 
> preemption.  I'd prefer an open-source (or at least "free like beer") 
> solution that runs on multiple OS's and architectures.
> 
> Many thanks in advance!
> mfh
From: Mark Hoemmen
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <f44ffj$1i8g$2@geode.berkeley.edu>
Dimiter "malkia" Stanev wrote:
> As far as I know, Corman Common Lisp has such features. It comes with 
> the full source code, except for the IDE. It's not that expensive either 
> ($250 or $300, not sure now).
> 
> www.cormanlisp.com

The only thing is, I'd have to buy a license not only for myself, but 
for each student in the class who wanted to use Lisp -- that, or get a 
site license.

I think we have a modern Allegro CL site license, but I've never played 
with ACL's threading.

Many thanks though :)
mfh
From: George Neuner
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <q3pb6352picubs9iehpvtvf756o20mmipf@4ax.com>
On Tue, 05 Jun 2007 13:01:56 -0700, Mark Hoemmen
<············@gmail.com> wrote:

>Dimiter "malkia" Stanev wrote:
>> 
>> www.cormanlisp.com
>
>The only thing is, I'd have to buy a license not only for myself, but 
>for each student in the class who wanted to use Lisp -- that, or get a 
>site license.

Corman licenses _only_ the IDE, the Lisp system itself is freeware.

However, Corman is for Windows only - not multiplatform.  It has a few
minor CL compatibility issues but overall it is a good Lisp and very
good for writing Windows programs.

George
--
for email reply remove "/" from address
From: Alex Mizrahi
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <466658b9$0$90273$14726298@news.sunsite.dk>
(message (Hello 'Mark)
(you :wrote  :on '(Tue, 05 Jun 2007 10:17:49 -0700))
(

 MH> What I'd like to know is which CL or Scheme systems would be good for
 MH> teaching students how to work with threads and interthread
 MH> communication.  We really need true multiprocessing, not just
 MH> preemption.  I'd prefer an open-source (or at least "free like beer")
 MH> solution that runs on multiple OS's and architectures.

i don't know why didn't you recieve such reply yet (and didn't you know 
yourself?), but SBCL appears to have all features you need -- it can run 
multiple simultaneous threads, and it runs on multiple platforms (although 
multithreading might be supported not on all).
also you can consider OpenMCL (it's native to Mac, but is being ported to 
Linux x64 and like that) and ABCL (it runs on top on JVM, so greatly 
portable, but it's somewhat unusual).

surprisingly, most commercial implementations (ACL and Lispworks at least) 
have global thread lock, so they can run lisp code only in one thread at 
time.

)
(With-best-regards '(Alex Mizrahi) :aka 'killer_storm)
"I am everything you want and I am everything you need") 
From: Mark Hoemmen
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <f48436$2gq8$1@geode.berkeley.edu>
Alex Mizrahi wrote:
> (message (Hello 'Mark)
> (you :wrote  :on '(Tue, 05 Jun 2007 10:17:49 -0700))
> (
> 
>  MH> What I'd like to know is which CL or Scheme systems would be good for
>  MH> teaching students how to work with threads and interthread
>  MH> communication.  We really need true multiprocessing, not just
>  MH> preemption.  I'd prefer an open-source (or at least "free like beer")
>  MH> solution that runs on multiple OS's and architectures.
> 
> i don't know why didn't you recieve such reply yet (and didn't you know 
> yourself?), but SBCL appears to have all features you need -- it can run 
> multiple simultaneous threads, and it runs on multiple platforms (although 
> multithreading might be supported not on all).

Actually I have done my own research on thread support in different 
Schemes and CL's, but I wanted to hear your opinions :)  I was kind of 
hoping for something a little more abstract than SBCL's threading model 
(which e.g., doesn't respect external LET bindings and the like).

> also you can consider OpenMCL (it's native to Mac, but is being ported to 
> Linux x64 and like that) and ABCL (it runs on top on JVM, so greatly 
> portable, but it's somewhat unusual).

ABCL might be worth a try; I can always just use Java, but some of my 
colleagues have serious problems with its memory model (this is relevant 
to them because they work on a parallel dialect of Java called 
Titanium).  I'd really like something with a very mature compiler, as 
I'm not interested in farming out our students to be beta testers for 
whatever compiler we use ;-P (I've had this experience myself as a 
student and I don't want to re-inflict it).

We're still hashing out details; we might even try something like 
Erlang, otherwise I'll probably be forced into going with C using some 
subset of {pthreads, OpenMP, MPI}.

Many thanks!
mfh
From: Nicolas Neuss
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <874plkt2df.fsf@ma-patru.mathematik.uni-karlsruhe.de>
Mark Hoemmen <············@gmail.com> writes:

> I was kind of hoping for something a little more abstract than SBCL's
> threading model (which e.g., doesn't respect external LET bindings and
> the like).                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

What do you mean by this?

Nicolas
From: Mark Hoemmen
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <f49cvb$2raa$2@geode.berkeley.edu>
Nicolas Neuss wrote:
> Mark Hoemmen <············@gmail.com> writes:
> 
>> I was kind of hoping for something a little more abstract than SBCL's
>> threading model (which e.g., doesn't respect external LET bindings and
>> the like).                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> What do you mean by this?

http://www.sbcl.org/manual/Special-Variables.html#Special-Variables

I'm not sure if this is a problem overall, not just in SBCL.  It 
wouldn't be that big of a deal for me, but I imagine it could throw some 
student coders unless we really pounded it into their heads.  Actually, 
maybe not :)

mfh
From: Damien Kick
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <Ps1ai.17966$Ut6.12043@newsread1.news.pas.earthlink.net>
Mark Hoemmen wrote:
> Nicolas Neuss wrote:
>> Mark Hoemmen <············@gmail.com> writes:
>>
>>> I was kind of hoping for something a little more abstract than SBCL's
>>> threading model (which e.g., doesn't respect external LET bindings and
>>> the like).                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>
>> What do you mean by this?
> 
> http://www.sbcl.org/manual/Special-Variables.html#Special-Variables
> 
> I'm not sure if this is a problem overall, not just in SBCL.  It 
> wouldn't be that big of a deal for me, but I imagine it could throw some 
> student coders unless we really pounded it into their heads.  Actually, 
> maybe not :)

It seems to me that you're implying that having threads treat let/lambda 
bound special variables as thread-local is a problem.  You should just 
search Google Groups for "lisp threads special variables" and read just 
a bit of the first few threads you find there.  Most people would 
consider this to be a feature, not a bug.
From: Mark Hoemmen
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <f484p8$2gv5$2@geode.berkeley.edu>
Alex Mizrahi wrote:
> (message (Hello 'Mark)
> (you :wrote  :on '(Tue, 05 Jun 2007 10:17:49 -0700))
> (
> 
>  MH> What I'd like to know is which CL or Scheme systems would be good for
>  MH> teaching students how to work with threads and interthread
>  MH> communication.  We really need true multiprocessing, not just
>  MH> preemption.  I'd prefer an open-source (or at least "free like beer")
>  MH> solution that runs on multiple OS's and architectures.
> 
> i don't know why didn't you recieve such reply yet (and didn't you know 
> yourself?), but SBCL appears to have all features you need -- it can run 
> multiple simultaneous threads, and it runs on multiple platforms (although 
> multithreading might be supported not on all).

Actually I have done my own research on thread support in different 
Schemes and CL's, but I wanted to hear your opinions :)  I was kind of 
hoping for something a little more abstract than SBCL's threading model 
(which e.g., doesn't respect external LET bindings and the like).

> also you can consider OpenMCL (it's native to Mac, but is being ported to 
> Linux x64 and like that) and ABCL (it runs on top on JVM, so greatly 
> portable, but it's somewhat unusual).

ABCL might be worth a try; I can always just use Java, but some of my 
colleagues have serious problems with its memory model (this is relevant 
to them because they work on a parallel dialect of Java called 
Titanium).  I'd really like something with a very mature compiler, as 
I'm not interested in farming out our students to be beta testers for 
whatever compiler we use ;-P (I've had this experience myself as a 
student and I don't want to re-inflict it).

We're still hashing out details; we might even try something like 
Erlang, otherwise I'll probably be forced into going with C using some 
subset of {pthreads, OpenMP, MPI}.

Many thanks!
mfh
From: fireblade
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <1181222285.692358.46990@n4g2000hsb.googlegroups.com>
Mark Hoemmen       :
> Alex Mizrahi wrote:
> > (message (Hello 'Mark)
> > (you :wrote  :on '(Tue, 05 Jun 2007 10:17:49 -0700))
> > (
> >
> >  MH> What I'd like to know is which CL or Scheme systems would be good for
> >  MH> teaching students how to work with threads and interthread
> >  MH> communication.  We really need true multiprocessing, not just
> >  MH> preemption.  I'd prefer an open-source (or at least "free like beer")
> >  MH> solution that runs on multiple OS's and architectures.
> >
> > i don't know why didn't you recieve such reply yet (and didn't you know
> > yourself?), but SBCL appears to have all features you need -- it can run
> > multiple simultaneous threads, and it runs on multiple platforms (although
> > multithreading might be supported not on all).
>
> Actually I have done my own research on thread support in different
> Schemes and CL's, but I wanted to hear your opinions :)  I was kind of
> hoping for something a little more abstract than SBCL's threading model
> (which e.g., doesn't respect external LET bindings and the like).
>
> > also you can consider OpenMCL (it's native to Mac, but is being ported to
> > Linux x64 and like that) and ABCL (it runs on top on JVM, so greatly
> > portable, but it's somewhat unusual).
>
> ABCL might be worth a try; I can always just use Java, but some of my
> colleagues have serious problems with its memory model (this is relevant
> to them because they work on a parallel dialect of Java called
> Titanium).  I'd really like something with a very mature compiler, as
> I'm not interested in farming out our students to be beta testers for
> whatever compiler we use ;-P (I've had this experience myself as a
> student and I don't want to re-inflict it).
>
> We're still hashing out details; we might even try something like
> Erlang, otherwise I'll probably be forced into going with C using some
> subset of {pthreads, OpenMP, MPI}.
>
> Many thanks!
> mfh

Than try Gambit, it's not common lisp but it's in the family. Togather
with Termite will probbaly do the job if you don't expect SMP. The
compiler is free and mature, and makes impressive code among schemes.
Most benchmarks I sow makes Gambit speed daemon though Bigloo wins in
some categories.

http://www.iro.umontreal.ca/~gambit/
http://www.toute.ca/

Slobodan Blazeski
From: fireblade
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <1181222900.374074.116020@o5g2000hsb.googlegroups.com>
On Jun 7, 7:23 am, Mark Hoemmen <············@gmail.com> wrote:
[snipped]
> We're still hashing out details; we might even try something like
> Erlang, otherwise I'll probably be forced into going with C using some
> subset of {pthreads, OpenMP, MPI}.
>
> Many thanks!
> mfh

Erlang is great at threads but otherwise ugly us sin. You might
consider Oz/Mozart, it's   very interesthing for research.

Beside why don't you try talking with lisp vendors to give you some
timelimited and/or cheap seats student edition  for your class?
Explain them the situation and how much you could afford to pay?
Also take a look at scieneer it's linux only with CMUCL roots  real
SMP lisp(*)

Slobodan Blazeski

(*) When I say lisp in this newsgroup I mean Common lisp , for all
other uses I use lisp family of languages
From: Stefan Mandl
Subject: Re: Good Lisp / Scheme for teaching shared-memory parallel?
Date: 
Message-ID: <5cqrdvF32j4u4U1@mid.dfncis.de>
 > You might
> consider Oz/Mozart, it's   very interesthing for research.

I strongly support this statement. Oz/Mozart has the finest grained thread 
support that I've ever seen; if I remember correctly, you can even mix threads 
with normal expression syntax. I don't know if it supports SMP though ;)

http://www.mozart-oz.org/

Regards,
Stefan