- l. ケータイ,PDA でブラウズ
- l. ケータイ,PDA でブラウズ ( イメージ指向 )
コンパクトで Cell等に最適な マルチスレッディングエンジン
- Multithreading engine を演算器command に搭載してのlog 画像 と movie .
- ( movie , 10.56MB ) ( QuickTime )
- 論理演算器command 等を従えた 加算器command の実行の模様
( 0b11110001 + 0b00110000 + 0b1 = 0b100100010 という演算 ) .
- ( movie , 4.75MB ) ( QuickTime )
- フルアダー ( キャリ付き 1bit加算器 ) command における メインループからのバーボーズ出力の模様
( メインループが止まっていない事を御確認下さい . 0b1 + 0b0 + 0b1 = 0b10 という演算 .
ナイトリー版 ( エンジン部分はカレント版と同じ ) にて実演 ) .
- Log解説
- 上記の写真やmovie は local実行時のモノですが , 以下に remote host 2台 も加えた 3台 での論理演算 のlog を解説します .
1 xor 1 = 0 という演算です .
exitcodeだと 8bitの壁なりがあるので , stdout経由で答えを伝播します .
マルチスレッドなので , 亀レスが幾分入り乱れた掲示板のスレッドの様になっています . プロセスID を頼りに演算のリンクを辿って下さい .
- $ pu_-_logic_gate -v --pid $$ --dish poseidon 1 rodemu 32 --dish__c --xor 1 1
- xor演算を行う為にcommand 発行 . バーボーズモード .
分散シェルdish ( パッチ ) 経由 で 2つ ( ローカルと合わせると 3つ ) のホストを扱う 事を指定 .
最後のホストに割り当てるジョブの最大値はマージンをとって32 .
--pidオプションで シェルのシステムプロセスid を 渡す ( バーボーズ用 ) .
- ropurosu:91023:94415:system:pu_-_logic_gate: dish poseidon 1 rodemu 32 -c pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --nand 1 1 --pid 94415-1
- 91023は , 親となるシェルのシステムプロセスid ( --pidオプション経由で受け取った ) .
94415は , 自身 ( シェルから呼ばれたcommand ) のシステムプロセスid .
xor( a , t ) = and ( nand( a ,t ) , or( a , t ) ) なので , まず nandゲートを , スレッド発行して子プロセスとして dish経由で呼び出す
( :system:識別子は system()関数の名前に倣った ) .
その際のスレッド番号は1 ( その事を --pid 94415-1 として子プロセスに知らせる ( バーボーズ用 ) ) .
- ropurosu:91023:94415:system:pu_-_logic_gate: dish poseidon 1 rodemu 32 -c pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --or 1 1 --pid 94415-2
- SPEに頼るのでなくスレッドが潤沢に使える環境なので , nand演算の終了を待たずに , orゲートを , スレッド発行して子プロセスとして呼び出す .
94415-2 ( スレッド番号:2 ) を子プロセスに知らせる .
この時点で 直前のnand の答えは 親プロセスに帰っていない .
- dishに関係する冗長な改行出力 .
- 0b1true :poseidon:94415-2:3595:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --or 1 1 --pid 94415-2
- 演算結果 ( :exitcode: ) . 1 or 1 = 1 .
ホスト名フィールドから , リモート演算されたと分かる .
stdoutに出力され , それを親プロセスが受け取り , 受け取ったまま表示 .
親プロセスから渡された番号 ( 94415-2 ) から , 94415番プロセスに呼ばれた子プロセスと分かる .
自身が起動された際の commandlineのコピーもそれを裏付ける .
- 0b1true :poseidon:94415-2:3595:rt:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --or 1 1 --pid 94415-2
- 演算結果をリアルタイム的に目視する為の出力 ( :exitcode:でなく:rt: ) .
親プロセスが子供から受け取ったモノを stderrにバーボーズ表示 .
- rodemu:94415-1:4784:system:pu_-_logic_gate: dish poseidon 1 rodemu 32 -c pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 1 1 --pid 4784-1
- ホスト名の次のフィールドが 親プロセスから渡された 親プロセスid と子プロセス番号 ( 94415-1 ) .
つまり nandゲートから呼ばれたと分かる . 自身のシステムプロセスid は4784 .
and演算を行う為に子プロセスを更に別スレッド経由で発行する .
- dishに関係する冗長な改行出力 .
- 0b1true :poseidon:4784-1:3603:rt:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 1 1 --pid 4784-1
- 4784-1から呼ばれた and演算結果 のリアルタイム的表示 . 1 and 1 = 1 .
それを notすれば nand演算の完成 .
- rodemu:94415-1:4784:system:pu_-_logic_gate: dish poseidon 1 rodemu 32 -c pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --not 1 --pid 4784-2
- 4784-1が終わって and演算の答が回収されたのでそれをnot .
別スレッドだが not演算結果を受け取るまで発行できなかったので and演算との同時実行ではない .
- dishに関係する冗長な改行出力 .
- 0b0false :poseidon:4784-2:3611:rt:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --not 1 --pid 4784-2
- not演算終了 .
- dishに関係する冗長な改行出力 .
- 0b1true :poseidon:4784-1:3603:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 1 1 --pid 4784-1
- 4784-1の演算結果 ( :exitcode: ) . リアルタイム的表示の表示タイミングとの開きを見て取れる .
- 0b0false :poseidon:4784-2:3611:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --not 1 --pid 4784-2
- 4784-2の演算結果 ( :exitcode: ) . notゲートによる出力 .
- 0b0false :rodemu:94415-1:4784:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --nand 1 1 --pid 94415-1
- 4784全体の nand演算 の結果 . nandゲートによる出力 .
- 0b1true :poseidon:4784-1:3603:rt:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 1 1 --pid 4784-1
- 4784-1の演算結果を受け取った親による出力 .
- 0b0false :poseidon:4784-2:3611:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --not 1 --pid 4784-2
- 4784-2の演算結果 ( :exitcode: ) . notゲートによる出力を受け取った親による出力 .
- 0b0false :rodemu:94415-1:4784:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --nand 1 1 --pid 94415-1
- 4784全体の nand演算 の結果 . nandゲートによる出力を受け取った親による出力 .
- ropurosu:91023:94415:system:pu_-_logic_gate: dish poseidon 1 rodemu 32 -c pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 0 1 --pid 94415-3
- シェル直属の親94415 が これまでの演算結果 1 nand 1 と 1 or 1 を and演算 .
- dishに関係する冗長な改行出力 .
- 0b0false :poseidon:94415-3:3619:exitcode:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 0 1 --pid 94415-3
- and演算exitcode .
- 0b0false :poseidon:94415-3:3619:rt:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --and 0 1 --pid 94415-3
- and演算rt . exitcode優先出力になっているので後になっている .
- 0b0false :ropurosu:91023:94415:exitcode:pu_-_logic_gate -v --pid 91023 --dish poseidon 1 rodemu 32 --dish__c --xor 1 1
- 親94415 の出力結果 . これを受け取る者がいない ( と言うかシェル ) なので rt出力を行う者も居ない . よって :exitcode:の一行のみ表示 .
1 xor 1 = 0 .
- $
- マルチスレッディングエンジン仕様
( Specifications of Multithreading engine )
- Ruby のスレッドを自力管理 . スレッドを追跡準備を伴い発行 , 処理完了も自力で検出し返り値を用いずに結果をやはり自力取得 , 被追跡スレッドを自力で kill . マシン語移植に最適 .
Manually controlling the thread of Ruby . Manually lock-on for starting thread , detect the finish of job at manually then get result at also manually as without the return of the thread , and kill the thread manually . Much suitable for porting to the Machine language .
- 本パッケージを Cell 用 SPURS と比較すると ( 参考 ) :
Compereing this package with the SPURS for Cell ( Reference ) :
- SPURS の様な機能群はないが , スレッドマネージャ単体でなく , 計算式をマルチスレッドで解くルーチンとのセット .
It has not the functions of SPURS , but not just thread-manager . It is the set of solving equation by multithreading .
- スレッドの中身に関知しない為 :
Not mention for the inner of thread :
- SPURS で謂う所のタスクモデルのみを扱う .
Only manage the Task-model of SPURS .
- PPE に相当する部分の側にスレッディングエンジンがある .
Threading engine is on the part as PPE side .
- スレッディングエンジン自体に渡す計算式のフォーマットは SPURS のジョブモデルのコマンドリストの様なもの .
The format of the equation for this engine is like command-list of the Job-model of the SPURS .
- 本パッケージを カプコンの MT フレームワーク ( スレッド部 ) と比較すると ( 参考 ) :
Compereing this package with the threading part of Capcom MT Framework ( Reference ) :
- スレッド管理方式は似ている .
Each method of managing thread are similar .
- 本パッケージは物理演算式等の計算式をマルチスレッドで解くルーチンとのセット .
This package is the set of solving equation for example phisics equations by multithreading .
- 本エンジンにはプライオリティ管理やキュー等の周辺機能はない .
This engine has not extra functions for example manage priority and queue .
- メモリが許す限り , どんなに巨大な計算式でも扱える ( Cell の場合にも LS でなくメインメモリに収まれば扱える ) .
You can manage huge equation if memory parmit it ( In the case of Cell , it is managable if main-memory parmit it even LS do not parmit it ).
- 数値計算式以外をも扱える . OS の汎用処理もアーキテクチャとして可能 ( 例えば Refactored Mac OS X on 1GHz ( 2倍 ! ) Cell ラップトップ に ) .
It able to manage not-equation too . Gereric work of the OS is supported by the architecture ( Ex. For Refactored Mac OS X on 1GHz ( Times 2 ! ) Cell based Laptop ) .
- パイプラインの上を行く , 非同期マルチスレッディング ( 参考 ) .
Unsyncronized multithreading greater than pipelining ( Reference ) .
- スレッドは自律的でありまた自動管理されるので , メインループはスレッドを関知する必要がない ( 他の仕事をする事ができる ) .
Main-loop do not need to mind the thread ( Main-loop is able to do any other work ) because the threads are autonomous and managed automatically .
- 本エンジン呼び出し部は親ループに一箇所置くだけで良く , そこで足止めをされる事もない .
Put just one statement at parent loop , for call this engine . And it is not become break point .
- パッケージ
( Package )
- Ruby で書かれた汎用ソースの完全なパッケージ .
Complete package of sources written in Ruby for generic environment .
- サンプルも兼ねて加算器コマンドと前出の論理演算器コマンドを動態でアーカイブ .
Adder commands and logic-gate command ( I mentioned at above ) are archived at runnable .
- 購入
( Buy )
- 重要 : 販売締切 : 暫定的に販売再開 .
IMPORTANT : DEADLINE : Selling restarted temporary .
- ダウンロードする
山口 青星 ( seisei@x68k.net , 470-0162 愛知県愛知郡東郷町白土 1-768 )
Seisei Yamaguchi ( seisei@x68k.net , 768,1 Sirotuti Tougou Aiti Aiti 470-0162 Japan )
- ps. affiliate ( クッキーが上書きされます ) .
メールマガジン .
- #1 良いニュース : 信じられないでしょうが , ロイヤリティは , 自己申告での後払い . 更に , 何パーセント払えとは申しません .
更に , ロイヤリティを減らす条件 : オープニングで私の名前を大きくクレジットする .
Good news : You may unbelievable it , you can pay the royalties AFTER sold your software , and YOU CAN DECIDE the percentage .
And , the condition for decreace royalties : Credit my name at the opening larger than `` MSX '' .
../ ./
[ PR ] パソコンのきょうかしょ ( 小学生いじょうむけ ) 販売 [ PR ] ( 無料サンプル ( 旧版 ) )
特定商取引法に基く表示