From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id JAA22421 for caml-red; Thu, 25 Jan 2001 09:07:07 +0100 (MET) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id BAA13400 for ; Thu, 25 Jan 2001 01:11:45 +0100 (MET) Received: from miss.wu-wien.ac.at (miss.wu-wien.ac.at [137.208.107.17]) by nez-perce.inria.fr (8.11.1/8.10.0) with ESMTP id f0P0Bif03383 for ; Thu, 25 Jan 2001 01:11:44 +0100 (MET) Received: (from mottl@localhost) by miss.wu-wien.ac.at (8.9.0/8.9.0) id BAA04500 for caml-list@inria.fr; Thu, 25 Jan 2001 01:11:43 +0100 (MET) Date: Thu, 25 Jan 2001 01:11:43 +0100 From: Markus Mottl To: OCAML Subject: Announcement: LACAML Message-ID: <20010125011143.A11727@miss.wu-wien.ac.at> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i Sender: weis@pauillac.inria.fr Hello, as recently proposed, there should be some interface to the BLAS and LAPACK-libraries for efficiently doing linear algebra with bigarrays. I have just put my first attempt ("lacaml") online: it only implements a couple of functions that I wanted to try out, but I have tried to design this interface as cleanly as possible. Installation should be simple enough, too. Adding further functionality to this library by following the implementation of the other functions is not difficult either (thanks to the bigarrays), but it still requires some work, because the FORTRAN-function interfaces are usually very fat: they often take more than 10 arguments. This means writing a lot of error checking code if one wants to handle all errors in OCaml - the default error handling of these libraries is probably not advisable, because it aborts program execution... Here is a part of the README explaining some features: --------------------------------------------------------------------------- * The BLAS- and LAPACK-libraries have evolved over about two decades of time and are therefore extremely mature both in terms of stability and efficiency. * The OCaml-interface was designed in a way to combine both the possibility of gaining optimum efficiency (e.g. by allowing the creation of work arrays outside of loops) with simplicity (thanks to labels and default arguments). * The code is precision-independent (precision of floats). There are two modules that implement exactly the same interface modulo the precision type. If you refer to elements in this interface only, your code becomes precision-independent, too: you can choose at anytime whether you want to use single-precision or double-precision simply by "open"ing the required module. * You can fully exploit the library within multithreaded programs: most numerical routines are likely to run for a long time, but they will never block other threads. This also means that you can execute several routines at the same time on several processors if you use native threads. * To make things easy for people used to the "real" implementation in FORTRAN but also for beginners who need detailed documentation, both function- and argument names have been kept compatible to the ones used in the BLAS- and LAPACK-documentation. Only exception: you need not prefix functions with "s" or "d" to indicate the precision of floats, because OCaml gives us more powerful means to choose it. --------------------------------------------------------------------------- I have already registered the project at SourceForge so that other people can contribute functions they need (I will only implement ones that are directly relevant to my work, but I will help if there are problems): http://sourceforge.net/projects/lacaml Just tell me if you want to join! Unfortunately, there are currently some technical problems with CVS at SourceForge, which didn't allow me to check in my sources yet. In the meanwhile you can get them from here: http://miss.wu-wien.ac.at/~mottl/ocaml_sources Best regards, Markus Mottl -- Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl