Scientific Computing in Lisp

Whatever is on your mind, whether Lisp related or not.
Post Reply

Scientific Computing in Lisp

Post by Scattered » Thu Jul 02, 2009 3:21 am

Hi all. New to the forums, new to lisp.

I'm a college student in engineering, but I've had a few jobs writing C/C++, Perl and Fortran.

Anywho, with grad school on the horizon, I'm thinking I need to learn a good language for prototyping algorithms and eventually producing some production-ish (by academic standards) number-crunching code. Given the raving about Lisp from those who actually use it, I figure it's something I should at least check out. The other main option I'm looking at, for the record, is Python. So I have CCL and emacs+SLIME on my mac and I'm beginning to experiment with common lisp. Before I put too much time into that, I wanted to pose some questions to the community about the available scientific computing resources.

Which of the free (as in beer - I could care less about speech, if the distinction matters) LISP implementations is best suited to writing an application that spends most of its cycles crunching numbers? In particular, what, if any, linear algebra packages are available for which implementations? Matlisp, I've been led to believe, is primarily for SBCL/CMUCL. FEMLisp is apparently built on top of Matlisp(?) Are there others? What works with CCL? Or should I just dump CCL for SBCL (especially what with the floating point performance of the latter)? What about Fortran interfaces?

Parallelism is also potentially important to me. To what extent does Lisp support parallelism in number crunching? Are some implementations better at this than others?

Finally, are any of the implementations home to a particularly nice plotting framework? (CCL can talk to cocoa, which is a huge plus for me in this regard)

Also, the books on language philosophy are nice, but is there a nice, online reference analogous to this or this where I'm just a click away from standard library APIs?

Posts: 96
Joined: Sat Jun 28, 2008 8:01 am
Location: Russia, Kazan

Re: Scientific Computing in Lisp

Post by dmitry_vk » Thu Jul 02, 2009 12:02 pm

For number crunching, SBCL is the best choice, as far as I know. It has good compiler that optimizes away a lot of overhead (mostly because SBCL does fair amount of static analysis of code including type inference) and (with proper declarations) can approach the level of hand-written C code. The best platform for SBCL is x86-64 linux. Recently, SBCL got support for SSE intrisincs on x86-64.

Femlisp and matlisp are portable lisp libraries and should run on many lisp implementations.

Both Clozure and SBCL offer native threads (at least on Linux) that can utilize multiple cores or CPUs.

Post Reply