Center for Integrative Bioinformatics Vienna
Max F. Perutz Laboratories
Dr. Bohr Gasse 9
A-1030 Vienna, Austria
To allow programmers to employ the full computational capabilities of GPUs as well as multi-core CPU for the alignment calculation, MASon provides three implementations. (1) A CPU version including SSE instructions, (2) a CUDA based version for Nvidia graphic cards and (3) an OpenCL implementation suitable for GPUs and CPUs. All of them are encapsulated in shared objects also called dynamic linked libraries. Loading a shared object during runtime only requires a few lines of code (see dynamic loading). Each shared object exports functions:
Creates and returns an IAlignment object. The IAlignment interface defines functions for calculation the alignment scores and the full alignments. A detailed description can be found here.
Deletes the IAlignment object. All allocated memory is released.
Deletes a char array which was allocated by the shared object (currently not used).
Sets the ILog object.
Sets the IConfig object.
Returns the version number of the shared object.
Communication between the host program and the shared object is handeld via two interfaces. IConfig is used to pass parameters to the shared objects. A complete list of parameters can be found here. ILog is used to send messages from the shared object to the host program. In order to use MASon these two interfaces have to be implemented by the user. How to do this is illustrated in the example program included in the MASon source code.