nDiki : PDL
PDL - Perl Data Language
メモ
xchg は遅くない
#!/usr/bin/perl
use Benchmark qw(cmpthese);
use PDL;
$m = sequence(600,600);
cmpthese(10,
{
xchg => sub {
$mm = matmult($m->xchg(0,1), $m);
},
tmp => sub {
$tmp = $m->xchg(0,1);
$mm = matmult($tmp, $m);
},
tmpcopy => sub {
$tmpcopy = $m->xchg(0,1)->copy;
$mm = matmult($tmp, $m);
}
}
);
自前のデータをラップして piddle にする
スポンサード リンク
Related term
2004年7月20日 (火)
■ PAR を ActivePerl 5.6.1 build 638 に

昨日 Linux 上で実験してみた PAR を Windows にも入れてみる。 PDLを使っている関係で ActivePerl は 5.6.1。
@ インストール
ppm install で入るパッケージは古いので、最新のものを入れておく。 ちょっと手間。
- PAR が必要とする Parse::Binary と Win32::Exe は ppm がないので、自分でとってきて make_ppm。
- PAR 0.85 は 'ppm install PPM::Make' ではいる make_ppm だとパッケージ作成失敗。PPM::Make 0.71 に上げる (古い PPM::Make で ppm 化可能)。
- PPM::Make 0.71 は新しい Getopt::Long を必要とするので、こちらもソースをとってきて ppm 化。
- その他必要なパッケージもインストール (Config::IniFiles)。
ワンライナーを pp できるところまで動作確認。
@ モジュール + スクリプトを実行可能形式に
ExtUtils::Makemakerを使ってパッケージ化している開発中のモジュール(スクリプトあり、XS あり)を実行可能形式化してみる。
perl Makefile.PL nmake nmake test cd blib set PERL5LIB=lib;arch (pp の -I オプションが効かなかったので) pp -o foo.exe -a lib -a arch -M ... -c script/foo
Log::Log4perl::Appender::Screen、Jcode::Unicode::NoXS、Unicode::String、GD については依存関係を自動検出できなかったので、それぞれ -M で指定。
できた。動いた。素晴しい。 PDL や GD を使っていたのでちょっと不安だったのだがうまく動いて感激。 これでCD-ROMとか USB メモリに入れておいて一発実行とかできる。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- 自前 PPM リポジトリの管理 (2006-07-03)
- PPM::Make と META.yml (2004-10-14)
- ActivePerl で Ming (2005-02-23)
2004年8月17日 (火)
■ ActivePerl 5.8.4 + PDL 2.4.1

挑戦するも、やはりビルドできず。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- Template Toolkit (2004-09-08)
- ActivePerl 5.8.9 build 825 + MinGW 5.... (2009-02-22)
- SQLite とか DbUnit とか (2005-05-23)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
2004年8月25日 (水)
■ 続 PAR 化

- eval されるモジュール群は Makefile.PL で抽出して、pp の -M オプションで全て指定するように。
- PAR で実行形式化すると、PDL の slice 呼び出しの結果が lvalue にならなくなってしまった。この間まで PAR しても問題なかったのだが。slice 呼び出しのの結果を一旦一時変数に入れて使うように修正。
- 「依存関係検査のしにくいモジュール」に依存するスクリプトをPARで実行形式化する (2005-03-08)
- PAR で DLL ファイルをロードできなかったら大文字小文字を疑え (2009-02-23)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
- NSIS でインストーラを作ってみる。 (2004-08-11)
- 今日のさえずり - 「ポロシャツなら一緒ですよ」と若い女の子に一蹴された (2009-09-04)
2004年9月21日 (火)
■ ActivePerl 5.8 用 PDL 2.4.1

実は SourceForge.net にあった。 まだ動作確認していないが、問題なければこれで ActivePerl 5.6.1 ともおさらば。
その場合は PPM リポジトリを再構築しなおしであるが。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
- 自前 PPM リポジトリの管理 (2006-07-03)
2004年9月22日 (水)
■ ActivePerl 5.6.1 -> 5.8.4

PDLの動作確認がとれたのでプロジェクトで使用するバージョンを v5.8.4 に上げることにする。 PPM パッケージ全部作りなおし。4時間ちょいかかった。
ついでに ithreads まわりもチェック。
- PPM とか (2003-10-01)
- ActivePerl と PAR PPM パッケージは合わせる必要あり (2006-02-09)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
- PPM パッケージのインストールではまる (2001-12-25)
2005年5月16日 (月)
■ PDL の bad value と計算速度

