SILC: Simple Interface for Library Collections

Version: 1.3 (October 31, 2007)

Introduction

This package contains the source code of Simple Interface for Library Collections (SILC), sample programs, and documentations.

SILC is a framework that allows you to use various matrix computation libraries independently of particular computing environments and programming languages.

If you write user programs in the traditional programming style based on direct calls of library functions, the user programs depend on particular libraries in use. This dependency requires you to make a considerable amount of modification to the user programs when you want to use different libraries, possibly in other computing environments.

User programs in the SILC framework, on the other hand, utilize libraries by depositing data (such as matrices and vectors) to a SILC server together with user-defined names for later reference, and making requests for computation by means of textual mathematical expressions. The mathematical expressions are translated into calls of appropriate library functions, which are carried out in the server's memory space independently of the user programs. When the results of computation are needed, the user programs retrieve them by specifying the names of data to be fetched.

By using SILC, you can easily make use of alternative libraries and computing environments without modification in user programs. In addition, user programs for SILC can be written in various programming languages because of the use of mathematical expressions to represent requests for computation.

Please refer to the following documents for the concepts, design, and implementation of SILC.

Getting started with SILC

SILC runs in Unix-like environments and Microsoft Windows. In a Unix-like environment, you need to compile the source code of SILC to obtain executable files. For Windows, a precompiled binary package of ready-made executable files is available. See README.win32.en for more information on the binary package for Windows.

The following pieces of software are required to compile the source code of SILC in Unix-like and Microsoft Windows environments:

You are able to use the following matrix computation libraries by building them into SILC.

You can obtain the source code of SILC (in a compressed archive file named silc-1.3.tar.gz) from the following location:

http://www.ssisc.org/silc/

The contents of the compressed archive file can be extracted as follows:

gzip -cd silc-1.3.tar.gz | tar xvf -

The source code of SILC is stored in the silc-1.3/src/ directory in the current working directory. Move to silc-1.3/src/ as follows:

cd silc-1.3/src

Next, you need to create a file named make.inc. This file defines environment-specific compiler options, locations of library files, and so on. There are example files for several computing environments in the inc/ directory.

If you have a GNU/Linux system, you can use inc/make.gcc to compile SILC with GCC. Create the make.inc file as follows:

cp inc/make.gcc make.inc

On Microsoft Windows, you can use GCC and GNU Make in MinGW (http://www.mingw.org/) and GNU Bison and GNU Flex in GnuWin32 (http://gnuwin32.sourceforge.net/) to compile SILC. The following installer packages are used to test the current version of SILC:

After installing these packages, create the make.inc file from inc/make.mingw as follows:

cp inc/make.mingw make.inc

For other computing environments, you need to create a make.inc file of your own. Please take a look at Section 2.1, "Compiling a SILC server", in SILC User's Manual for more information.

After you have created the make.inc file, run the make command to compile SILC:

make

Before you run sample programs, you need to start a SILC server as follows (NB: the following examples are for Unix/Linux environments; on Windows, please replace / [slash] with \ [backslash]):

cd src/server
./server

Then start a sample program (for example, src/client/demo3.c) as follows:

cd src/client
./demo3

This program solves a system of linear equations Ax = b, where A is a tridiagonal matrix. If you get an output message like ||b-Ax|| = 3.784025e-12, the program works fine (the decimal value in the output message may vary according to the computing environment in use).

Moreover, you can use the console program (src/client/console.c) to interactively carry out computation by mathematical expressions:

./console

The following example shows how to compute matrix-vector products A * b and b' * A using the console program, where A is a 2-by-2 matrix, b is a 2-vector, and the single quote ' means transposition:

> A = {1, 2; 3, 4}
> b = {5, 6}
> x = A * b
> pprint x
column vector, 2 elements of int
  [1] = 23
  [2] = 34
> x = b' * A
> pprint x
row vector, 2 elements of int
  [1] = 17
  [2] = 39
>

Letters after > of each line are user's input. Type Ctrl-D (in Unix-like environments, or Ctrl-Z on Windows) to exit. For more information, take a look at the README.console.en file.

Creating user programs for SILC

Please consult SILC User's Manual for the development of application programs (referred to as user programs) for SILC. The manual deals with user programs written in C and Fortran. The development of user programs for SILC on Microsoft Windows is also covered in the README.win32.en file.

You can also write user programs for SILC in object-oriented scripting language Python (http://www.python.org/). At the moment, however, there is no document about the development of user programs in Python. It is worth noting that there is a good correspondence between user programs in Python and those in C. You can find sample programs in Python in the src/client/python/ directory.

Sample programs

There is a number of sample programs for SILC in the src/client/ directory. Some programs are described as follows.

Open issues

The software is still under active development, so that some features are not fully implemented. Major features not implemented yet are as follows:

Regression tests

There is a set of regression tests for validating the features of SILC. These tests are user programs for SILC themselves, and are written in Python. You need Python 2.4 or later to run the programs. To carry out the regression tests, simply run one program after another as follows:

cd src/client/python
python test_dense.py
python test_sparse_crs.py
python test_leq.py
python test_augmented.py
python test_subscript.py
python test_concat.py
python test_put_matrix.py
python test_matrix_format.py

Request for citation

We would like to ask you to cite the following documents in the papers you write with regard to the results of research using SILC.

We would also appreciate if you send us any kind of results (papers, application programs, etc.) that you have using this software. Our postal and e-mail addresses are as follows:

Akira Nishida
Graduate School of Information Science and Technology,
The University of Tokyo,
7-3-1 Hongo, Bunkyo-ku, Tokyo 113-8656, Japan.
E-mail: devel at ssisc.org

Copyright and license

The copyright holder of this software is the SSI Project. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. See the LICENSE file for the precise terms and conditions for the use of this software.

This software contains the following pieces of software by other people and projects. Please use them according to the license terms and conditions specified by their copyright holders.

Contact

We appreciate your comments, bug reports, feature requests, and so on. Please feel free to use the following address to write us:

The SSI Project <devel at ssisc.org>

What's new?

$Id: README.en,v 1.16 2007/10/31 05:18:48 kajiyama Exp $