RAP 機能概要

RAP Standard User Guide
RAP Lite User Guide

システムの特長

システム構成

RAP サーバは、並列プログラムの実行に加え、並列コンパイラ、プログラムソース管理、
GUI やデバッグのためのデータサーバとしても機能します。

RAPサーバ
RAPクライアント
外部機器 (オプション)
  • I/O 通信 (任意プロトコル)


並列実行コア

並列実行の単位をセルと呼び、それぞれのセルはc言語のプログラムを個別に実行します。
セル同士や外部との通信は無く、セルから見た入出力は共有メモリしかありません。

セル
 (cプログラム)
セル
 (cプログラム)
セル
 (cプログラム)
セル
 (cプログラム)
・ ・ ・
↓↑ ↓↑ ↓↑ ↓↑
共有メモリ
 (c構造体)


GUI サーバ、デバッグサーバ

GUI やデバッガはセルとは関係なく、直接共有メモリにアクセスします。
GUI は自由に定義できる HTML、デバッガは定型の HTML と、若干の違いはありますが、
いずれも共有メモリのデータをリアルタイムで表示し、値を設定することもできます。

GUI
  • HTML による自由な変数値表示
  • POST による変数値設定

 (ブラウザ)
デバッガ
  • 定型 HTML による変数値表示
  • c言語書式での変数値設定

 (ブラウザ)
↓↑ ↓↑
GUI サーバ
デバッグサーバ
↓↑ ↓↑
共有メモリ
 (c構造体)


GUI

標準の GUI には、クライアント PC のブラウザを使用します。
プログラミングとしては、ページの HTML を出力するcプログラムを書くだけで、
GUI サーバが並列実行コアのデータと連携し、HTTP リクエストも処理します。
Ajax によるスムーズな更新や、 POST による変数値の設定も可能です。

GUI プログラム例 (一部抜粋) /mon/paint/demo.c
 printf ("speed = %d, start = %d, control= %d",
         gm.speed, gm.start, gm.control);

 printf ("<table>");
 for (y=1; y<=19; ++y) {
    printf ("<tr>");
    for (x=1; x<=21; ++x) {
       printf ("<td><img src='img/%d.png'></td>", gm.grid[x][y]); 
    }
    printf ("</tr>");
 }
 printf ("</table>");


デバッガ

デバッガは、拡張子 .d設定ファイルに共有メモリの変数名を列挙するだけで使えます。
設定ファイルを変更した時は、いつでも「up」ボタンをクリックして、 一覧を更新できます。
変数値の設定は、「変数名=値」の形式で入力し「send」ボタンをクリックすると実行できます。

デバッガ設定ファイル例 /mon/test.d
 speed
 start
 control

 frame
 second


プログラミング

RAP プログラムは、RAP サーバ上に複数のテキストファイルとして作成します。
エディタは任意のものをお使いいただけますが、日本語は EUC としてください。
これらのソースファイルにアクセスする方法は、いくつかあります。

プログラム作成のはじめに、共有メモリの内容を定義します。
共有メモリを定義するには、作業フォルダトップに /gm.h というファイルを作成します。
c言語の書式で変数宣言を列挙すると、各セルでは gm.変数名としてアクセスできます。

共有メモリ定義例 /gm.h
 int speed;
 int start;
 int control;

 int frame;
 int second;

セルのプログラムは、作業フォルダ以下の任意のフォルダに自由に作成できます。
ここで定義した変数は、セル内のローカル変数になります。
関数定義等は不要ですので、実行文をそのまま記述してください。

セルプログラム例 /src/sample.c
 int my_local_count = 0;

 if (gm.speed) gm.display = "運転中";
 else gm.display = "停止中";

 if (gm.start == 0) gm.control = 0;
 else if (gm.control == 0) gm.control = 1;

 ++gm.frame;
 ++my_local_count;