PDL は bad value を扱うことができるのだが、どの程度速度に影響がでるであろうか。 ベンチマークを取ってみた。 環境は Debian GNU/Linux sid + pdl 2.4.2-2 + 2672-PHJ。
#!/usr/bin/perl -w
use strict;
use PDL;
use Benchmark;
my $a = sequence(1000, 1000);
my $b = sequence(1000, 1000);
#$a->badflag(1);
#$b->badflag(1);
timethis(10, sub { my $c = matmult($a, $b)});
badflag(0)
timethis 10: 203 wallclock secs (198.90 usr + 0.46 sys = 199.36 CPU) @ 0.05/s (n=10)
badflag(1)
timethis 10: 416 wallclock secs (400.87 usr + 0.92 sys = 401.79 CPU) @ 0.02/s (n=10)
ほぼ半分の速度。 ちなみに bad value サポート無しで PDL をリビルドして試してみたが、bad value 無しの計算では(matmult においては)特に差がなかった。
bad value の必要がないならば、PDL をリビルドした方がいいのかと思ってみたけれど実験した範囲ではかわらないようだ。
- ThinkPad X31 + Debian で Google Earth ... (2006-12-09)
- Dropbox for Linux を Debian 用にビルドしてインストール (2009-11-24)
- Linux 上で Flex 2 SDK を使った Flash コンテンツ開... (2007-09-11)
- TrueCrypt 6.1a を Debian GNU/Linux sid に (2009-02-02)
- BasKet は 0.6.0 でさらに進化していた (2007-01-13)
2005年5月18日 (水)
■ Inline::Pdlpp で 手軽に PDL::PP のコードを書く

PDL を使用しているプログラムの高速化のため、再び PDL::PP でコードを書こうとマニュアルを見直したりしている。
PDL::PP にも Inline 系の Inline::Pdlpp モジュールが用意されているのか。 PDL::PP の仕様は結構わかりにくくて(かなり)慣れないと大変。 何度も書いてはテストしてみることになるので、そういった意味でも Inline できるのはすごい便利。
Inline::pdlpp で関数ができあがったら 整理して PDL::Core::Dev のサポートのもとで Makefile.PL を書くようにすれば、いっちょあがり。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- 続 PAR 化 (2004-08-25)
- 今日のさえずり - 「ポロシャツなら一緒ですよ」と若い女の子に一蹴された (2009-09-04)
- PDL と 疎行列 (2004-06-14)
- 「依存関係検査のしにくいモジュール」に依存するスクリプトをPARで実行形式化する (2005-03-08)
2005年5月23日 (月)
■ SQLite とか DbUnit とか

最近急に RDBMS に興味をもってきた。 といっても、できればライトなやつ。
@ SQLite
Perl と相性が良さそう。SQLite はコードが少なく public domain なので、DBI用ドライバモジュール DBD::SQLite は SQLite のコードを全部取り込んでしまってある。 ActivePerl 5.8.6.811でもビルドできた。
PDLのベクトルを Storable (PDL::IO::Storable)でシリアライズして SQLite 保存し、後で必要な時に取り出しアンシリアライズして計算に使うっていう風にしたいんだけれど速度的にどうなんだろう。 要実験。
@ DbUnit
別件。 Oracle Database にアクセスする Java アプリケーションのテスト方法を思案中。 モックオブジェクトを使う方法も考えたけれど、やはり実環境に近い方がいいんじゃないだろうか。
となると DbUnit あたり?
そのうち設定してみるか。 開発者ごとにデータベースを作らねばならないな。
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- [ WiKicker ] Storable 永続化データの互換性 (2005-06-06)
- 「依存関係検査のしにくいモジュール」に依存するスクリプトをPARで実行形式化する (2005-03-08)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
2009年2月23日 (月)
■ 今日のさえずり - くるみマフィンの賞味期限が2月30日

