Main Page | Directories | File List | Globals

libpmv

1

Description

The name libpmv was chosen as an acronym for the Library of Portable Matrix Vectorized math functions. The libpmv has matrix-level routines similar to some functions from math.h and gsl_math.h. Since many of these functions can be computed more efficiently when operating simultaneously on multiple operands, I created this interface makes such optimizations possible.

In a general sense, the purpose of this library is to improve speed. I have included (and continue to include) functions that are not part of math.h or gsl_math.h, but which are similar (in my judgement) and subject to optimization by the same techniques. For example, pmv_softmax() and pmv_sigmoid() were added to support my neural network implementations.

My vision for this library is to merge it into liboil, which provides a framework for choosing among multiple implementations at runtime.

Implementation

The routines of the library are described in pmv.h. They implemented twice in this repository. The file pmv_ref.c implements the routines in generic C. The file pmv_amd.c implements the routines by using AMD's libacml_mv, which offers faster performance through SIMD parallelization.

Dependencies

This library depends on ATLAS, libm, and libgsl. The AMD implementation depends additionally on libacml_mv.

Download

This library resides in Lisa's cvs repository in a non-PLearn folder. To retrieve it, do this:

cvs -d :pserver:USERNAME@cvs.iro.umontreal.ca:/home/cvs/cvslisa/cvsroot login

cvs -d :pserver:USERNAME@cvs.iro.umontreal.ca:/home/cvs/cvslisa/cvsroot checkout bergstrj/src/libpmv

Let me know if you would like to download the source, but haven't access to this machine. I'm considering transfering this code to a public cvs, like savannah.

Installation

Installation of this software should be trivial, each implementation is contained in a single .c file.
Generated on Wed Sep 27 13:21:20 2006 for libpmv by  doxygen 1.4.4