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
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
(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
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
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
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
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