@ 2009年02月21日
- 11:49 YouTube 見てたら Linux フリーズした。 *P3
- 11:53 リラックマストア東京駅店、昨日オープンか。 *P3
- 13:42 西安餃子の半個室。 [mb]
- 14:49 ズボン濡らしたのでイトーヨーカドーで新しいの買って着替え。 [mb]
- 18:50 今日買ったくるみマフィンの賞味期限が2月30日だった。で、ハリマヤさんいったい賞味期限はいつなの? [mb]
- 20:34 昼のエビチリ、2度辛いがきたっぽい。 *P3
@ 2009年02月22日
- 09:47 シェーキーズってまだあるんだ。最後にランチの食べ放題食べたのいつだろう。もう今行っても、もとを取れないだろうけど久々に食べたい。 [mb]
- 09:55 @nakameP えーっ、シェーキーズってそんなに進化してたんですか。最後に行ったのは15年以上前かなあ。学生にはあのチープ感でも満足でした。 [mb]
- 10:25 出社。 *P3
- 10:53 JUDE/Server 2010年2月末日をもってバージョンアップ終了か。需要少なかったのかなあ。 *P3
- 11:41 メモ用にと名刺入れに名刺サイズ方眼情報カードをずっと忍ばせていたんだけれど、基本 RHODIA 持ち歩く習慣がついているので使ったためしがない。かさばるだけなので捨てる。 *P3
- 14:43 MinGW 5.1.4 インストール。 *P3
- 15:41 SourceForge.net から MinGW の g++ がダウンロードできないので、そこだけ SourceForge.JP から取ってきてようやくはいった。 *P3
- 17:45 PAR-Packer の nmake test をかけると、Norton Internet Security がしゃしゃり出てくる。 *P3
- 18:11 ようやく PAR-Packer の nmake test が終わった。 *P3
- 19:12 斜め向かいのちょっとバーコード始まっているおじさんがポータブル MD プレーヤーの外付けバッテリのネジにずっと苦戦している。カチャカチャ。 [mb]
- 22:53 目が尋常なく痒い。 *P3
@ 2009年02月23日
- 12:59 PAR における DLL ファイルのファイル名の大文字小文字問題に翻弄されていた。 *P3
- 13:02 PDL 今もきちんとバージョンアップしているんだな。ちょっと安心。 *P3
- 19:02 納期間近の仕事集中的にやっていたけれど、そろそろルーチンワークもやっておかないとヤバい。 *P3
- 20:27 さて帰る。 *P3
- 20:44 切ない……。会社にマスク忘れてきた。 [mb]
- 20:53 モバツイ不調なので久しぶりに PC2M 経由で本家。
- 21:38 そろそろ RPG のアイテムに花粉症の薬が出てきてもいい頃。 *P3
- 今日のさえずり - ミニパトに男性警官が乗っているとガッカリする (2009-11-26)
- PAR で DLL ファイルをロードできなかったら大文字小文字を疑え (2009-02-23)
- Evernote 使用開始 (2009-03-03)
- 今日のさえずり - 入り口に盛り塩? (2010-02-15)
- 今日のさえずり - 乗客もっと絶望の表情になるべきだろ (2009-02-20)
■ PAR で DLL ファイルをロードできなかったら大文字小文字を疑え

PDL を使っている Perl プログラムを、昨日構築した今ごろの環境で PAR を使って実行可能ファイル化したんだけれども、実行してみたら
Can't locate loadable object for module PDL::Core in @INC ...
というエラー。 実行時のキャッシュディレクトリを見ると core.dll が同梱されていない模様。 なんでだー。
いろいろやってみたところ、もしやと思ってインストール済みの core.dll を Core.dll という名前に変えたらエラーが出なくなった(正確には次のモジュールで同様のエラーが出た)。
ファイル名の大文字・小文字が問題だったらしい。 PAR の FAQ には「Win32::Perms の Perms.DLL でこのエラーが出たら、Perms.dll にしてね」と書かれている。 最初これ拡張子の問題だけだと思っていた。 ベース名でも同様のようだ。
以前は問題なかったから、比較的新しい PAR で発生するようになったと思われる。 これ絶対はまる。
- Template Toolkit + PAR (2004-09-13)
- 今日のさえずり - くるみマフィンの賞味期限が2月30日 (2009-02-23)
- ActivePerl をやめて Strawberry Perl へ (2009-08-25)
- Wineを入れてみる (2005-03-31)
- [ Java ] 22:30 Cocoon2 はどうかな? (2001-12-05)
2009年9月4日 (金)
■ 今日のさえずり - 「ポロシャツなら一緒ですよ」と若い女の子に一蹴された

