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年3月5日 (金)
■ [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを列ベクトルで返すように

PDLを使う開発中のプログラムを「速いマシンで使いたい」という要望から、オフィスにある Red Hat Linux 8.0 BOX へ昨日インストール作業を行った。
あいかわらず rpm を探してきてインストールするのが面倒。GDを使うのに freetype の開発パッケージを入れようとしたら、CD-ROM に入っている rpm セットだと freetype とその devel のバージョンが違っていてはいらないし。
結局がしがし /usr/local にインストール。 Perl v5.8.2 自体もそのプログラム専用に別途インストールしてCPANモジュールでがしがし依存するものをインストール。
でようやく環境が整って開発中のプログラムをビルドしたら単体テストでこける。 今日数値をチェックしたら、PDL の eigens 関数が今までと転置した固有ベクトル行列を返すようになっていた。 コレ、以前、列ベクトルだと思ったら行ベクトルだったってやつ。それがまた逆になったらしい。
PDLのドキュメントを見ると確かに、2.4.1 でバグフィックスとして列ベクトルに修正されたらしい。 しかし古いPDLもサポートせねばならない。ということでPDLのバージョンを見て 2.4.0 以下のみ xchg かけるように修正して、問題収束。
- CPAN のPerl モジュールを RPM パッケージ化する (2003-04-22)
- 野良パッケージと依存 Perl モジュールのインストールセット をCPAN... (2006-02-11)
- SQLite とか DbUnit とか (2005-05-23)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
2004年6月14日 (月)
■ PDL と 疎行列

計算しようとしている行列が 2000 x 2000 次元を超えているので、PDLで素直に計算させるとしんどい。 PDLはネイティブに疎行列をサポートしていないので、独自に実装する必要があるので面倒だな(一応 CPAN に PDL::Sparse というのもあるにはある)。
外部で計算させようかとも思ったが、GNU Octave もネイティブサポートなし。
やはりPDL::PPを使って自前でPDL上に実装するしかないか?
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- [ Perl ] PDL::Math::eigens (2003-12-04)
- Inline::Pdlpp で 手軽に PDL::PP のコードを書く (2005-05-18)
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
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)
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
- ActivePerl で Ming (2005-02-23)
- 自前 PPM リポジトリの管理 (2006-07-03)
2004年8月17日 (火)
■ ActivePerl 5.8.4 + PDL 2.4.1

挑戦するも、やはりビルドできず。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- PPM パッケージのインストールではまる (2001-12-25)
- SQLite とか DbUnit とか (2005-05-23)
- nmake で毎回 pl2bat されるのを何とかしたい (2004-11-25)
- Template Toolkit (2004-09-08)
2004年8月25日 (水)
■ 続 PAR 化

- eval されるモジュール群は Makefile.PL で抽出して、pp の -M オプションで全て指定するように。
- PAR で実行形式化すると、PDL の slice 呼び出しの結果が lvalue にならなくなってしまった。この間まで PAR しても問題なかったのだが。slice 呼び出しのの結果を一旦一時変数に入れて使うように修正。
- 「依存関係検査のしにくいモジュール」に依存するスクリプトをPARで実行形式化する (2005-03-08)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
- Inline::Pdlpp で 手軽に PDL::PP のコードを書く (2005-05-18)
- NSIS でインストーラを作ってみる。 (2004-08-11)
2004年9月21日 (火)
■ ActivePerl 5.8 用 PDL 2.4.1

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

PDLの動作確認がとれたのでプロジェクトで使用するバージョンを v5.8.4 に上げることにする。 PPM パッケージ全部作りなおし。4時間ちょいかかった。
ついでに ithreads まわりもチェック。
- ActivePerl で Ming (2005-02-23)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- 自前 PPM リポジトリの管理 (2006-07-03)
- PPM とか (2003-10-01)
- rsync の --copy-unsafe-links (2004-08-21)
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 をリビルドした方がいいのかと思ってみたけれど実験した範囲ではかわらないようだ。
- Crypto++ 4 -> 5 (2003-11-20)
- Debian GNU/Linux で Dropbox (2008-09-16)
- BasKet は 0.6.0 でさらに進化していた (2007-01-13)
- Windows でも Linux でも動くタスク管理ツール Task Coach (2006-01-12)
- sid の CinePaint がプラグイン読み込みでエラー (2006-04-15)
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)
- PDL と 疎行列 (2004-06-14)
- 続 PAR 化 (2004-08-25)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- GRAPH GEAR セミハードタイプ デジタルカメラケース DGB-01... (2005-02-07)
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)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- 「依存関係検査のしにくいモジュール」に依存するスクリプトをPARで実行形式化する (2005-03-08)
スポンサード リンク
■よく検索されるキーワード
torrent(56) 提案書(47) perl(45) windows(37) linux(31) 使い方(27) 書き方(25) debian(22) x31(22) usb(22) cvs(20) subversion(20) インストール(18) ドラマ(18) c#(17) mp980(17) svn(17) 修理(17) 手帳(16) ssh(15) 評判(15) アジェンダ(15) java(15) デロンギ(14) ガントチャート(13) 感想(13) n-01a(13) centos(13) tc-1(13) 充電式カイロ(13) ノート(12) ダイソー(12) thinkpad(12) rcs(12) f-01a(12) ヤマダ電機(12) ganttproject(12) 無印(11) ppm(11) レビュー(11) カイロ(11) 壁紙(11) 静電気(10) 動画(10) バッグインバッグ(10) ヨドバシカメラ(10) サンプル(10) アジェンダとは(10) wiki(10) ミノルタ(10) グッズ(10) 作り方(10) tortoisesvn(10) firefox(9) so905ics(9) memcached(9) 画像(9) gmail(9) ハクキンカイロ(9) 口コミ(9) a6(9) sh-01a(9) 冷蔵庫(9) ほぼ日手帳(9) mp3(8) emacs(8) 日本語(8) openssh(8) xampp(8) カメラ(8) nikon(8) 設定(8) 写真(8) 値段(7) flash(7) 方眼(7) web(7) docomo(7) カバー(7) リポジトリ(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 0.066789s / load averages: 0.29, 0.28, 0.38
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク