Sponsored Link
l. ケータイ,PDA でブラウズ
l. ケータイ,PDA でブラウズ ( イメージ指向 )

コンパクトで Cell等に最適な フルオートマルチスレッディングエンジン






Multithreading engine を演算器command に搭載してのlog 画像 と movie .

result log of logic_gate

8bits adder ( movie , 10.56MB ) ( QuickTime )
論理演算器command 等を従えた 加算器command の実行の模様
( 0b11110001 + 0b00110000 + 0b1 = 0b100100010 という演算 ) .

full adder that patched of main-loop for verbose loop is running ( movie , 4.75MB ) ( QuickTime )
フルアダー ( キャリ付き 1bit加算器 ) command における メインループからのバーボーズ出力の模様
( メインループが止まっていない事を御確認下さい . 0b1 + 0b0 + 0b1 = 0b10 という演算 .
ナイトリー版 ( エンジン部分はカレント版と同じ ) にて実演 ) .






Log解説


上記の写真やmovie は local実行時のモノですが , 以下に remort host 2台 も加えた 3台 での論理演算 のlog を解説します .

1 xor 1 = 0 という演算です .

exitcodeだと 8bitの壁なりがあるので , stdout経由で答えを伝播します .
マルチスレッドなので , 亀レスが幾分入り乱れた掲示板のスレッドの様になっています . プロセスID を頼りに演算のリンクを辿って下さい .

  1. $ pu_-_logic_gate -v --pid $$ --dish poseidon 1 rodemu 32 --dish__c --xor 1 1
    xor演算を行う為にcommand 発行 . バーボーズモード .
    分散シェルdish ( パッチ ) 経由 で 2つ ( ローカルと合わせると 3つ ) のホストを扱う 事を指定 .
    最後のホストに割り当てるジョブの最大値はマージンをとって32 .
    --pidオプションで シェルのシステムプロセスid を 渡す ( バーボーズ用 ) .

  2. 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 として子プロセスに知らせる ( バーボーズ用 ) ) .

  3. 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 の答えは 親プロセスに帰っていない .


  4. dishに関係する冗長な改行出力 .

  5. 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のコピーもそれを裏付ける .

  6. 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にバーボーズ表示 .

  7. 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演算を行う為に子プロセスを更に別スレッド経由で発行する .


  8. dishに関係する冗長な改行出力 .

  9. 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演算の完成 .

  10. 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演算との同時実行ではない .


  11. dishに関係する冗長な改行出力 .

  12. 0b0false :poseidon:4784-2:3611:rt:pu_-_logic_gate --dish poseidon 1 rodemu 32 --dish__c -v --not 1 --pid 4784-2
    not演算終了 .


  13. dishに関係する冗長な改行出力 .

  14. 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: ) . リアルタイム的表示の表示タイミングとの開きを見て取れる .

  15. 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ゲートによる出力 .

  16. 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ゲートによる出力 .

  17. 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の演算結果を受け取った親による出力 .

  18. 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ゲートによる出力を受け取った親による出力 .

  19. 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ゲートによる出力を受け取った親による出力 .

  20. 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演算 .


  21. dishに関係する冗長な改行出力 .

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

  23. 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優先出力になっているので後になっている .

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

  25. $



フルオートマルチスレッディングエンジン仕様
( Specifications of Full-auto multithreading engine )

  • 本エンジンを Cell用SPURS と比較すると ( 参考 ) :
    Compereing this engine with the SPURS for Cell ( Reference ) :

    • SPURSの様な機能群はないが , 単なるスレッドマネージャでなく , 計算式をマルチスレッドで解くエンジンとの複合エンジン .
      It has not the functions of SPURS , but not just thread-manager . It is compound engine with solving equation by multithreading .

    • スレッドの中身に関知しない為 :
      Not mention for it in the thread :

      • SPURSで謂う所のタスクモデルのみを扱う .
        Only manage the Task-model of SPURS .

      • PPEに相当する部分の側にスレッディングエンジンがある .
        Threading engine on the part as PPE .


    • スレッディングエンジン自体に渡す計算式のフォーマットは SPURSのジョブモデルのコマンドリストの様なもの .
      The format of the equation for this engine is like command-list of the Job-model of the SPURS .


  • 本エンジンを カプコンの MTフレームワーク と比較すると ( 参考 ) :
    Compereing this engine with the Capcom MT Framework ( Reference ) :

    • 本エンジンではプライオリティ管理やキュー等の周辺機能はなく , スレッドエンジンコアに特化している .
      This engine has not extra functions for example manage priority and queue . This engine is for just automatic multithreading .

    • その代わり , 物理演算式等の計算式をマルチスレッドで計算する .
      But this engine caliculate the equation for example phisics equations at the multi thread .


  • 本エンジンの実装例ではコマンドリスト ( 計算式 ) 自体が演算結果で上書きされ , 最終的に計算式全体の演算結果と置き換わる .
    At the imprementation of this engine , the command-list ( equation ) will be overwritten and finally the list will be change to the answer of the equation .

  • メモリが許す限り , どんなに巨大な計算式でも扱える ( 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 ) .

  • エンジン内部でのスレッド状態把握方法はシンプル且つ低レベルであり , いかなるシステムにも対応 .
    The simple-and-raw way to manage the status of threads in the engine supports any systems .

  • スレッドは自律的でありまた自動管理されるので , メインループはスレッドを関知する必要がない ( 他の仕事をする事ができる ) .
    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 )

  1. 重要 : 販売締切 : 002006/06/02 23:59 ( JST ) .
    IMPORTANT : DEADLINE : Jun. 02 002006 14:59 ( UTC ) .









    ご愛顧ありがとうございました . 販売を締め切らせて頂きました .




















山口 青星 ( 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 '' . ;-)

../ ./


Tsukumo HDDFossil Abacus AU5008 Wrist PDA with Palm OS - Limited Edition Orange CrocoTH-55SL-C3200Sega directanti virusWeb2.x on people's OPENSTEP Mach environment with Cocoa under the PPC architecture for RubyCocoa and the GhostStore-mixicon_-_ruby

[ PR ] パソコンのきょうかしょ ( 小学生いじょうむけ ) 販売 [ PR ] ( 無料サンプル ( 旧版 ) )





特定商取引法に基く表示