@ 2009年09月03日
- 08:47 今日は新しい PS3 の発売日か。ヨドバシカメラに待っている人がちょっぴりいる。 #Akihabara L:秋葉原 [mb]
- 08:49 そして昭和通りにはラブプラスのカードを首からさげている人。 #Akihabara L:秋葉原 [mb]
- 10:41 アカデミック系のプロジェクトに久しぶりに触れると癒される。 *P3
- 12:12 いちおう会社には襟のついたシャツを着てくるようにしているのだが「ポロシャツなら一緒ですよ」と若い女の子に一蹴された。 *P3
- 12:14 あ、ちなみに着てきているのはポロシャツじゃなくてラガーシャツなんだけど。 *P3
- 12:21 あ、下はジーパンなんですよ。 RT @cakesjun: @Naney ポロシャツは襟がやわらかいからピシッと見えないのかも。でも夏にワイシャツは暑いですよねぇ・・ *P3
- 12:21 いつも襟が曲がっているしって言われた。 *P3
- 12:38 「ジーパンの(膝の)穴小さくなったんですか!」いえジーパン1本しか持ってないわけじゃないですから。 *P3
- 12:41 2009年8月31日の歩行: 4559歩、3.61km、35分、6.18km/h、消費 170.9kcal、脂肪燃焼 24.4g、2.5エクササイズ。 *P3
- 12:42 2009年9月1日の歩行: 7466歩、6.00km、54分、6.57km/h、消費 268.5kcal、脂肪燃焼 38.4g、3.9エクササイズ。 *P3
- 12:43 2009年9月2日の歩行: 10074歩、8.06km、74分、6.46km/h、消費 370.5kcal、脂肪燃焼 52.9g、5.4エクササイズ。 *P3
- 13:39 @zakwa ファッションチェックをするあたり zakwa 2号と呼べそうです。 *P3
- 15:21 @naofumiyoshida お疲れさまでした。 *P3
- 15:35 ああ、PDL::PP 使っているんだっけ。ああ Visual Studio 6.0 も入れないと駄目かあ。 *P3
- 15:39 Visual Studio 2005 が入っている環境に Visual Studio 6.0 か。共存できるらしいがちょっと不安。 *P3
- 19:21 ペコちゃんのバッグ持っている人がいる。あれ、ちょっといいな。 [mb]
- 19:23 SO905iCS のカーソル自動移動を最速にした。 [mb]
@ 2009年09月04日
- 09:41 昨日指摘を受けたのでラガーシャツじゃないので出勤中。普通のシャツだとインナーシャツと2枚になるので真夏の間は避けていたのだ。
- 09:49 aws の方でモバツイ接続。 #movatwi [mb]
- 10:06 「今日お出かけですか?」「何で?」「ポロシャツじゃないんで。」そうきましたか(下はジーパンだよ)。 *P3
- 11:31 揺れた。珍しくスタッフがみんな感ずいてる。 *P3
- 12:46 2009年9月3日の歩行: 6510歩、5.23km、47分、6.55km/h、消費 235.2kcal、脂肪燃焼 33.6g、3.4エクササイズ。 *P3
- 13:33 今日から月見バーガー始まってたのか。 *P3
- 14:29 ナボナ食べる。 *P3
- 14:56 次の行動リスト(ロルバーン ポケット付きメモ)は見そびれないように PORTER ウエストバッグにいつも突っ込んでおくか。 *P3
- 15:11 PAR::Packer したファイルに PDL 関連 DLL ファイルが全然入ってないな。以前は同じ方法ではいっていたのだけれど。 *P3
- 15:45 Module::ScanDeps 最新にしたけどかわらず。 *P3
- 15:59 うーん、違うな。PAR::Packer で出来上がったファイルにはきちんと DLL ファイル入ってた。でも実行した時に一時ディレクトリに展開されていない。 *P3
- 16:39 ググって原因がわかった。って半年前の自分じゃないか。アホだ。 http://bit.ly/pB2rX *P3
- 16:41 会社の冷蔵庫に9月1日までのヤクルトが1本ありますが? *P3
- 18:48 RT @kohmi: こんばんは。秋葉原香美です。 *P3
- 18:59 ちょっと有隣堂寄っていく。 L:秋葉原 [mb]
- 19:20 なんだ、この有隣堂のレジの行列の長さは。 #Akihabara L:秋葉原 [mb]
- 19:27 UML 2.0 の本買った。 [mb]
- 19:34 3・4番線ホームに上がるエスカレーター1機止まってる。クネクネした方に久しぶりに乗った。こっち遅いんだよね。 #Akihabara L:秋葉原駅 [mb]
- 今日のさえずり - マックはセットで野菜ジュースをチョイスできるようにすべき (2008-12-12)
- 今日のさえずり - フロスティ食べたい (2009-12-10)
- 今日のさえずり - 夏が終わったのに黄色かよ (2009-10-02)
- 今日のさえずり - バーコードって床屋でどのように頼むんだろう (2009-09-10)
- 今日のさえずり - 右から左に線を書くと、左利きになった気分が味わえる (2009-09-30)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.239862s / load averages: 0.57, 0.26, 0.25
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。