nDiki : PDL

PDL - Perl Data Language

Perl行列計算ライブラリ。

Perl と同じライセンス再配布可能である。

メモ

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 にする

PDL::API 参照

スポンサード リンク

2004年7月20日 (火)

PARActivePerl 5.6.1 build 638 に

昨日 Linux 上で実験してみた PARWindows にも入れてみる。 PDLを使っている関係で ActivePerl は 5.6.1。

インストール

ppm install で入るパッケージは古いので、最新のものを入れておく。 ちょっと手間。

ワンライナーを 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::StringGD については依存関係を自動検出できなかったので、それぞれ -M で指定。

できた。動いた。素晴しい。 PDLGD を使っていたのでちょっと不安だったのだがうまく動いて感激。 これでCD-ROMとか USB メモリに入れておいて一発実行とかできる。

スポンサード リンク
[ 7月20日全て ]

2004年8月17日 (火)

ActivePerl 5.8.4 + PDL 2.4.1

挑戦するも、やはりビルドできず。

[ 8月17日全て ]

2004年8月25日 (水)

PAR

  • eval されるモジュール群は Makefile.PL で抽出して、pp の -M オプションで全て指定するように。
  • PAR で実行形式化すると、PDL の slice 呼び出しの結果が lvalue にならなくなってしまった。この間まで PAR しても問題なかったのだが。slice 呼び出しのの結果を一旦一時変数に入れて使うように修正。
[ 8月25日全て ]

2004年9月21日 (火)

ActivePerl 5.8 用 PDL 2.4.1

実は SourceForge.net にあった。 まだ動作確認していないが、問題なければこれで ActivePerl 5.6.1 ともおさらば。

その場合は PPM リポジトリを再構築しなおしであるが。

[ 9月21日全て ]

2004年9月22日 (水)

ActivePerl 5.6.1 -> 5.8.4

PDLの動作確認がとれたのでプロジェクトで使用するバージョンを v5.8.4 に上げることにする。 PPM パッケージ全部作りなおし。4時間ちょいかかった。

ついでに ithreads まわりもチェック。

[ 9月22日全て ]

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 をリビルドした方がいいのかと思ってみたけれど実験した範囲ではかわらないようだ。

[ 5月16日全て ]

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 を書くようにすれば、いっちょあがり。

[ 5月18日全て ]

2005年5月23日 (月)

SQLite とか DbUnit とか

最近急に RDBMS に興味をもってきた。 といっても、できればライトなやつ。

SQLite

Perl と相性が良さそう。SQLite はコードが少なく public domain なので、DBI用ドライバモジュール DBD::SQLiteSQLite のコードを全部取り込んでしまってある。 ActivePerl 5.8.6.811でもビルドできた。

PDLベクトルStorable (PDL::IO::Storable)でシリアライズして SQLite 保存し、後で必要な時に取り出しアンシリアライズして計算に使うっていう風にしたいんだけれど速度的にどうなんだろう。 要実験。

DbUnit

別件。 Oracle Database にアクセスする Java アプリケーションのテスト方法を思案中。 モックオブジェクトを使う方法も考えたけれど、やはり実環境に近い方がいいんじゃないだろうか。

となると DbUnit あたり?

そのうち設定してみるか。 開発者ごとにデータベースを作らねばならないな。

[ 5月23日全て ]

2009年2月23日 (月)

PARDLL ファイルをロードできなかったら大文字小文字を疑え

PDL を使っている Perl プログラムを、昨日構築した今ごろの環境で PAR を使って実行可能ファイル化したんだけれども、実行してみたら

 Can't locate loadable object for module PDL::Core in @INC ...

というエラー。 実行時のキャッシュディレクトリを見ると core.dll が同梱されていない模様。 なんでだー。

いろいろやってみたところ、もしやと思ってインストール済みの core.dll を Core.dll という名前に変えたらエラーが出なくなった(正確には次のモジュールで同様のエラーが出た)。

ファイル名の大文字・小文字が問題だったらしい。 PARFAQ には「Win32::Perms の Perms.DLL でこのエラーが出たら、Perms.dll にしてね」と書かれている。 最初これ拡張子の問題だけだと思っていた。 ベース名でも同様のようだ。

以前は問題なかったから、比較的新しい PAR で発生するようになったと思われる。 これ絶対はまる。

今日のさえずり - くるみマフィンの賞味期限が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
[ 2月23日全て ]

2009年9月4日 (金)

今日のさえずり: ググって原因がわかった。って半年前の自分じゃないか。アホだ。

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]
[ 9月4日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.055166s / load averages: 0.47, 0.52, 0.44
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker