製品情報 : ドメイン特化型コンパイラ Goose



ドメイン特化型コンパイラ


  #pragma goose parallel for loopcounter(i, j) \
                             precision("double") 
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            for (k = 0; k < 3; k++) {
                dx[k] = x[j][k] - x[i][k];
            }
            r2 = dx[0] * dx[0] + dx[1] * dx[1] +
                 dx[2] * dx[2] + eps2;
            rinv = rsqrt(r2);
            mrinv = m[j] * rinv;
            mr3inv = mrinv * rinv * rinv;
            for (k = 0; k < 3; k++) {
                a[i][k] += mr3inv * dx[k];
            }
            pot[i] -= mrinv;      
        }
    }



サポートする開発環境

現段階では、ソースコード記述言語として C 言語を、ハードウェアアクセラレータとして 当社 GRAPE-DR と AMD、NVIDIA 両社の GPU をサポートしています。 以下の記述言語とアクセラレータ (およびアーキテクチャ、フレームワーク等) へ順次対応予定です。

製品内容

本製品には以下のものが含まれています。

動作環境

64 ビット Linux OS (x86_64) 上で動作します (ほとんどの機能は 32 ビット Linux OS でも動作しますが、現時点では GRAPE-DR 向けの機能の一部に 32 ビット OS 上での動作を未確認のものがあります)。

動作に必要なソフトウェア

製品ラインアップ

プログラムの記述例

Goose C コンパイラ goosecc でコンパイル可能なアプリケーションプログラムの例を示します。

実測性能


演算精度の実測例

生成される中間記述の例

Goose へ与える C 記述

  #pragma goose parallel for loopcounter(i, j) \
                             precision("double") 
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            for (k = 0; k < 3; k++) {
                dx[k] = x[j][k] - x[i][k];
            }
            r2 = dx[0] * dx[0] + dx[1] * dx[1] +
                 dx[2] * dx[2] + eps2;
            rinv = rsqrt(r2);
            mrinv = m[j] * rinv;
            mr3inv = mrinv * rinv * rinv;
            for (k = 0; k < 3; k++) {
                a[i][k] += mr3inv * dx[k];
            }
            pot[i] -= mrinv;      
        }
    }

Goose によって生成される記述

GRAPE-DR 向け:
   カーネル呼び出し (C による記述)
   カーネル (VSM による記述)
    loop body
    vlen 4
    bm ccc_reg0 $t
    upassa $ti $lr0v $lm120v
     ....
    fadd $lr16v $lm104v $t 
    upassa $ti $ti $lm104v
    nop
    nop
    fadd $lr24v $lm112v $t 
    upassa $ti $ti $lm112v
    nop
    nop

AMD 社製 GPU 向け
   カーネル呼び出し (C による記述)
   カーネル (ATI-IL による記述)
    whileloop
      sample_resource(7)_sampler(7) r300, r200.xy
      sample_resource(8)_sampler(8) r301, r200.xy
      sample_resource(9)_sampler(9) r302, r200.xy
      ....
    ;; force
    func 0
      ixor r999, r100, l8
      dadd r747.xy, r300.xy, r999.xy
      dadd r747.zw, r300.zw, r999.zw
      ixor r999, r101, l8
      ....

NVIDIA 社製 GPU 向け
   カーネル呼び出し (CUDA C による記述)
   カーネル (CUDA C による記述)
    extern __shared__ char smembuf_[];
    int kbdim_ = blockDim.x;
    f00_jp_t *f00_jp_smem_ = (f00_jp_t *) smembuf_;
    ....
    for (int j_ = jstart_; j_ < jsup_; j_ += jstride_) {
        dx_0_ = f00_jp_smem_[j_].x_j_0_ - f00_ip_[isrc_].x_i_0_;
        dx_1_ = f00_jp_smem_[j_].x_j_1_ - f00_ip_[isrc_].x_i_1_;
        dx_2_ = f00_jp_smem_[j_].x_j_2_ - f00_ip_[isrc_].x_i_2_;
        r2 = dx_0_ * dx_0_ + dx_1_ * dx_1_ + dx_2_ * dx_2_ + eps2;
        rinv = rsqrt(r2);
        ....

旧製品

Goose Personal Edition 標準価格 400,000 円 (税抜)

10 人以内の、比較的小規模な利用者グループ向けの製品です。製品を インストールする PC の台数に制限はありません。

Goose Institutional Edition 標準価格 950,000 円 (税抜)

10 人を超える利用者グループ向けの製品です。製品をインストールする PC の 台数に制限はありません。またお求め頂いたグループ内であれば、利用者数に 制限はありません。

なお 10人を超える規模の組織 (大学や企業など) に所属する場合であっても、 実際の利用者が 10 人以下であれば、Personal Edition をお使い頂けます。

例: 企業の一部署や大学の研究室でご利用になる場合、利用者が 10人以下あれ ば Personal Edition をお使い頂けます。

Personal Edition および Institutional Edition には、 ご購入日より 1 年間の無償バージョンアップサービスと技術サポート (製品利用に際して生じる疑問や問題について、メールにて応対) が付属します。ご購入や製品に関するお問い合わせは info@kfcr.jp まで。

関連情報