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 |

2009-01-17

Getting Started in *LISP (21)

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

淡々と続けております、*LISP入門。今回は、3.6.2からです。

3.6.2 Where Did the Extra Processors Come From?

Connection Machineでは実プロセッサの数を越えてプロセッサを指定することができるとのことで、この場合は仮想プロセッサが使われるとのこと。

仮想プロセッサはVPと呼ばれます。

実と仮想との違いを意識することはなく透過的に使えるよう自動で設定されるようになっているとのこと。ただし、仮想なので速度は違ってきます。

3.6.3 Defining Custom Configurations - VP Sets

色々なサイズのデータを扱うようになると、pvarのサイズもまたそれに応じて設定する必要がでて来ますが、これまで見たようにpvarのサイズはプロセッサの数と同じなので、これを状況に応じて変えたいということになってきます。

この要求のためには、仮想プロセッサの仕組みを利用して対応させるとのことで、def-vp-set等を利用。

(in-package :*lisp)
(*cold-boot :initial-dimensions '(64 64))

(def-vp-set big-square '(256 256))

と定義した場合、big-squareは、仮想的な256x256の二次元グリッドになります

この作成したVP setsにも値を設定できます。

;; 初期値1で埋めたグリッド
(*defvar big-square-pvar 1 nil big-square)

;; *defvar書式
;; (*defvar variable &optional initial-value documentation (vp-set '*default-vp-set*))
;; 0-19の乱数で埋めたグリッド
(*defvar another-square-pvar (random!! 20) nil big-square)

また、default-vp-setでの宣言時にまとめることも可能です。

(def-vp-set big-square ' (256 256)
  :*defvars '((big-square-pvar 1)
              (another-square-pvar (random!! 20))))

次回、3.6.4から再開