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-12-25

Getting Started in *LISP (15)

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

書いてる本人も*Lispはマニアック過ぎる気がしてみました。*Lispのシミュレータいじって遊んでる人って果して日本に何人いるんでしょうか。

Clozure CL、Allegro CL、CLISP等で動きますし、結構面白いので是非とも試してみて下さい!

ダウンロードは

からできます。

それはさておき続きです。

3.4 Front-End/CM Communication

フロントエンド(UNIXワークステーションやLispM)とConnection Machine(CM)のデータのやりとりについて

CMは単体で動作するものではなくフロントエンドに接続して利用する形態でした。この章はその方法について

方法は3種類で

  1. !!オペレータによるもの
  2. pvarの値を一つずつ読み出しては返すような方法
  3. アレイをpvarに変換する関数があるのでそれを利用

等があるとのこと

3.4.1 Funnels for Data-Global Communication Functions

まず3つのうちの一番最初の全プロセッサに一気に伝達する系統のものの解説

!!系のオペレータは全プロセッサに同時に作用します。

(in-package :*lisp)
;; 256 x 256プロセッサを利用
(*cold-boot :initial-dimensions '(256 256))

(*defvar numbers (random!! 10))

(*sum numbers)
;=> 295439

*whenやif!!を利用して該当するプロセッサを選択することも可能

;; 全プロセッサに1を設定して合計 => プロセッサの数
(*sum 1)
;=> 65536

;; プロセッサ番号が偶数のものだけに*sumが作用
(*when (evenp!! (self-address!!))
  (*sum 1))
;=> 32768

他に似たものとして *max、*minがあり

;; プロセッサ番号で最も大きい数
(*max (self-address!!))
;=> 65535

述語としては、*or、*andがあります

;; 全プロセッサT
(*or t!!)
;=> T

(*when nil!! (*or t!!))
;=> NIL

;; 全プロセッサに対する
;; (when nil (or t))

次回、3.4.2から再開

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20081225