Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2008-07-18

Getting Started in *LISP (12)

| 20:38 | Getting Started in *LISP (12) - わだばLisperになる を含むブックマーク はてなブックマーク - Getting Started in *LISP (12) - わだばLisperになる

こちらも放置しておりました、*Lispのチュートリアル。

同じく細かく進めて行くことにしました。

3.3 Communication Operators

データをCPU間でやりとりすることを"コミュニケーション"と表現することにする。

コミュニケーションには2種類あって、ルータコミュニケーションと、グリッドコミュニケーションがある。

3.3.1 Router Communication - General-Purpose Data Exchange

CM(コネクションマシン)では、各CPUは接続されていて、互いに通信ができるネットワークを持つ。これをルータと呼ぶらしい。

各プロセッサには、番地があるので、(self-address!!で取得可能)、これを利用してデータを特定のプロセッサ間で通信できる。

3.3.2 The Router Communication Opetators of *Lisp

ルータコミュニケーションに使用するオペレータには

  • *pset

あるプロセッサからデータを対象のプロセッサに送信する。パラレル動作。

  • pref!!

あるプロセッサが対象のプロセッサよりデータを取得。パラレル動作。

の2種類がある。

;; *pset

*number-of-processors-limit*
;==> 256

(*let (data)
  (*pset :no-collisions
         (self-address!!) ;送信元番地
         data             ;格納場所
         (-!! *number-of-processors-limit* ;着信番地
              (self-address!!)
              1))
  ;; 表示
  (ppp data))
;>>> 255 254 253 252 251 250 249 248 247 246 
;==>NIL

*psetは、(*pset combiner source-pvar dest-pvar send-address-pvar ...)という形式

  • 上の例の場合、自分の番地を値として送信。
  • dataは格納されるpvar
  • (-!! 〜)の部分は、送信先アドレス

つまり、255番プロセッサが、255という値を、0番プロセッサに送信、結果として、pvarの0番目に255が格納される。

次回3.3.3より再開