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-26

Getting Started in *LISP (16)

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

3.4.2 Bulk Data Movement-Array/Pvar Conversions

前回の続きでフロントエンドとConnection Machineのデータ転送について

今回は、アレイとpvarとの変換用関数を使う方法を紹介。

そのままな名前の

  • array-to-pvar
  • pvar-to-array

があり、これで転送する。

;; フロントエンド側でアレイを定義
(defvar data-array #(1 2 3 4 5 6))

;; Connection Machine側で空pvarを定義
(*defvar data-pvar 0)

フロントエンド(アレイ)→Connection Machine

;; array-to-pvarでは:endによって終わりを示す
(array-to-pvar data-array data-pvar :end 6)

(ppp data-pvar :end 12)
;>>> 1 2 3 4 5 6 0 0 0 0 0 0
;=>  NIL

アレイが対応するpvarに設定されたことが分かる

Connection Machine→フロントエンド(アレイ)

;; :array-offsetは受け手のアレイの開始オフセット、:start、:endはpvar側
(pvar-to-array data-pvar data-array :array-offset 3
                                    :start 0 :end 3)

(let ((*print-array* t))
  (print data-array))
;=> #(1 2 3 1 2 3)

次回 3.5から再開

ゲスト



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