1 名前:名無しさん@お腹いっぱい。 [04/06/01 00:13] 知る人ぞ知る強力なデータ解析ツール octave ... unixを科学研究で使っている香具師には非常に心強い味方のはずだ。 matlab互換を主張しながら、微妙にバージョンアップを続ける octaveについて語ろう。
722 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:06:50 ] >>721 メールとどきましたこれから見ます。 Uploaderではなく,Yahooのアカウントをお持ちなら,YahooのGeocitiesをフリーで 広告付きだけど50Mbyteのweb spaceを借りれますよ。 私は,自分のドメインと1Gbyteのスペースと持ちたいから 有料の契約してますが,普段使う分には50Mbyteあればいいでしょう。
723 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:13:21 ] >>722 Geocities?ブリーフケースのこと??
724 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:15:17 ] >>720 メール欄にsageと入れると書き込みをしてもスレッド一覧の最上位にいちいち浮上しません。 sageと入れないと一部の人からくどく思われる場合がありますので、普通はsageと入れます。 ちなみにsageは日本語の「下げ」をローマ字で書いたものです。他言語のsageの意味はありません。
725 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:21:16 ] >>724 m(__)m ありがとうございます。
726 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:22:03 ] >>724 m(__)m ありがとうございます。
727 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:36:30 ] >>712 error: invalid column index = 2001ですね。 66行目 b(:,1)=[0;0];によって octave:3> size(b) ans 2 1 で1行2列の行列になってしまうわけです。 66行目 b=zeros(2,2001); とすれば大丈夫です。 しかし,For Loopの塊ですね。 octaveでは,遅くなりますね。 漸化式likeなので スパース行列を使えば高速化できるかも知れませんね。 ttp://www.nuce.nagoya-u.ac.jp/e8/Matsuoka/07OctaveNum/07OctaveNum.html 偏微分方程式なのでまともにやったら2重ループなのですが,遅くなるので, 漸化式を係数行列にしてスパースを使って高速化してます。 古い資料なので,octaveのバージョンが古いですが,基本は同じから 参考にしてください。 でもいまのままでも,答えは少し待てば出るので,まあ, 現状でいいかもしれませんがこういうテクニックも あることもしっておくといいですよ。
728 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:41:57 ] >>723 ブリーフケースではありません。Webをおけるスペースです。 まあ,Yahooにいってみてください。 webがおけるのでファイルもおけて, <html> <a href='test2.m'>test2.m</a> </html> とでもして,index.htmlをつくり同じフォルダーに test2.mをいれとけばいいです。
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:48:34 ] 日本のyahooの利用規約では公開目的ではなく単にファイルを置くだけなのは禁止されているはず。 国内で利用するんだったらwww.axfc.net/uploader/ が良いかもしれないね。 流れてしまう速度はそんなに速くないはずだから。
730 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:48:32 ] >>727 おっとこの講義資料の最後の回のものです。
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:55:26 ] ほんとループが長い!まだ回ってる・・・ >>728 ,>>729 つまりヤッホーのほうは利用しないで>>729 のほうがいいってことですかね?? なにはともあれありがとうございます >>730 是非拝見させていただきます
732 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 15:07:17 ] >>729 あっとそうでしたね。 <html> <body> <P>数値計算ソフトのソースの例(octave) <a href='test2.m'>test2.m</a> </body> </html> とでもしとかなきゃだめでしたね。 こうすれば,一応公開目的なのでおけますよね。 ただし,パスワードがかけられませんからね。 まあ,見られてもいい(つまり公開)であればいいのですよね。
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 15:14:49 ] グラフを印刷する時、軸のラベルの文字の大きさを変えるのはどうするんですか? print "hoge.eps" -deps -color -F:20 ってやると、目盛の数字は大きくなるけど、ラベルは小さい文字のままになりま す。
734 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 16:20:56 ] >>733 xlabel('{\fontsize{25} x}');
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 16:31:14 ] 使ってるプロットツールによると思うんだけど 文字はそのままでグラフを小さく出力すると印刷時には相対的に文字が大きくなる 例えば俺はgnuplot使ってるから __gnuplot_set__ size 0.4 0.4; とかやって全体的に文字サイズを変えてしまうのはどうだろう
736 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 16:40:56 ] __gnuplot_set__ size 0.4 0.4; この設定は3.0からは使えません。 ttp://www.gnu.org/software/octave/NEWS-3.The following plot commands are now considered obsolete and will be removed from a future version of Octave: __gnuplot_set__ __gnuplot_show__ __gnuplot_plot__ __gnuplot_splot__ __gnuplot_replot__ Additionally, these functions no longer have any effect on plots created with the Matlab-style plot commands (plot, line, mesh, semilogx, etc.).html より The following plot commands are now considered obsolete and will be removed from a future version of Octave: __gnuplot_set__ __gnuplot_show__ __gnuplot_plot__ __gnuplot_splot__ __gnuplot_replot__ Additionally, these functions no longer have any effect on plots created with the Matlab-style plot commands (plot, line, mesh, semilogx, etc.).
737 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 16:49:14 ] >>736 すいません。m(__)m。また,確認ミス。 とろろで「この設定は3.0からは使えません。」は使えませんはうそで, 正しくは,plot関数などによるplotには影響せず,__gnuplot_set__などは あくまでも,別のルーチンでgnuplotのコマンドをダイレクトに使用する描画 にのみ影響する。 が正しいです。 といいのは,octaveの次のバージョンから独自のgraphicsエンジンを 使うという構想があり,このようのgnuplotの直接命令は,plotなどの 関数に影響を与えないように変更されています。
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 17:27:26 ] 今プログラムを作ってるんですが下のようなエラーがどうしても消えません どこがおかしいのでしょうか? error: invalid column index = 0 error: evaluating binary operator `*' near line 35, column 14 error: evaluating binary operator `+' near line 35, column 12 error: evaluating assignment expression near line 35, column 4 error: evaluating for command near line 33, column 2 error: evaluating for command near line 29, column 1 error: near line 42 of file `/home/tse550u/soturon/ndynamicsg.m' ソース:www1.axfc.net/uploader/He/so/190986
739 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 17:29:18 ] すいません、>>738 のやつパスはdwです
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 17:35:28 ] 新しいOctave入ってるPCで見てみたらマジだ 昔gset sizeでやってた頃に「これは使えなくなるから__gnuplot_set__ でやれ」 ってOctaveに怒られた時からいつかこうなるとは思ってたけど
741 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 18:00:14 ] >>738 error: invalid column index = 0 が怪しい。行列やベクトルは最初に現れたsizeで初期化されますから, sizeを指定したいときは, A=zeros(N,M); などであらかじめ指定してください。
742 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 18:06:08 ] >>740 今は,JhandleというMATLABそっくりな図を描くグラフィックバックエンドも ありますしね。MATLAB互換路線になっていますから,まあ仕方ないでしょう。 私は,データ吐き出して, gnuplotで直接図描きますから関係あまりないのですが^^;。 ところで,jhandleは,epsはファイル形式は,postscriptのみだったと 思います。 emfなどはpstoeditをつかって変換するしかないでしょう。
743 名前:octave for windowsメモの筆者 mailto:sage [2009/02/05(木) 09:44:33 ] >>741 error: invalid column index = 0 おっと octaveはindexが1から始まるからでたエラーですねm(__)m。
744 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 18:07:53 ] >>734-737 ありがとうございました。 自前のグラフィックスですかあ。私はgnuplotが結構好きなんで、微妙だなあ。 なんかOctave全体が重くなるのもいやだし。
745 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 10:43:06 ] 筆者さん、Octaveの授業もやってるんですね。わたしも筆者さんと同じ分野の人 間です。授業でOctave使おうとしたことがあるんですが、他の教員から「そんな ブラックボックス使わせても教育にならん」と反対されました。かといって、現 行の授業でやってるようにC言語だと、病的な文法の瑣末なところで引っ掛る学生 がいっぱいいて、シミュレーションそのものを体感させるところまで行かないん ですよね。 "プログラミング演習"の例題をOctaveで解かせるのは、研究室の学生にさせたこ とがあります。"プログラミング演習"は過去におそらく3種類出版されているかと 思いますが、わたしは80 年代末に出たBasic版が一番のお気に入りでした。基本 算法の解説が一番詳しかったように記憶しています。現在はFORTRAN版もBasic版 も入手困難なようですね。FORTRAN版は手元にあるんですが、BASIC版はどっか行っ ちゃいましたorz。今出まわってる改訂版は、うーん、解説は適当だし、Cと FORTRAN両方のコード載せるのも場所の無駄だし、おまけに今時FORTRAN77だし。
746 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 11:12:37 ] いきなりOctaveやらせると感動がないじゃん 「スゲーこの言語スゲー!!俺こんなに手抜いちゃって良いの?」 っていう感じで
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 13:12:13 ] FORTRANでもいいんじゃね
748 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 13:26:18 ] Matlab/Octaveの醍醐味は初級プログラミングのレベルではなくて 普通にループを回すと何時間も何日もかかるループ処理が 行列演算で1発で出るという所なので Excelで済む程度のデータなら必要無いでしょうね 逆に例えばモンテカルロ計算なんかだと、 一般的なプログラムではループ10万回ぐらい回して そのループの中で乱数を発生させて、関数に入れて結果を見る事になりますが Matlab/Octaveでは最初に、10万個の乱数配列を作り 行列演算化した関数に入れて1発で結果が出るみたいな感じなので 発想を根本的に変えないといけません
749 名前:octave for windowsメモの筆者 mailto:sage [2009/02/06(金) 18:05:40 ] >>748 そうですね。いかに,行列で問題を記述するかにかかってて, 偏微分の差分法の陰解法では良くガウスザイデル法とかつかいますが, Octaveなら行列で方程式書いて左除算で済ませる。 係数行列は疎行列だからsparseを使って高速化するとか 発想が違いますよね。 まあ,ブラックボックスっいう方いますが,硬い微分方程式なんぞ ルンゲクッタで解こうとすると大変で,lsode使うとあっという間に 解けますよね。 適応的自動積分でも同じだとおもいます。 シンプソン公式を自分でCで書いて使うような時代ではないと思ってます。 ブラップボックスでもいいから,数値計算ができることの意味を分からせる のが大事だとおもいます。
750 名前:octave for windowsメモの筆者 mailto:sage [2009/02/10(火) 09:42:13 ] 開発版octave 3.1.52がでました。 ttp://www.nabble.com/Octave-3.1.52-available-for-ftp-to21923205.html#a21923205 Octaveの次のMajor Version Upはver 3.2であり,octave-3.1.xxは開発版です。 その3.1.52がでました。 gnuplotは一応defaultのgraphic backendでopenglによるgraphic backend を機能させるためにはいろいろライブラリィが必要なようです。 詳しくは以下を ttp://www.nabble.com/Octave-3.1.52-available-for-ftp-to21923205.html#a21923205
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 11:39:01 ] そういえば新パソにFreeBSD7.1を入れて、 pkg_add -vr octave-devel とインストールしたら GNU Octave, version 3.1.51 でした。leasqrが入って無いのでoctave-forge-optimを入れてないような気がする。 バージョンごとに何が良くなったのか、見えにくいのが何とも… そういえば、何語なのかわからないけど(チェコ語?) Octave/Matlabのグラフィックスの例題があります enacit1.epfl.ch/cours_matlab/graphiques.html gnuplotは置いておいて、jhandleならかなりMatlabに近い事が出来ました
752 名前:octave for windowsメモの筆者 mailto:sage [2009/02/10(火) 14:57:02 ] >>751 3.1.xx はdevelopment branchなので,octave-forgeは多分 自分でpkg installで行う必要があると思います。 しかも,octave-forgeは3.0.x用に作られているので結構苦労する可能性は あると思います。 一般的なものは3.0.xxです。現在3.0.3が,最新版で3.0.4はもうすぐ出るのだと 思います。 (独り言)3.0.4RC3が出てからだいぶたつけど,いつになったら3.0.4の 正式リリース出るんだろう。
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 15:52:50 ] >>752 その後に、octave-forge-optimを入れたらOctave 3.0.2に上書きされました
754 名前:octave for windowsメモの筆者 mailto:sage [2009/02/12(木) 07:59:06 ] >>753 3.0.2でいいと思いますよ。
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 23:15:47 ] ここを見て気になったので試してみました ttp://hiyokoz.blogspot.com/2008/04/octave.html ベンチの内容は n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6 だけ 内容は2000の大きさの乱数配列を2個用意してベクトル積するだけです 手持ちの機種で比べると Intel Core2Duo 2.1GHz, WinXP MSVC, Octave 3.0.1 2.05 GFLOPS Cygwin, Octave 3.0.3 0.99 GFLOPS Intel Pentium M 1.6GHz, WinXP MSVC, Octave 3.0.0 0.81 GFLOPS Cygwin, Octave 3.0.3 0.18 GFLOPS Intel Atom N270 1.6GHz, FreeBSD 7.1 FreeBSD Octave 3.0.2 0.17 GFLOPS PenMとAtomマシンに対してCで書かれた一般的なベンチ(Flops-2.0)で試すと どちらも0.18GFlopsなので、同じクロックのPenMとAtomは同じ程度の 浮動小数点演算能力を持っていると考えられます。 問題はそのページに載ってる MacBook (Core Duo 1.83 GHz): 約 3 Gflops iMac (Core 2 Duo 2.4 GHz): 約 12.5 Gflops Mac Pro (Xeon 3 GHz クアッドコア×2): 約 50 Gflops という結果です。私の結果では Core2Duo 2.1GHz はMSVC版でも2GFLOPSでしたが iMacの結果は2.4GHzとほぼクロックが同じにもかかわらず12.5GFLOPという 圧倒的なパフォーマンスです。Octaveを使うのならMacで決まりでしょうか
756 名前:octave for windowsの筆者 mailto:sage [2009/02/15(日) 07:06:09 ] >>755 そうですか。ところでMSVC版はsse2でしょうか。Genericでしょうか?。 GenericだとATLAS使わないので。 MacOSはunixというのもあるかもしれません。
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 09:48:41 ] >>756 それはもちろん、PenMはSSE2、Core2DuoはSSE3でインストールしてます ATLASを使っても、この程度という事はロハで出来る範囲はこの程度なのでしょう その元のブログには >g95はOpenMPに対応していないが,アクティビティモニタを見るとCPUは二つとも動いているので, >スレッド化されているようだ.おそらく,Mac OS XのAccelerate.frameworkに含まれている >BLAS/LAPACKが呼ばれていて,Fortranコンパイラは無関係だと思われる. と書いてありますから、ATLASとAccelerate.frameworkの差だと思われます Windowsで同様の事は出来ないのか?というと一応MKLがあります ttp://sourceforge.jp/magazine/08/12/24/123237/2 >今回使用したテストプログラムは500×500の行列同士の乗算を100回繰り返すというもの >MKL 1.903秒 >ATLAS 3.895秒 >BLAS 16.120秒 マルチスレッドが効き2コア演算が有効になるためATLASに比べて約半分の時間で計算出来ますが 恐らく「GNU」Octaveで使うのは無理でしょう。 なので、値段もさして変わらないのならMacを選んじゃった方がいい可能性もあります。
758 名前:octave for windowsの筆者 mailto:sage [2009/02/15(日) 17:12:20 ] >>757 Accelator.frameworkのページみました。 なるほど、こりゃMacのほうがいいですね。 今度、買うならMacにしよう。 ありがとうございますm(__)m
759 名前:octave for windowsの筆者 mailto:sage [2009/02/15(日) 20:12:45 ] 良く見るとCore2Duo用にのATLASも最適化出来るようですね。 MSVC版やMinGW版は、これは使っていないでしょうね。 でも、これを使ってもMacには叶わないでしょうね。 でも、差がどれくらいになるかは興味はありますね。 しかし、使おうにもかなりビルド大変ですしね。 私はCore2Duoマシン持ってないからなんともできないですが^^;
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 21:20:04 ] >>540 を見ると、 MATLABはMSVC版の3.5倍ぐらい速いようなので(MATLABはマルチスレッドに対応してる) MSVCで2GFLOPSなら、MATLABで7GFLOPSぐらい出そうですが Macはその倍近い12GFLOPSですし MATLABの維持費を考えると、35万円ぐらいの8コアのMacPro買って 実効50GFLOPSもいいかもしれません
761 名前:名無しさん@お腹いっぱい。 [2009/02/16(月) 00:38:19 ] 質問です。 やりたいことは、x=1:50; y=1:50; として、 その各々の格子点からcを作成して、 c = [ 1 ; x0; y0; ]; (x0, y0は格子点によって値が各々1〜50に変わります。) ある行列Aとの積の値 val = A * c; を求めて、 valをある関数fの引数にすることでzを求めます。 z=f(val); すると、x軸、y軸、z軸で等高線がひけると思いますが、 この過程を効率よく(スマートに)計算するにはどのようにすれば よさそうですか??for文でcを作ってやるしかないですか?? 50x50x3の3次元行列なんかが作れてスパッと計算できたら よさそうなのですが、どうもよくわかりませんでした。。
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 09:59:37 ] というわけでMatlabを含めてテスト テスト対象のCPUはiMacの人と同じくIntel Core2Duo 2.4GHz テストスクリプトは n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6 のまま Octave Cygwin版3.0.3 GFLOPS = 1.1429 Octave MSVC版3.0.3 GFLOPS = 2.3239 MatlabR2008a(MT OFF) GFLOPS = 6.1464 MatlabR2008a(MT ON) GFLOPS = 10.326 (MT:マルチスレッド) そして Octave MacOSX版 GFLOPS = 12.5 Matlabをもってしても勝てません。もちろんループはOctaveの方が速いので 実際のプログラムの速度ではOctave-MacOSよりMatlabの方が速いでしょう えーとちなみにMatlabは「安すぎる」と日本の関係者に言われている アメリカの1ユーザーパッケージでも$1900で、日本国内で個人が買うと… とても信じられない価格です ^_^;。 じゃあどうするか ・マルチスレッド対応のテキサス州立大学のGotoBLASを使う(無料、自由配布不可) ・マルチスレッド対応のインテルMKLを使う(有料、自由配布不可) ・Macを買う ・Matlabにお布施 ちなみにGotoBLASとMKLは同程度のパフォーマンスのようです。
763 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 11:07:25 ] >>762 C:\Program Files\MATLAB\R2008a\bin\win32 の blas.spec には GenuineIntel Family * Model * mkl.dll mklcompat.dll # Intel processors AuthenticAMD Family * Model * mkl.dll mklcompat.dll # AMD とありますからMATLABはMKLを使ってます 逆に言うとMKLを導入してもMATLAB程度です
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 13:20:48 ] Cygwin介す場合が遅すぎるだけな気がする
765 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 15:38:46 ] >>764 cygwin のblasってATLASじゃないとおもいまね。 かなり昔,mingwでliboctaveだけビルドできた時,行列計算にATLASをつかうと (もちろんコードはliboctaveを使ったstandalone C++ですが。) mingwとcygwinで差は,出ませんでした。 まあ,cygwinならoctaveビルド簡単だし, マルチスレッド対応のテキサス州立大学の GotoBLASを使う(無料、自由配布不可) もcygwin上ならできるのでそこでどうなるかでしょうね。 Core2Duoのマシンのない私には無縁ですが^^; HT Pentium(3.4GHz)だからそれでどれくらい,sse2なATLASとどこまで 向上するか比較できます。
766 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 16:04:11 ] >>762 >・マルチスレッド対応のテキサス州立大学のGotoBLASを使う(無料、自由配布不可) この場合, octaveを自分でビルドする必要があるわけですね。 gcc-4.3.2-dw2-TDMのmingwでoctaveを構築(3.0.4RC3)したら,左除算がハングって なぜ???? mingw-gcc-3.4.5なら何とかビルドできますが,いまさらgcc-3ってのもねと おもっています。 Linuxを入れてgotoBlasてのもいいんかなとおもいますね。 職場から出るときにATLAS仕込んで帰ってやってみます。
767 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 16:18:05 ] >>761 Octaveで行列型のデータつくってはきだして gnuplotのcontourにお任せするのはどうですか。 3Dのグラフの等高線図はgnuplotで書きますから。 たしかMATRIX型のデータも扱えるはずですよ。 どうやって等高線を引くのかアルゴリズムはしりませんが, gnuplotはソースコード公開しているからその気になれば 読めばわかると思います。
768 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 18:44:26 ] >>766 自己レスです。意味不明な文章になっているので。<m(__)m> 帰りにコンピュータを走らせcygwinで自分のCPUにあわせたatlasを構築して, そのATLASを使ってcygwin上でoctaveをビルドして, MSVCのSSE2のCPUのATLASとの比較をして見ます。 という意味です。すみません。<m(__)m>
769 名前:761 mailto:sage [2009/02/16(月) 22:48:04 ] >>767 返信ありがとうございます! わたしの質問の仕方がまずかったようです。出力したデータの等高線を描くのは問題ないのですが、 そのデータを出力する際に、 for xi = (1:5) * 25.0 / 5.0 - 10.0 for yi = (1:5) * 25.0 / 5.0 - 10.0 c = [1; xi; yi]; a = A * c; b = 1.0 ./ (1+exp(-a)); z = sum(b); printf("%f %f %f\n", xi, yi, z); endfor endfor としているのですが、これより速く動作する(octaveらしい)書き方がありますか? という意味でした。分かりにくくてすみませんでした。 特にfor文で回すのではなく、他の言語(SciPy, RubyのNArray)で使えるような 3次元行列を使う方法があれば嬉しいと思っています。
770 名前:octave for windowsメモの筆者 mailto:sage [2009/02/17(火) 19:16:55 ] >>762 MSVC MFLOPS = 1845.9 mingw (Benjamin さんのもの) MFLOPS = 1973.0 ATLA3.8.2を自分のコンピュータ用にcygwinでビルドしてこれをつかって, mingw-4.3.2-dw2-TDMでoctave-3.0.4RC3をビルドしたもの MFLOPS = 4830.2 (mingw 4.3.2でのビルドがReference Blasだとうまく動かなかったのが Atlas使ったらあっさり動いた。なぜ!!) 私のコンピュータはHT-PentiumなのでCore2Duoまでは行かないでも, マルチスレッドですから,やはり専用にATLASかけるとかなり違いますね。 Core2Duoならどうでしょうか? ATLASの威力をフルに発揮させるにはやはりoctaveを自分でビルドしないと だめですね。 octave for windowsメモにmingwで自分でビルドする方法でも書いたほうが いいのかな。 goto blasもためしてみたいですね。
771 名前:octave for windowsメモの筆者 mailto:sage [2009/02/17(火) 19:30:43 ] >>769 すいません。思いつきません。 <m(__)m> Octaveは現在3次元とは言わず, 多次元行列サポートしてますんで,頑張ればできるんではないかと^^;
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 20:00:29 ] >>770 おおすごいですね MSVCで2GFLOPSだとCore2duo 2.1GHz並ですか ATLASで5GFLOPS近くもすごい MSVC版は作者の使ってるマシンのCPUで最適化してるから キャッシュ容量とかの差で、セルフビルドしたATLASと差が出るのかもしれません こちらでもAtom 1.6GHzのネットブックに FreeBSD7.1RのPackagesで入れたOctave 3.0.2で、0.17GFLOPSだったのが Portsでatlas-3.8.2をmakeした後に、Portsでoctave-3.0.3をmakeして測ったら0.81GFLOPSでした 3万円ぐらいのネットブックでこんだけ出れば十分です
773 名前:octave for windowsメモの筆者 mailto:sage [2009/02/18(水) 09:13:35 ] >>770 >>772 家のパソコン1.2GHzのCeleron Mでやってみました。 MSVC 3.0.3 367 MFLOPS (sse2,Michael) mingw 3.0.2 830 MFLOPS (see2,Benjamin) mingw 3.0.4RC3 1110 MFLOPS (sse2, ATLAS3.8.2を自分のパソコンで作成) やはり,自分の使っているCPUでATLASかけたほうがいいですね。 Celeron Mは,意外に速いのですが,MSVC版とmingw版ではHT-pentiumでは 差が少ない飼ったのですが, Celeron Mではかなり差がありますね。 実際に ATLASをかけられたCPUとCeleron Mとのコードの最適化の 相性でしょうね。 P行列計算が関係のない,硬い微分方程式の解析でもmingw Octave版の方msvc版よりかなり速いです。 mingw版はサポートしているforgeが少ないですが,私はforgeを つかっていないのでデメリットにはなりません。 GCCも入っているのでmkoctfileのために,Msvc 2008 Expressを 入れる手間を考えると私は,Benjamin版を使っていました。 しかし,これからは自分でビルドしたものを使います。
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 13:03:57 ] >>769 こんな感じでいいのかな? x = (1:5) * 25.0 /5.0 - 10.0; [X,Y] = meshgrid(x, x); c = [ones(length(x).^2, 1), X(:), Y(:)]; a = A * c'; b = 1.0 ./ (1+exp(-a)); z = sum(b); result = [X(:), Y(:), z']; for i = 1:length(x).^2 printf("%f %f %f\n", result(i,:)); end
775 名前:octave for windowsメモの筆者 mailto:sage [2009/02/18(水) 13:05:10 ] >>770 >>772 >>773 大学のパソコンでcygwinでやりました。ATLAS演算は,予想通りほぼ一緒でした。 MFLOPS = 4749.2 とにかく,windows上でお金をかけずに行列計算をそこそこ高速でやりたい人は 自分でATLASからビルドするということがとりあえずのまとめですね。 goto BLASでどうでるかですね。これは,再配布禁止なので, 自分でビルドするしかないですよね。
776 名前:octave for windowsメモの筆者 mailto:sage [2009/02/18(水) 17:31:53 ] octave-3.0.4RC4がでました。 ttp://www.nabble.com/3.0.4-RC4-to22073703.html#a22073703 これで最後のRelease Candidate (RC) だと思いますが^^;
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 20:43:39 ] >>774 ありがとうございます!XとYの長さが同じ時はこれで完璧ですね。 なるほど、X(:), Y(:)で列ベクトルにして値をもっちゃえばできたんですね、 勉強になりましたm(_ _)m
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 09:40:55 ] Octave 3.0.3をcygwinでmakeすると libcxsparse.a でこけますね 3.0.2でやればいいのかな
779 名前:octave for windowsメモの筆者 mailto:sage [2009/02/19(木) 14:25:20 ] >>778 SuiteSparse3.2.0になってますか。 なんか,g77とgfortranが互換性がないため, gcc-4を使うためには,SuiteSparseを最新版にする必要があります。 ちなみに私は,SuiteSparseは自分でビルドして使っています。 自分のコンピュータ用にオプション入れていますので -O3 -fomit-frame-pointer -march=1686 -mmmx -msse3 自分でcygwinでビルドする場合にはcs.hにパッチをあてる必要があります。 --- cs.h.org/cs.h 2007-05-18 21:12:04.000000000 +0900 +++ cs.h 2007-08-15 04:10:12.078125000 +0900 @@ -17,7 +17,11 @@ extern "C" { #else #ifndef NCOMPLEX +#ifdef __CYGWIN__ +#define I 1.0I +#else #include <complex.h> +#endif #define cs_complex_t double _Complex #endif #endif
780 名前:octave for windowsメモの筆者 mailto:sage [2009/02/23(月) 13:04:07 ] ATLAS(3.8.2)の組み込み(Windows版cygwin,mingw)の簡易メモ そのうち自分のページに書くつもりですが,その前に ATLASのビルドは,cygwin上で行う。(mingwでは無理)。 ATLAS(3.8.2)はgcc-3とgcc-4では違うコードを吐く。octaveでgcc-4でのビルドが よいので,gcc-4でのビルドがいい。cygwinのgcc-4は,gcc-4.exeとgfortran-4.exe を使うが,ATLASはgccとgfortranでないと動かない。gcc-3のgcc.exeをgcc-3.exe のようにリネームして,構築する。 外部ライブラリではcygwinでは,setup.exeでインストールし,mingwではBenjamin さんのライブラリを拝借するのがはやい。 まずは,ここまで。
781 名前:octave for windowsメモの筆者 mailto:sage [2009/02/23(月) 13:15:46 ] >>781 すでにあるLapackは使えないので, 適宜,CC,F77,CXX,CFLAGS,FFLAGS,CXXFLAGS,CPPFLAGS,LDFLAGSを定義して (これが結構面倒なんだが^^;) ./configure --with-blas='-L/usr/local/atlas/lib -lf77blas -lcblas -latlas' --without-lapack で構築する。外部のLapackをつかうと使っているblasが違うのでうまくいかない ,octaveのソースにあるLapackを使うのが簡単。それで--without-lapackを つかって./configureをする。 分かる人にはこれでわかるはず。わからない人には,暇になったら丁寧に書くの でお待ちを。
782 名前:octave for windowsメモの筆者 mailto:sage [2009/02/23(月) 13:30:14 ] >>780 推敲がいい加減だな。<m(__)m> 途中の文章を以下に訂正。 cygwinのgcc-4は,gcc-4.exeとgfortran-4.exe という名前だが, ATLASはgcc.exeとgfortran.exeでないと動かない。gcc-3のgcc.exeをgcc-3.exe のように退避して,gcc-4.exeとgfortran-4.exeをそれぞれ gcc.exeとgfortran.exeにしてATLASを構築する。 >>781 mingw-gcc-4.3.0-dw2-TDMでは,C++のdllライブラリlibstdc++_tdm_dw2_1.dll を使えるので.octファイルのサイズを抑えることができる。 CXXFLAGSの先頭にに-D_DLLをLDFLAGSの先頭に,-shared -shared-libgccを 加える。 今日はここまで。
783 名前:名無しさん@お腹いっぱい。 [2009/02/24(火) 18:30:30 ] Octave-3.0.4 RC5がでました。予想外に3.0.4のリリース苦戦している模様。 これが最後のRC版になればいいのですが, ttp://www.nabble.com/octave-3.0.4-rc5-td22177145.html
784 名前:octave for windowsメモの筆者 mailto:sage [2009/02/25(水) 08:05:40 ] >>783 Plot周りのバグの指摘にJaroslav Hajekさんがきづいていなかったようで Jwe氏より待ったがかかりました。3.0.4のリリースは遅れそうです。 私としては通常の使用では3.0.3で十分なので,無理して急ぐことはない と意見をかきこんでいます。 しばらくは,3.0.2または3.0.3を使いましょう^^;。
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 01:18:02 ] matlabと完全互換でなくなったのは 何か理由があるのでしょうか?
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 01:48:42 ] >>785 互換性はあると思いますよ MATLAB→Octave は比較的 Octaveの変な方言を使うのをやめれば Octave→MATLAB もスムーズになると思われます 変な方言とは具体的には if A<=B, endif ← end; にする function F=func(x) endfunction ←不要 # ←コメントは % if A<>B, if A!=B, ← A ~= B だけ
787 名前:octave for windowsの筆者 mailto:sage [2009/02/28(土) 13:22:51 ] >>785 元々からして完全互換を歌ったことははないですよ。 MATLABが変わっていったのに追いついていなかったというのが正しい認識だと思います。 Octave ver.3は、MATLABの仕様変更に対応して変わったという面があります。 私自身はMATLABを使ったことはなく、Octaveを使った講義でMATLAB互換を歌っていますのでMATLABの書籍は持っています。 最近のOctaveは、本格的なMex対応やplot周りなどは、最近のMATLABに仕様を変えつつありますし、互換性のあるコードが以前より書きやすくなっていると思います。
788 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 16:19:08 ] >>787 「歌う」って「MATLAB互換ですよ〜♪」みたいなw 「謳う」じゃね?
789 名前:octave for windowsの筆者 mailto:sage [2009/03/01(日) 06:21:24 ] >>788 うーん。そうっすね(^_^;)
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/04(水) 22:19:08 ] gnuplotへの直接命令(__gnuplot_hogehoge)がobsoleteになった、ということが 今一わかっていないのですが、とりあえず3.0系列ではplotするとgnuplotが起動 しますよね。んでterminalはx11になっているようなんですが、これを例えばwxt にするにはどうすればいいんですか?
791 名前:octave for windowsメモの筆者 mailto:sage [2009/03/05(木) 08:10:20 ] >>790 octaveで最初のplotをする前ににgnupotの環境変数GNUTERMを 変更しておけばいいです。 bashなら $ export GNUTERM=wxt; octave または, share/octave/3.?.?/m/startup/octaverc share/octave/site/m/startup/octaverc ~/.octaverc のいずれかににputenv(GNUTURM,'wxt'); を書き込みます 要はgnuplotの起動時に環境変数で決まるターミナルの名前に変更します。 後から__gnuplot__set term wxt命令はハイレベルな関数plot()には なにも影響を与えません。 砂悪 __gnuplot__plot__ 'hoge.dat' などのような_gnuplot_hogehoge__で使うプロットにしか 影響を与えないということです ハイレベルというのは,アセンブラとCとの関係でC がアセンブラと比べて高い汎用性で動いているとです。 UNIXのOctaveでも環境さえ準備すればJhandleは使用可能です。 plotなどの関数はgnuplotでもjhandleでも動くので汎用性をもった関数で なくてはならないので,ローレベルのgnuplot直接命令が汎用命令のplotに 影響を与えることはできません。
792 名前:octave for windowsメモの筆者 mailto:sage [2009/03/05(木) 08:12:30 ] >>791 砂悪 は消し忘れです。すいません<m(__)m>。
793 名前:octave for windowsメモの筆者 mailto:sage [2009/03/05(木) 12:32:03 ] >>791 書き忘れましたが,print関数でplotのファイル出力には 複数のファイル形式に対応してます。 詳しくは,help plotを参照してください。 上はgraphic backendにgnuplotを使った場合です。 Jhandleだとepsしか出力できません。
794 名前:790 mailto:sage [2009/03/05(木) 13:50:03 ] "筆者"様、ありがとうございました。
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/05(木) 19:28:38 ] >>755 の続きで Intel Core2Duo 2.1GHz, WinXP マシンのcygwinでatlasをmakeして、octaveを再makeしてみました 現在までの結果は MSVC, Octave 3.0.1 2.05 GFLOPS Cygwin, Octave 3.0.3 0.99 GFLOPS で、 cygwinでAtlasをmakeしてみた結果は Cygwin, Octave 3.0.3+Atlas 4.35 GFLOPS これはすごい!。 >>762 のMSVC版の結果も合わせると Intel Core2Duo 2.4GHz WinXPなら Cygwin, Octave 3.0.3+Atlas 4.92 GFLOPS ぐらいでしょうか。Matlabのシングスレッドの6GFlopsに匹敵します。 これでAtlasがマルチコアに対応すれば… ちなみにcygwin上でのoctaveのmakeは簡単です ttp://ftp.yz.yamagata-u.ac.jp/pub/cygwin/release/octave/ このcygwinで配布してるsrcを取ってきて、解凍して、同梱のpatchをあてて、configureしてmakeするだけです。 その前にAltasをmakeしてインストールして、/usr/local/atlas/lib の中にある*.a のシンボリックリンクを /usr/local/lib に置くかどうかすれば、configureした時に見つけてくれます。
796 名前:octave for windowsメモの筆者 mailto:sage [2009/03/06(金) 09:25:17 ] >>795 cygwinでoctaveつかうならaltas入れてgcc-4をつかって 自分でビルドするのがいいと私もおもいますね。 forgeはpkg installで必要なやつだけいれればいいので。
797 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 20:06:18 ] というわけで、Intel Core2Duo 2.4GHzのCygwinにGotoBLASを入れてみました 入れたのは最新のバージョン1.26です。CBLASも必要。 そのあとにOctaveをmakeしなおしました(Makeconfを修正してGotoBlasを有効にする) その結果は… octave:2> n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6 t = 1.0160 MFLOPS = 1.5748e+04 なんと15.75GFLOPSです。 >>762 >>795 の結果も合わせると、 Intel Core2Duo 2.4GHz, WindowsXP Proでは Octave Cygwin版3.0.3 GFLOPS = 1.14 Octave MSVC版3.0.3 GFLOPS = 2.32 Octave Cygwin+Atlas GFLOPS = 4.92 MatlabR2008a(MT OFF) GFLOPS = 6.15 (MT: Multi Thread) MatlabR2008a(MT ON) GFLOPS = 10.33 Octave Cygwin+GotoBlas GFLOPS = 15.75 Cygwin版ノーマルと比べると15倍!この差は大きい
798 名前:octave for windowsメモの筆者 mailto:sage [2009/03/09(月) 10:06:54 ] >>797 GotoBLAS恐るべしですね。これだとMACと同等以上でしょうか。 MacでもGotoBLASを使えってことでしょうね。 再配布が禁止なので,自分でビルドしないといけないのが難点かな。 mingwでも今度やってみます。 Makeconfを書き直されたそうですが。 私がatlasを使うとき行っている ./configure --with-blas='-L/hoge/atlas -lf77blas -lcblas -latlas' という感じで行きませんかね。
799 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/09(月) 10:58:25 ] >>798 lapackはバイナリーのoctaveを入れた時に入ってるので ./configure --with-blas='-L/usr/local/lib -lgoto' だけで拾ってくれました それとMacで速かったのはAppleのBLASであるアクセラレーション・フレームワークが入っていたからで GotoBlasを使うのなら、Cygwinで十分だと思います。 ちなみにGotoBlasは環境変数で GOTO_NUM_THREADS=1 とすると、1coreだけで演算してくれますが、その場合は8GFlopsでした。 2coreで約15.5GFlopsですからスケーラビリティーはあると思います。 例えば、DELLのStudio Desktop Core2Quad(2.33GHz)・4GBメモリ搭載ハイエンドミニタワーが 販売価格 69,980円 こんななので、これで4core有効にすれば30GFlopsぐらい出るでしょう。 1GFlopsと30GFlopsの差はたぶんけっこうあって、体感的には30分かかる計算が1分で終わる感じでしょうか。 もしくは1GFlopsで1回に1分かかるベクトル演算を1万個のパラメータで計算すると1万分=1週間かかりますが 30GFlopsなら5時間半で終わります。まあとにかく差が大きいです。 Atlasで使う限りはその1/4以下の能力しか出せないと考えるとGotoBlasはなかなかいいです。
800 名前:octave for windowsメモの筆者 mailto:sage [2009/03/10(火) 15:08:02 ] >>799 /configure --with-blas='-L/usr/local/lib -lgoto' だけで拾ってくれました ありがとうございます >>770 HT-pentium4 mingw-4.3.2-dw2-TDMでoctave-3.0.4RC3をビルドしたもの MFLOPS = 4830.2 GotoBLAS MFLOPS = 5227.0 私のやつはHT-Pentiumだからかな。でもATLASより少しは速い。 ATLASはビルドに時間食うし自分でビルドするならGotoBLASに決まりですね!!。
801 名前:octave for windowsメモの筆者 mailto:sage [2009/03/10(火) 19:37:56 ] >>800 キリ番ゲットしてたんですね<m(__)m>。 mingw(GCC-4.3.2-dw2-TDM)でもcygwinでビルドしたリブラリ使えます。 (できたlibgoto_(cpu name).a をlibgoto.aにコピーして, 適当な場所にいれ,--with-blas='-L/usr/local/lib -lgoto' でビルドする。) MFLOPS = 5535.1 すこしですが速くなります。こりゃビルド方法をメモにかかんとあかんなあ。 しばしお待ちを<m(__)m>。
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/10(火) 19:59:18 ] >>801 MSVC版で使えると最高なんですがねぇ GotoBlasのexports/というディレクトリーで make dll とやると、dllファイルが出来るんですけど MSVCのbin/のlibblas.dllとリネームして置き換えても cblasの関数が無いみたいなエラーが出てダメでしたね GotoBlasとcblasをくっつけてdllをつくればあるいは… という感じがしないでもありませんが
803 名前:octave for windowsメモの筆者 mailto:sage [2009/03/11(水) 08:19:59 ] >>802 おそらくoctaveは将来,MSVC版はなくなりそうです。 というのはLapack 3.2はfortran90でかかれており,fortran90に対応した f2cがないからです。 ttp://www.nabble.com/Octave---Fortran-continued-td20976664.html#a20976664 Michael(MSVC版の開発者)さんとBenjamin(Mingw版の開発者)のやり取り を参照ください。また,行列計算以外octaveの計算速度はgcc-4.3以上を 使えばmingwの方が速いです。 clear; function dx = oregonator_m (x, t) dx = zeros (3, 1); dx(1) = 77.27*(x(2) - x(1)*x(2) + x(1) - 8.375e-06*x(1)^2); dx(2) = (x(3) - x(1)*x(2) - x(2)) / 77.27; dx(3) = 0.161*(x(1) - x(3)); end x0 = [ 4; 1.1; 4 ]; %t = [0, logspace (-1, log10(303), 150), logspace (log10(304), log10(500), 150)]; %t=linspace(0,500,1000); t=0:0.5:500; ts=cputime(); y = lsode ('oregonator_m', x0, t); cputime()-ts plot (t',y(:,1),"",t',y(:,2),"",t',y(:,3)); をやるとMsvc 3.0.3 1.6563s, Mingw 3.0.2 1.2188s, 4割程度mingw版の方が 速いです。私はjhandleを使わないのでmingw派です。
804 名前:octave for windowsメモの筆者 mailto:sage [2009/03/11(水) 09:41:58 ] >>773 >>800 >1.2GHzのCeleron M >mingw 3.0.4RC3 1110 MFLOPS (sse2, ATLAS3.8.2を自分のパソコンで作成) でしたが GotoBLASでは900弱でした。 古いCPUの場合はATLASの方が速いですね。
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 10:01:18 ] >>803 GotoBlasを入れて15GFlopsにしても、一部のプログラムでGotoBlas+Cygwin版が 2GFlopsのMSVC版よりも極端に遅い事があったのです。それで調べてみました 行列のベクトル積 MSVC octave:1> A=randn(100);tic;for jj=0:1000;C=A*A;end;toc Elapsed time is 0.938295 seconds. Cygwin octave:1> A=randn(100);tic;for jj=0:1000;C=A*A;end;toc Elapsed time is 0.25 seconds. Cygwinの方が4倍ぐらい速いしループのオーバーヘッドはほとんど無い 比較処理 MSVC octave:2> A=randn(100);tic;for jj=0:10000;B=(A>0)*1;end;toc Elapsed time is 1.797 seconds. Cygwin octave:2> A=randn(100);tic;for jj=0:10000;B=(A>0)*1;end;toc Elapsed time is 40.28 seconds. Cygwin版は比較処理が致命的に遅い! 一部の関数計算に比較処理を使うのですが、これが遅いと非常に困るんですよね そういう意味でMSVC版のリリースは続けて欲しいのでう感じなのです。 それと自前でBuildしたlibgoto.dllを使えるようにして欲しいですね。 ちなみにMatlabだと1.68秒なのでMSVCとほぼ同じなんですが。
806 名前:octave for windowsメモの筆者 mailto:sage [2009/03/11(水) 11:43:53 ] >>805 cygwinのgccはなにをお使いですか? gcc-4を使わないと極めて遅いですよ。これはgcc-3の 有名なslowness issue of sjlj exception handling in cygwin gccに よるものです。現在のoctave 3.0.3はgcc-4でビルドされています。 gcc-4はdwarf2 exception handlingですから,MSVCより遅いですがそれ穂ほどでも gcc-4はcygwin set upから簡単に手に入ります。gcc-4でのoctaveのビルドは ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#090131 をご覧ください。またこの場合,g77とgfortranがbinary互換 でないので,またGotoBLASもgcc-4でビルドしたください。 Makefile.ruleをのgccをgcc-4にgfortranをgfortran-4に 書き直してくださいね。 ちなみに私のPCで比べると A=randn(100);tic;for jj=0:10000;B=(A>0)*1;end;tocは 2.464 seconds.(cygwin 3.0.3) 2.88553 seconds. (msvc 3.0.3) 2.32813 seconds (mingw 3.0.2) msvcが一番遅いです やはりmingw版が最速です。開発版ではoctave独自のMATLAB like なgraphic backendを持つため(gnuplotも使えますよ)Jhandleが使えない ことは開発版では問題ありません。スピードでいうならmsvcよりmingwが 速いです。ごれはgcc-4がmsvcより最適化性能に優れていることによります。
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 13:34:46 ] >>806 gcc 3.4.4でした そのうち4.xに入れ換えて試してみます >開発版ではoctave独自のMATLAB likeなgraphic backendを持つ 3.1.xではそんな機能が入るんですか
808 名前:octave for windowsメモの筆者 mailto:sage [2009/03/11(水) 13:58:51 ] >>801 Benjaminさんのexternal libraries ではうまくいきませんね^^; アプリケーションエラーがでてしまいます。 あれ使えると楽なのになあ。 もう少しあがいてだめなら,私がビルドしたexternal librariesと GnuWin32にexternal librariesでビルドする方法を書くとしますかね. まだ,external librariesはgcc-3でビルド多くて多くがスタティックライブラリ だから,この際新しいソースを手に入れてやってみます。
809 名前:octave for windowsメモの筆者 mailto:sage [2009/03/11(水) 15:16:25 ] >>807 gcc-4は一応まだαリリースですので,gcc-4.exe,g++-4.exe…となっており, gcc-3.4.4と共存が可能です。 >>開発版ではoctave独自のMATLAB likeなgraphic backendを持つ >3.1.xではそんな機能が入るんですか まだ,開発途中ですけどね。今見てみるとあまりMATLAB likeではないですね。 OpenGL/FLTK graphics backend. This backend can be enabled with the following commands: input_event_hook ("__fltk_redraw__"); __init_fltk__ (); set (0, "defaultfigure__backend__", "fltk"); OpenGLつかっているので3Dでご利益があるのかな。 いまのところは使い物にはなりませんね。 jhandleは生き残るのかな。gnuplot派なのであまり興味ないですが^^;
810 名前:Octave + GotoBLAS (Cygwin上) [2009/03/12(木) 02:57:54 ] Cygwin 上での Octave バージョン 3.0.3 + GotoBLAS のインストール手順を 書いてみました 133.5.18.167/rinkou/octave/octavemake.html ※ 今は gcc バージョン 3 にしています.そのうち gcc バージョン 4 にしたいと思っています. お役に立ちたい,とは恐れ多いですが,フィードバックが欲しいので (なかなか,ご返事できないかも知れないのはご容赦ください).
811 名前:octave for windowsメモの筆者 mailto:sage [2009/03/12(木) 08:10:41 ] >>810 大変丁寧に書かれていていいと思います。 gcc-4を使うと現在のSuiteSparse(3.2.0)はgcc-4でビルドしてあるので バイナリがそのままが使えます。 また,SuiteSparseのoctave用ライブラリを作成するだけならビルドに GotoBLASは不要です。checkができませんが。octaveでチェックすればいいので) octave-3.0.4RC5では,liboctave/CSparse.ccなどへのパッチは不要でした。 ただし,プロットに致命的なバグがあり,別のパッチが必要ですが^^; octave-3.0.4RC5はホームページにはなく,octave-maitainersのMLの スレッドを探せば見つかります。(パッチも) なお,MetisとGotoBLASは再配布不可なのでビルドしたバイナリを人にあげる ことはできないことを明記してくださいね。 ここら辺は,欧米人は当然ですがうるさいので。
812 名前:octave for windowsメモの筆者 mailto:sage [2009/03/12(木) 12:00:07 ] >>810 cd /usr/local/bin cp *.dll /usr/lib は不要です。Unixの.soと違いwindowsの場合dllは, そのdllを使うexeファイルと同じディレクトリかpathのとおったディレクトリ に入れます。したがって/usr/local/binにあればよろしいので,libにコピー しても意味はありません。/usr/libにおくのはlib??????.dll.aです。
813 名前:octave for windowsメモの筆者 mailto:sage [2009/03/13(金) 07:51:33 ] >>811 すいません。 SuiteSparseはblasにあわせてビルドしなおす 必要ありかもしれません。
814 名前:octave for windowsメモの筆者 mailto:sage [2009/03/13(金) 14:50:26 ] GotoBLASだと make checkで引っかかりますね。ウーム。 test_sparse.m ..........................................panic: Segmentation violation -- stopping myself... ATLASは家では成功したんですがね。 すこしかかりそうですね<m(__)m>
815 名前:octave for windowsメモの筆者 mailto:sage [2009/03/13(金) 17:00:59 ] なんかコンピュータがおかしいと思っていたらメインのファンが回って いなかった(T_T) 良く壊れなかったもの。ふた開けてUSB扇風機で冷やしています。 まあこれでいいかな。 >>800 は >mingw-4.3.2-dw2-TDMでoctave-3.0.4RC3をビルドしたもの(ATLAS) >MFLOPS = 4830.2 はMFLOPS = 4923.1になりちょっとあがりました。 Lapackのパッケージを使うと左除算がうまくいかず今は--without-lapack でoctaveにはいっているサブセットのLapackでやると左除算がうまくいく。 GotoBLASにlapack-3.1.1へのパッチが入っているので これを使わないといけなのいかも また,GotoBLASの説明をよく読むとHyper ThreadingではPerformanceは出せないの で物理コアの数で利くみたいですね。たしかにSMP=1として,並列Threadで GotoBLASでやってみたけどほとんど変わらないですね。それだったらシングル ジョブを2個立ち上げたほうが効率いいかなですね。
816 名前:octave for windowsメモの筆者 mailto:sage [2009/03/13(金) 17:05:02 ] >>810 Octave + GotoBLAS (Cygwin上)に私のページからリンク張ってもいいですか?
817 名前:Octave + GotoBLAS (Cygwin上) mailto:losingsleep@mail.goo.ne.jp [2009/03/14(土) 15:33:08 ] 810 の投稿者です. 「octave for windows メモの著者」様,コメント,ご意見,ご示唆ありがとうございます. 個別にご返事せず,済みません.Web ページの改訂を行いつつあります.お陰様で,よい Web ページができそうです. 私が,掲示板の新参者で,「ずいぶん,厚かましいお願いをしてしまった」と恥じています.Web ページずいぶん細かく見ていただいてありがとうございます. 「私のページからリンク」は,もちろんOKです.名誉です. 事後報告で申し訳ないのですが,私の方からも,リンクを張り,相互リンクをお許しいただけますでしょうか? Web ページは,もう少し見直しを続けます. GotoBLAS を見つけ,Octave に組み込んだとき,「こんなに速くなるのか」と感動しました.私は初心者なのですが,少しでもお役に立てればと思っています.
818 名前:octave for windowsメモの筆者 mailto:sage [2009/03/16(月) 07:57:46 ] >>817 相互リンクの件了解しました。よろしくお願いします。
819 名前:octave for windowsメモの筆者 mailto:sage [2009/03/16(月) 13:42:41 ] >>817 ATLASについて math-atlas.sourceforge.net/errata.html#winpt を見てください。cygwin上ではThreadの数のauto detectができないと かかれています。 (eg., I add -t 4 to my Core2Quad configure command). 他にも直す点がありそうです。しかし,GotoBLASに勝てるかは わかりませんが,ATLASのマックスの性能をだすにはこの点を指定する 必要がありそうです。
820 名前:octave for windowsメモの筆者 mailto:sage [2009/03/16(月) 18:21:48 ] >>819 うーむ。やって見たのですが。-lpthread以外になんかオプションが必要なのかな! octave.exe:1> n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6 assertion !pthread_mutex_lock ( &(ROOT->mutex) ) failed, line 74 of file /home/atlas/atlas3.8.2-gcc4.3.3-2/../ATLAS3.8.2 //src/pthreads/misc/ATL_signal_tree.c export LIBS='-lstdc++ -lg2c -lpthread' ../../octave-3.0.3/configure --prefix=/usr/local/octave-3.0.3a --with-blas='-lptf77blas -lptcblas -latlas'
821 名前:Octave + GotoBLAS (Cygwin上) [2009/03/17(火) 01:38:34 ] 817 の投稿者です. Atlas + Octave 3.0.3 (Cygwin 上) やってみました. ・インストールの手順を書いてみました 133.5.18.167/rinkou/cygwin/atlas.html ・「-t 2」有りと無しで,性能の差が出ないので,力尽きました.残念. (私が素人なのでいけないのですが)(うまくいくと面白いんだけどなあ)
822 名前:Octave + GotoBLAS (Cygwin上) [2009/03/17(火) 02:56:37 ] 821 の投稿者です.ミスがありました.次のように訂正します. (済みません). 私が書いた「Atlas + Octave 3.0.3 (Cygwin 上) インストール手順」 133.5.18.167/rinkou/cygwin/atlas.html では: ■ Octave の make check が通らない (src/syscalls.cc のエラー.力尽きて,原因が分かっていません). ■ 「-t」無しは 1.57 秒.「-t 2」は 0.87秒 CPU: Intel Core2 Duo E8500. x=rand(2000,2000); y=rand(2000,2000); tic(); z=x*y; toc() ATLAS のことを分かっている人が,4コア以上の CPU を使うと,最高速 を叩き出せそう,と感じています.(私の力及ばず).