SILC: Simple Interface for Library Collections

バージョン: 1.3 (2007年10月31日)

はじめに

本パッケージには, 行列計算ライブラリインタフェース SILC のソースコード, サンプルプログラム, およびドキュメントが含まれています.

SILC は, 行列計算ライブラリを計算環境やプログラミング言語に依存しない 方法で利用できるようにする新しいフレームワークです. 従来の関数呼び出し によるライブラリの利用法では, ユーザプログラムが特定のライブラリに依存 するため, 別のライブラリや計算環境を利用するにはソースコードの大幅な書 き換えが必要です. 一方, SILC のユーザプログラムでは, 行列やベクトルな どのデータに名前を付けてサーバに預け, 計算は文字列 (数式) で指示します. 数式中の演算子は適当なライブラリ関数の呼び出しに翻訳されてサーバ側のメ モリ空間で実行されます. そのため, 用いるライブラリや計算環境をユーザプ ログラムの修正なしに容易に変更できます. また, 計算指示に数式を用いるの で, どのプログラミング言語でも同じ方法でライブラリを利用できます.

SILC の設計および実現方法については以下の論文をご参照下さい.

SILC を動かしてみるには

SILC は Unix/Linux 環境および Windows 環境で動作します. Unix/Linux 環 境ではソースコードをコンパイルする必要があります. Windows 環境ではコン パイル済みのバイナリパッケージが利用できます. バイナリパッケージの詳細 については README.win32.ja ファイルをご覧下 さい.

Unix/Linux 環境および Microsoft Windows 環境で SILC のソースコードをコ ンパイルして実行するには以下のソフトウェアが必要です.

また, 以下の行列計算ライブラリを SILC サーバに組み込んで利用できます.

SILC のソースコード (silc-1.3.tar.gz) は以下の場所から入手できます:

http://www.ssisc.org/silc/index-ja.html

silc-1.3.tar.gz からソースコードを取り出すには次のコマンドを実行し ます:

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

これによりカレントディレクトリの silc-1.3/src/ ディレクトリ内に SILC のソースコードが展開されます. このディレクトリに移動して下さい:

cd silc-1.3/src

次にコンパイルする環境に合わせて make.inc というファイルを作成しま す. inc/ ディレクトリ内にいくつかの計算環境向けの作成例があります. これらの例を参考にしてコンパイラオプション, ライブラリファイルの場所等 を定義して下さい.

GNU/Linux 環境で GCC を用いる場合は inc/make.gcc が利用できます. 次のようにコピーして make.inc を作成して下さい:

cp inc/make.gcc make.inc

Windows 環境では MinGW (http://www.mingw.org/) に含まれる GCC と GNU Make, および GnuWin32 (http://gnuwin32.sourceforge.net/) の GNU Bison と GNU Flex が利用できます. 以下のバージョンでの動作を確認しています:

上記のソフトウェアをインストールした上で, inc/make.mingw をコピー して make.inc を作成して下さい:

cp inc/make.mingw make.inc

他の環境では make.inc ファイルを新規作成する必要があります. 詳しく は SILC 利用者マニュアル の2.1 節「SILC サーバ のコンパイル」をご覧下さい.

make.inc ファイルを作成したら, make コマンドを実行して SILC サーバ とサンプルプログラムをコンパイルします:

make

サンプルプログラムの実行方法は以下の通りです. まず SILC サーバを起動し ます (以下の例は Unix/Linux 環境の場合です. Windows 環境では / [ス ラッシュ] を \ [円マーク] に読み替えて下さい):

cd src/server
./server

次にサンプルプログラム (例: src/client/demo3.c) を実行します:

cd src/client
./demo3

このプログラムは三重対角行列を係数とする連立一次方程式を解きます. ||b-Ax|| = 3.784025e-12 のような出力が得られれば正常に動作しています (実際の値は計算環境によって変わります).

また, console プログラム (src/client/console.c) を用いて対話的に計 算を行なうことができます:

./console

2×2行列 A とベクトル b の積 A * b および b' * A を求める例を 以下に示します (ここで ' [シングルクォート] は転置を表します):

> 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
>

各行の > 以降がユーザの入力です. 計算を終了するには, Unix/Linux 環 境では Ctrl-D を, Windows 環境では Ctrl-Z を入力します. console プログ ラムの詳細については README.console.ja ファ イルをご覧下さい.

ユーザプログラムの作り方

SILC の応用プログラム (以下, ユーザプログラム) の作成方法は SILC 利用 者マニュアル に記載されています. 利用者マニュア ルでは, C 言語および Fortran で SILC のユーザプログラムを作成する方法 を説明しています. また, Microsoft Windows 上でのユーザプログラムの開発 については README.win32.ja ファイルを合わせ てご参照下さい.

ユーザプログラムの開発には, C と Fortran のほか, オブジェクト指向スク リプト言語 Python (http://www.python.org/) が利用できます. ただし, Python によるユーザプログラムの開発方法を述べたドキュメントはまだ用意 されていません. Python によるユーザプログラムの記述方法は C の場合とほ ぼ同じです. また, サンプルプログラムが src/client/python/ ディレク トリにあります.

サンプルプログラム

SILC のユーザプログラムのサンプルが src/client/ ディレクトリ以下に あります. 主なユーザプログラムを以下に示します.

未実装の機能

本ソフトウェアは開発途上のため未実装の機能があります. 主な未実装の機能 を以下に示します.

回帰テスト

SILC の動作を検証するために回帰テスト (regression tests) が用意されて います. 回帰テストはそれ自体が Python で書かれた SILC のユーザプログラ ムです. 実行には Python 2.4 以降が必要です. 回帰テストは以下の手順で実 行します:

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

文献の引用についてのお願い

SILC を利用した研究成果について今後お書きになる研究論文のリファレンス に以下の文献を含めてくださるようお願いいたします.

また, 本ソフトウェアを利用した研究成果 (研究論文, 応用ソフトウェアなど) を下記までお送りいただけると幸いです.

〒113-8656 東京大学大学院 情報理工学系研究科
西田 晃
E-mail: devel at ssisc.org

著作権および利用条件

本ソフトウェアの著作権は SSI プロジェクトにあります. あなたは所定の利 用条件にしたがって自由に本ソフトウェアを利用できます. 本ソフトウェアは 無保証です. 本ソフトウェアの詳細な利用条件については LICENSE ファ イルをご覧下さい.

また、本パッケージには以下の著作物が含まれています. これらの著作物は当 該著作物の利用条件にしたがって利用して下さい.

連絡先

バグ報告, ご要望, ご意見等をお寄せ下さい. 下記の宛先までお気軽にどうぞ.

SSI プロジェクト <devel at ssisc.org>

更新履歴

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