Win32 用 SILC バイナリパッケージ

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

はじめに

本ファイルでは Win32 環境向けに作成された SILC バイナリパッケージの利 用方法を説明します. バイナリパッケージは silc-1.3-mingw32.zip とい うファイル名の ZIP 形式のアーカイブファイルの形で配布されています. こ のパッケージには, 実行可能形式の SILC サーバ, サンプルプログラム, その 他のバイナリファイルが含まれています (Windows XP SP2 での動作を確認し ています). Windows マシンが手元にあり, もっとも手間のかからない方法で SILC を試してみたい方は, 本バイナリパッケージをご利用下さい.

Quick start

  1. バイナリパッケージを展開してすべてのファイルを取り出します. 以下の 説明では取り出したファイルが C:\silc-1.3\ ディレクトリにあると 仮定します.

  2. コマンドプロンプトを開いて (例: スタートメニューから「すべてのプロ グラム」→「アクセサリ」→「コマンドプロンプト」を選択), 次の要領で C:\silc-1.3\src\server\ をカレントディレクトリにします (各行の > 以降がユーザの入力です):

    > C:
    > cd \silc-1.3\src\server
    

    このディレクトリにある server.exe を実行して SILC サーバを起動 します:

    > server
    

    サーバはフォアグラウンドで起動して以下のようなデバッグ情報を表示し ます:

    single thread
    load_modules("./modules/formats")
    silc_register_format("SILC:dense (column major)")
    silc_register_module("dense")
    silc_register_format("SILC:Band")
    silc_register_module("sparse_band")
    silc_register_format("SILC:CRS")
    silc_register_module("sparse_crs")
    silc_register_format("SILC:JDS")
    silc_register_module("sparse_jds")
    load_modules("./modules")
    silc_register_module("blasmodule")
    silc_register_module("coremodule")
    silc_register_module("leq_cg")
    silc_register_module("leq_gs")
    silc_register_module("leq_lis")
    silc_register_module("leq_lu")
    silc_register_module("linpackmodule")
    
  3. 別のコマンドプロンプトを開いて C:\silc-1.3\src\client\ ディレク トリをカレントディレクトリにします. このディレクトリには SILC のサ ンプルプログラムのソースファイルと実行可能形式ファイルが入っていま す:

    > C:
    > cd \silc-1.3\src\client
    

    続いて SILC のユーザプログラム (例えば demo3.exe) を実行します:

    > demo3
    

    このプログラムは, もう一方のコマンドプロンプトで動作している SILC サーバに接続し, サーバの提供するライブラリルーチンのひとつを用いて 連立一次方程式 Ax = b を解きます. このプログラムもデバッグ情報を表 示しながら処理を進めます. 最後に, 以下の例のように実行時間 (単位は 秒) と得られた解の残差ノルム ||b−Ax|| を表示して終了します:

    0.063935s
    ||b-Ax|| = 3.839510e-015
    

    実際の値は異なることがありますが, 同様の数値が得られていればプログ ラムは正しく動作しています.

  4. 同じディレクトリにある console プログラム (console.exe) を用い て対話的に計算を行なうことができます:

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

    console プログラムを終了するには Ctrl-Z を入力します. このプログラ ムの詳細については README.console.ja ファ イルをご覧下さい.

注意:.dll ファイルに関するエラーメッセージが表示されるときは以下のよ うに環境変数 PATH を設定して下さい:

> set PATH=C:\silc-1.3\src\server;%PATH%

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

SILC の応用プログラム (以下, ユーザプログラム) の作成方法は SILC 利用 者マニュアル に記載されています. 利用者マニュア ルでは, C 言語および Fortran で SILC のユーザプログラムを作成する方法 を説明しています.

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

C または Fortran で SILC のユーザプログラムを作るには以下のことが必要 です.

  1. プログラムのソースコードの冒頭でヘッダファイルをインクルードします. C で作成する場合は src\client\client.h を, Fortran で作成する場 合は src\client\fortran\client.h を用います.
  2. src\client\client.c または src\client\libsilc.a を WinSock2 ライブラリと共にユーザプログラムにリンクします.

例として, Microsoft Visual Studio .NET 2003 を用いる場合と MinGW (Windows 用の GCC) を用いる場合について, 行列 A の自乗 (行列積) を計算 する C のプログラム mmul.c をコンパイルして実行するまでの手順を示 します. プログラムの内容は以下の通りです (プログラム中の関数や定数につ いては「利用者マニュアル」を参照して下さい):

#include <stdio.h>

#include "client.h"

int main(int argc, char *argv[])
{
  silc_envelope_t object;
  double A[4] = {1.0, 2.0, 3.0, 4.0};
  double X[4];

  SILC_INIT();

  object.v = A;
  object.type = SILC_MATRIX_TYPE;
  object.format = SILC_FORMAT_DENSE;
  object.precision = SILC_DOUBLE;
  object.m = object.n = 2;
  SILC_PUT("A", &object);

  SILC_EXEC("X = A * A");

  object.v = X;
  SILC_GET(&object, "X");

  SILC_FINALIZE();

  printf("A =\n");
  printf(" %e %e\n", A[0], A[2]);
  printf(" %e %e\n", A[1], A[3]);
  printf("A * A =\n");
  printf(" %e %e\n", X[0], X[2]);
  printf(" %e %e\n", X[1], X[3]);
}

著作権および利用条件

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

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

連絡先

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

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

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