« November 2002 | Main | May 2003 »

April 2003 Archives

April 12, 2003

Multi-threading with SBCL

Besides working with SBCL on my sb-aclrepl module, I've also been spending more time with the latest versions of SBCL since taking over the maintainence of the Debian SBCL package.

The latest versions SBCL now support multi-threading. This is available in the CVS tree of SBCL in the 0.pre8 versions. Though this feature is still in a pre-release state, it is available for widespread testing. This feaure is quite nice for using SBCL to serve web pages. Though SBCL has been used successfully serving fairly static web pages, for web pages that involve significant computation or database access, having multiple processes run simultaneously is quite important.

I've uploaded a new Debian package called sbcl-mt which contains a multithreaded version of SBCL. It is currently in the unstable distribution of Debian and will move to the testing distribution in the next few weeks, users can have their choice of running either the single or the multi-threaded version of SBCL.

Since the .fasl format is not compatible between the single and multi-threaded versions of SBCL, the Debian Common Lisp Controller package maintains separate directories for sbcl and sbcl-mt compiled files. Also, to help people who want to have both sbcl and sbcl-mt running on their Debian system, I've changed the default fasl extension for sbcl-mt to be .faslmt.

SBCL's Surprise

Since working on a AllegroCL-compatible REPL (read-eval-print-loop) for SBCL, I've been spending more time with SBCL. SBCL has focused on their source-code portability and understandability rather than performance optimizations. That's all nice, though benchmarks in SBCL have often underperformed other CL implementations.

I've finished a new set of benchmarks with UMLisp and the latest version of hyperobject. This version of hyperobject adds processing of slot options and also uses more features from the Art of the Metaobject Protocol. Hyperobject has an improved print architecture that is much faster and as well as more flexible and extensible. I've revised my benchmark program so results are not directly comparable to previous published benchmarks. I've also tested Scieneer Common Lisp (SCL) which hyperobject fully supports.

The win for SBCL in this benchmark is huge. It'll be interesting to investigate why this is.

ImplLoad (user/total)Print (user/total)
AllegroCL 6.28.3/13.85.5/5.7
CMUCL 18d+6.3/123.6/5
Lispworks 4.27.0/123.5/4
SBCL 0.pre8.581.8/6.41.8/1.9
SCL 1.1.14.7/10.24.5/4.8

April 22, 2003

Units package

I've submitted a new Debian package for the Common Lisp Units software. It's does a very fine job with simple and complex units conversions.

Hyperobject work-around

With Christophe Rhode's expert help, we found the spot where Hyperobject was failing with the latest CVS versions of CMUCL. I've been able to work around this CMUCL bug by temporarily removing a feature in Hyperobject that UMLisp is not currently using.

This work-around is great because I've been wanting to try the UMLisp benchmark with the MOP enhancements that Gerd Moellmann has added in the post-18e CMUCL release. The preliminary benchmarks show a significant improvement in the new version of CMUCL. I'll post a full set of benchmarks after the CMUCL bug gets fixed.

Thanks, Christophe!

64-bit addressing

The day has finally come for the 64-bit Opteron CPU; reviews are posted in the usual sites. I'm very excited about chip as I've been bumping against the 1.6GB process limit with 32-bit architectures for several years.

I've already run Debian with a 64-bit toolchain with x86-64 software emulation using Bochs. Though I'm excited about the 64-bit hardware, it really won't do much good for me until there are x86-64 Common Lisp implementations. I'm hoping that such a port will be created later this year.

April 29, 2003

MOP Improvements

I'm quite indebted to Gerl Mollermann and Christophe Rhodes for their outstanding work on improving the MOP (Metaobject Protocol) implementations in SBCL and CMUCL. The latest set of hyperobject improvements exposed bugs in both SBCL and CMUCL. Gerd and Christophe find and squash bugs in a matter of hours. With their efforts, the MOP implementations in these Common Lisp implementations have reached the high level of AMOP compliance that I've found with AllegroCL. Along with better AMOP compliance and big bug reductions, Gerd's 18e+ MOP incorporates big performance optimizations in CMUCL.

With their improvments, I've generalized the attributes slot metaclass in my kmrcl helper package to work with CMUCL, SBCL, and SCL in addition to the long-standing AllegroCL support.

CTSim (the Polish Edition)

The author of this Computed Tomography tutorial page asked me to take a look at the work he'd done with my CTSim program. I had the expectation that my Polish illiteracy would prevent me from understanding his work. However, the author did such a great job at grabbing screenshots of CTsim and putting them in a logical order, the page made a lot of sense to me. Perhaps one day someone will translate it to English. He asked for my permission to present a paper about using CTSim to teach Computed Tomography concepts. I enthusiastically encouraged him to do so.

CTSim (the Movie)

I hadn't notice this on my first "reading" of the Polish CTSim tutorial page: the author created an AVI movie of CTSim's reconstruction animation. Very cool.

Latest MOP Benchmark

With Gerd's and Chrisophe's MOP fixes, I've been able to run the UMLisp benchmark against the latest versions of CMUCL and SBCL. I've double the number of runs in this series compared to the last published benchmarks. The big change is CMUCL with Gerd's new CLOS/MOP optimizations. CMUCL 18e+ has doubled it's speed in the print benchmark compared to 18d+. Nice work!

I've included SBCL-MT, the multi-threaded version of SBCL, in this series. It nicely performs nearly identically to it's single-threaded version.

ImplLoad (user/total)Print (user/total)
AllegroCL 6.217.0/27.711.0/11.1
CMUCL 18e+2.8/11.93.0/3.2
Lispworks 4.212.4/239.1/10
SBCL 0.pre8.1183.1/12.53.9/4.2
SBCL-MT 0.pre8.1183.0/12.63.7/4.5
SCL 1.1.18.8/20.19.2/9.7

About April 2003

This page contains all entries posted to Kevin Rosenberg in April 2003. They are listed from oldest to newest.

November 2002 is the previous archive.

May 2003 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.