データ解析ツールoctaveを語ろうat UNIX
データ解析ツールoctaveを語ろう - 暇つぶし2ch750:octave for windowsメモの筆者
09/02/10 09:42:13
開発版octave 3.1.52がでました。
URLリンク(www.nabble.com)

Octaveの次のMajor Version Upはver 3.2であり,octave-3.1.xxは開発版です。
その3.1.52がでました。

gnuplotは一応defaultのgraphic backendでopenglによるgraphic backend
を機能させるためにはいろいろライブラリィが必要なようです。

詳しくは以下を
URLリンク(www.nabble.com)



751:名無しさん@お腹いっぱい。
09/02/10 11:39:01
そういえば新パソにFreeBSD7.1を入れて、
pkg_add -vr octave-devel
とインストールしたら
GNU Octave, version 3.1.51
でした。leasqrが入って無いのでoctave-forge-optimを入れてないような気がする。
バージョンごとに何が良くなったのか、見えにくいのが何とも…

そういえば、何語なのかわからないけど(チェコ語?)
Octave/Matlabのグラフィックスの例題があります
URLリンク(enacit1.epfl.ch)
gnuplotは置いておいて、jhandleならかなりMatlabに近い事が出来ました

752:octave for windowsメモの筆者
09/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:名無しさん@お腹いっぱい。
09/02/10 15:52:50
>>752
その後に、octave-forge-optimを入れたらOctave 3.0.2に上書きされました

754:octave for windowsメモの筆者
09/02/12 07:59:06
>>753 3.0.2でいいと思いますよ。

755:名無しさん@お腹いっぱい。
09/02/14 23:15:47
ここを見て気になったので試してみました
URLリンク(hiyokoz.blogspot.com)
ベンチの内容は
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の筆者
09/02/15 07:06:09
>>755

そうですか。ところでMSVC版はsse2でしょうか。Genericでしょうか?。

GenericだとATLAS使わないので。

MacOSはunixというのもあるかもしれません。


757:名無しさん@お腹いっぱい。
09/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があります
URLリンク(sourceforge.jp)
>今回使用したテストプログラムは500×500の行列同士の乗算を100回繰り返すというもの
>MKL    1.903秒
>ATLAS  3.895秒
>BLAS  16.120秒

マルチスレッドが効き2コア演算が有効になるためATLASに比べて約半分の時間で計算出来ますが
恐らく「GNU」Octaveで使うのは無理でしょう。
なので、値段もさして変わらないのならMacを選んじゃった方がいい可能性もあります。

758:octave for windowsの筆者
09/02/15 17:12:20
>>757
Accelator.frameworkのページみました。

なるほど、こりゃMacのほうがいいですね。
今度、買うならMacにしよう。

ありがとうございますm(__)m


759:octave for windowsの筆者
09/02/15 20:12:45
良く見るとCore2Duo用にのATLASも最適化出来るようですね。

MSVC版やMinGW版は、これは使っていないでしょうね。

でも、これを使ってもMacには叶わないでしょうね。

でも、差がどれくらいになるかは興味はありますね。

しかし、使おうにもかなりビルド大変ですしね。

私はCore2Duoマシン持ってないからなんともできないですが^^;


760:名無しさん@お腹いっぱい。
09/02/15 21:20:04
>>540
を見ると、
MATLABはMSVC版の3.5倍ぐらい速いようなので(MATLABはマルチスレッドに対応してる)
MSVCで2GFLOPSなら、MATLABで7GFLOPSぐらい出そうですが
Macはその倍近い12GFLOPSですし
MATLABの維持費を考えると、35万円ぐらいの8コアのMacPro買って
実効50GFLOPSもいいかもしれません

761:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/02/16 13:20:48
Cygwin介す場合が遅すぎるだけな気がする

765:octave for windowsメモの筆者
09/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メモの筆者
09/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メモの筆者
09/02/16 16:18:05
>>761
Octaveで行列型のデータつくってはきだして
gnuplotのcontourにお任せするのはどうですか。
3Dのグラフの等高線図はgnuplotで書きますから。
たしかMATRIX型のデータも扱えるはずですよ。
どうやって等高線を引くのかアルゴリズムはしりませんが,
gnuplotはソースコード公開しているからその気になれば
読めばわかると思います。

768:octave for windowsメモの筆者
09/02/16 18:44:26
>>766 自己レスです。意味不明な文章になっているので。<m(__)m>
帰りにコンピュータを走らせcygwinで自分のCPUにあわせたatlasを構築して,
そのATLASを使ってcygwin上でoctaveをビルドして,
MSVCのSSE2のCPUのATLASとの比較をして見ます。

という意味です。すみません。<m(__)m>




769:761
09/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メモの筆者
09/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メモの筆者
09/02/17 19:30:43
>>769 すいません。思いつきません。
<m(__)m>
Octaveは現在3次元とは言わず,
多次元行列サポートしてますんで,頑張ればできるんではないかと^^;

772:名無しさん@お腹いっぱい。
09/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メモの筆者
09/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:名無しさん@お腹いっぱい。
09/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メモの筆者
09/02/18 13:05:10
>>770 >>772 >>773
大学のパソコンでcygwinでやりました。ATLAS演算は,予想通りほぼ一緒でした。
MFLOPS = 4749.2
とにかく,windows上でお金をかけずに行列計算をそこそこ高速でやりたい人は
自分でATLASからビルドするということがとりあえずのまとめですね。

goto BLASでどうでるかですね。これは,再配布禁止なので,
自分でビルドするしかないですよね。



776:octave for windowsメモの筆者
09/02/18 17:31:53
octave-3.0.4RC4がでました。

URLリンク(www.nabble.com)

これで最後のRelease Candidate (RC) だと思いますが^^;

777:名無しさん@お腹いっぱい。
09/02/18 20:43:39
>>774 ありがとうございます!XとYの長さが同じ時はこれで完璧ですね。
なるほど、X(:), Y(:)で列ベクトルにして値をもっちゃえばできたんですね、
勉強になりましたm(_ _)m

778:名無しさん@お腹いっぱい。
09/02/19 09:40:55
Octave 3.0.3をcygwinでmakeすると
libcxsparse.a
でこけますね
3.0.2でやればいいのかな

779:octave for windowsメモの筆者
09/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メモの筆者
09/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メモの筆者
09/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メモの筆者
09/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:名無しさん@お腹いっぱい。
09/02/24 18:30:30
Octave-3.0.4 RC5がでました。予想外に3.0.4のリリース苦戦している模様。
これが最後のRC版になればいいのですが,

URLリンク(www.nabble.com)


784:octave for windowsメモの筆者
09/02/25 08:05:40
>>783 Plot周りのバグの指摘にJaroslav Hajekさんがきづいていなかったようで
Jwe氏より待ったがかかりました。3.0.4のリリースは遅れそうです。

私としては通常の使用では3.0.3で十分なので,無理して急ぐことはない
と意見をかきこんでいます。

しばらくは,3.0.2または3.0.3を使いましょう^^;。



785:名無しさん@お腹いっぱい。
09/02/28 01:18:02
matlabと完全互換でなくなったのは
何か理由があるのでしょうか?

786:名無しさん@お腹いっぱい。
09/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の筆者
09/02/28 13:22:51
>>785
元々からして完全互換を歌ったことははないですよ。

MATLABが変わっていったのに追いついていなかったというのが正しい認識だと思います。
Octave ver.3は、MATLABの仕様変更に対応して変わったという面があります。

私自身はMATLABを使ったことはなく、Octaveを使った講義でMATLAB互換を歌っていますのでMATLABの書籍は持っています。

最近のOctaveは、本格的なMex対応やplot周りなどは、最近のMATLABに仕様を変えつつありますし、互換性のあるコードが以前より書きやすくなっていると思います。


788:名無しさん@お腹いっぱい。
09/02/28 16:19:08
>>787

「歌う」って「MATLAB互換ですよ~♪」みたいなw

「謳う」じゃね?

789:octave for windowsの筆者
09/03/01 06:21:24
>>788
うーん。そうっすね(^_^;)


790:名無しさん@お腹いっぱい。
09/03/04 22:19:08
gnuplotへの直接命令(__gnuplot_hogehoge)がobsoleteになった、ということが
今一わかっていないのですが、とりあえず3.0系列ではplotするとgnuplotが起動
しますよね。んでterminalはx11になっているようなんですが、これを例えばwxt
にするにはどうすればいいんですか?

791:octave for windowsメモの筆者
09/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メモの筆者
09/03/05 08:12:30
>>791
砂悪 は消し忘れです。すいません<m(__)m>。

793:octave for windowsメモの筆者
09/03/05 12:32:03
>>791
書き忘れましたが,print関数でplotのファイル出力には
複数のファイル形式に対応してます。
詳しくは,help plotを参照してください。
上はgraphic backendにgnuplotを使った場合です。
Jhandleだとepsしか出力できません。


794:790
09/03/05 13:50:03
"筆者"様、ありがとうございました。

795:名無しさん@お腹いっぱい。
09/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は簡単です
URLリンク(ftp.yz.yamagata-u.ac.jp)
このcygwinで配布してるsrcを取ってきて、解凍して、同梱のpatchをあてて、configureしてmakeするだけです。
その前にAltasをmakeしてインストールして、/usr/local/atlas/lib の中にある*.a のシンボリックリンクを
/usr/local/lib に置くかどうかすれば、configureした時に見つけてくれます。

796:octave for windowsメモの筆者
09/03/06 09:25:17
>>795 cygwinでoctaveつかうならaltas入れてgcc-4をつかって
自分でビルドするのがいいと私もおもいますね。
forgeはpkg installで必要なやつだけいれればいいので。

797:名無しさん@お腹いっぱい。
09/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メモの筆者
09/03/09 10:06:54
>>797

GotoBLAS恐るべしですね。これだとMACと同等以上でしょうか。
MacでもGotoBLASを使えってことでしょうね。
再配布が禁止なので,自分でビルドしないといけないのが難点かな。
mingwでも今度やってみます。

Makeconfを書き直されたそうですが。

私がatlasを使うとき行っている
./configure --with-blas='-L/hoge/atlas -lf77blas -lcblas -latlas'

という感じで行きませんかね。

799:名無しさん@お腹いっぱい。
09/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メモの筆者
09/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メモの筆者
09/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:名無しさん@お腹いっぱい。
09/03/10 19:59:18
>>801
MSVC版で使えると最高なんですがねぇ
GotoBlasのexports/というディレクトリーで

make dll

とやると、dllファイルが出来るんですけど
MSVCのbin/のlibblas.dllとリネームして置き換えても
cblasの関数が無いみたいなエラーが出てダメでしたね

GotoBlasとcblasをくっつけてdllをつくればあるいは…
という感じがしないでもありませんが

803:octave for windowsメモの筆者
09/03/11 08:19:59
>>802
おそらくoctaveは将来,MSVC版はなくなりそうです。
というのはLapack 3.2はfortran90でかかれており,fortran90に対応した
f2cがないからです。
URLリンク(www.nabble.com)
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メモの筆者
09/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:名無しさん@お腹いっぱい。
09/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メモの筆者
09/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のビルドは

URLリンク(www.tatsuromatsuoka.com)

をご覧ください。またこの場合,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:名無しさん@お腹いっぱい。
09/03/11 13:34:46
>>806
gcc 3.4.4でした
そのうち4.xに入れ換えて試してみます

>開発版ではoctave独自のMATLAB likeなgraphic backendを持つ

3.1.xではそんな機能が入るんですか

808:octave for windowsメモの筆者
09/03/11 13:58:51
>>801 Benjaminさんのexternal libraries ではうまくいきませんね^^;
アプリケーションエラーがでてしまいます。
あれ使えると楽なのになあ。
もう少しあがいてだめなら,私がビルドしたexternal librariesと
GnuWin32にexternal librariesでビルドする方法を書くとしますかね.

まだ,external librariesはgcc-3でビルド多くて多くがスタティックライブラリ
だから,この際新しいソースを手に入れてやってみます。

809:octave for windowsメモの筆者
09/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上)
09/03/12 02:57:54
Cygwin 上での Octave バージョン 3.0.3 + GotoBLAS のインストール手順を
書いてみました 

URLリンク(133.5.18.167)

※ 今は gcc バージョン 3 にしています.そのうち gcc バージョン 4 にしたいと思っています.

お役に立ちたい,とは恐れ多いですが,フィードバックが欲しいので
(なかなか,ご返事できないかも知れないのはご容赦ください).

811:octave for windowsメモの筆者
09/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メモの筆者
09/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メモの筆者
09/03/13 07:51:33
>>811 すいません。 SuiteSparseはblasにあわせてビルドしなおす
必要ありかもしれません。



814:octave for windowsメモの筆者
09/03/13 14:50:26
GotoBLASだと
make checkで引っかかりますね。ウーム。

test_sparse.m ..........................................panic: Segmentation violation
-- stopping myself...
ATLASは家では成功したんですがね。
すこしかかりそうですね<m(__)m>


815:octave for windowsメモの筆者
09/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メモの筆者
09/03/13 17:05:02
>>810
Octave + GotoBLAS (Cygwin上)に私のページからリンク張ってもいいですか?




817:Octave + GotoBLAS (Cygwin上)
09/03/14 15:33:08
810 の投稿者です.
「octave for windows メモの著者」様,コメント,ご意見,ご示唆ありがとうございます.

個別にご返事せず,済みません.Web ページの改訂を行いつつあります.お陰様で,よい Web ページができそうです.

私が,掲示板の新参者で,「ずいぶん,厚かましいお願いをしてしまった」と恥じています.Web ページずいぶん細かく見ていただいてありがとうございます.

「私のページからリンク」は,もちろんOKです.名誉です.
事後報告で申し訳ないのですが,私の方からも,リンクを張り,相互リンクをお許しいただけますでしょうか? 

Web ページは,もう少し見直しを続けます.
GotoBLAS を見つけ,Octave に組み込んだとき,「こんなに速くなるのか」と感動しました.私は初心者なのですが,少しでもお役に立てればと思っています.

818:octave for windowsメモの筆者
09/03/16 07:57:46
>>817
相互リンクの件了解しました。よろしくお願いします。

819:octave for windowsメモの筆者
09/03/16 13:42:41
>>817
ATLASについて

URLリンク(math-atlas.sourceforge.net)
を見てください。cygwin上ではThreadの数のauto detectができないと
かかれています。

(eg., I add -t 4 to my Core2Quad configure command).

他にも直す点がありそうです。しかし,GotoBLASに勝てるかは
わかりませんが,ATLASのマックスの性能をだすにはこの点を指定する
必要がありそうです。


820:octave for windowsメモの筆者
09/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上)
09/03/17 01:38:34
817 の投稿者です.
Atlas + Octave 3.0.3 (Cygwin 上) やってみました.
・インストールの手順を書いてみました
  URLリンク(133.5.18.167)
・「-t 2」有りと無しで,性能の差が出ないので,力尽きました.残念.
 (私が素人なのでいけないのですが)(うまくいくと面白いんだけどなあ)

822:Octave + GotoBLAS (Cygwin上)
09/03/17 02:56:37
821 の投稿者です.ミスがありました.次のように訂正します.
(済みません).

私が書いた「Atlas + Octave 3.0.3 (Cygwin 上) インストール手順」
URLリンク(133.5.18.167)
では:
■ 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 を使うと,最高速
を叩き出せそう,と感じています.(私の力及ばず).


823:Octave + GotoBLAS (Cygwin上)
09/03/17 03:41:07
821 の投稿者です.
(再び,自己フォローです.済みません.確かめもせず,投稿している私がオッチョコチョイです.最新情報です)

■ ATLAS の configure の引数
../configure -t 2 -b 32 -D c -DWALL --prefix=/usr/lib/atlas --with-netlib-lapack=/tmp/lapack-3.2/lapack_LINUX.a
-t 2 は,「コア数が2個」というような意味
■ Octave の configure の引数
CC=gcc-4 CXX=g++-4 F77=gfortran-4 ./configure --prefix=/usr/local --with-blas="-L/usr/lib/atlas/lib -lptff77blas -latlas -lpthreads" --with-lapack="-L/usr/lib -llapack_LINUX -ltmglib_LINUX"

これで,Octave の make check は通過.

CPU: Intel Core2 Duo E8500 の場合
・「-t」無しは,およそ 1.57~1.60秒
・「-t」の場合,およそ 0.85~0.87秒
   「n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6」の結果,
MFLOPS=1.8868e+04
と出てきます.
※ 819 番のご投稿に「>> 817」とありましたので,少しがんばってみました.






824:octave for windowsメモの筆者
09/03/17 10:03:35
>>823 すばらしい
Octave Cygwin+GotoBlas GFLOPS = 15.75

MFLOPS=1.8868e+04

おお!,ATLASは手間がかかりますが勝ってますね。
ATLASもいつのまにか3.8.3になってますね。
HPを参考に再チャレンジします。

あと,GotoBLASはcygwinで構築したliblapack.a
(lapack_LINUX.aをリネームしたもの)を使うとmingwで正常に動きました。

mingwのライブラリキットのリリースを手がけます。一部はまだ,gcc-3.4.5
でビルドしていますが,動作するのでとりあえずあげるのを優先します。
(ぼちぼち再構築します。)



825:octave for windowsメモの筆者
09/03/17 16:27:41
>>822

GNU FORTRAN コンパイラ・バージョン 3 を使うと,LAPACK バージョン 3.2 がうまくビルドできないことがあります(例えば,下記の通りです.状況によってエラーメッセージが変わります). 原因は不明です.

URLリンク(www.netlib.org)
の7. Install Procedureに
LAPACK-3.2 now requires a FORTRAN 90 compiler. (Do not try to compile with g77 or other 77 compilers.)

となっており,GCC-3のfortranはFortran 77ですから使えないのです。
いまやGCC-3はObsoleteです。Octave もDevelopment branch (3.1.x)ではGCC-3では
ビルドできません。というわけで,cygwinでもgcc-4に移行の最中なのです。

gcc-4 cygwinはついこないだ4.3.2-1のalphaバージョンから4.3.2-2の
betaバージョンになりました。

正式版がでたらgcc-4がgccになると思います。



826:Octave + GotoBLAS (Cygwin上)
09/03/18 12:44:31
>> 824, 825
ご親切に,ご教示ありがとうございます.確かに,gcc-4 が今後の主流だと思います.
 (Web ページは,別の面からみても,表現が不適切でしたので,見直しつつあります).

Windows は MinGW + Octave の方が,CYGWIN よりも需要が多い,と思いますので,
MinGW 版のリリースに期待している人は多いと思っています.

さて,もう1度実験してみました.
ソフト: Octave 3.0.3 + ATLAS (Cygwin)
ハード: Intel Core2 Quad Q9550 のマシン
x=rand(2000,2000); y=rand(2000,2000); tic(); z=x*y; toc()
⇒ 0.566~0.578秒
 ※ 詳細は URLリンク(133.5.18.167)
※ インストールに慣れている人でしたら,もっと速くなるような気がします.

827:名無しさん@お腹いっぱい。
09/03/18 19:06:51
>>797>>805 の者です
gcc-4, g++-4, gfortran-4で、Gtoblas, Cblas, Lapack3.1.1, SuiteSparse3.2をmakeしなおした上で
octave-3.0.3をやっとmakeしました。
つまづいたのは libstdc++.dll.a で、エラーの理由はよくわからないのでリネームして隠し
それでもSuiteSparseでエラーが出るので色々やった結果
(octave-3.0.3-1.src.patchをあてたのが効いたか、SuiteSparseのincludeファイルもインストールしたのどちらか)
どうにかmakeに成功したました。

マシンは自宅の Intel Core2Duo 2.1GHzです(2.4GHzマシンの12%落ちぐらいの性能のはず)。

octave:1> n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
t = 1.32200
MFLOPS = 12102.9

約12GFlopsでした。まあまあですね。
それで問題の比較演算なんですが、

octave:1> A=randn(100);tic;for jj=0:10000;B=(A>0)*1;end;toc
Elapsed time is 2.245 seconds.

一方、MSVCだと

octave:1> A=randn(100);tic;for jj=0:10000;B=(A>0)*1;end;toc
Elapsed time is 2.42354 seconds.

で、ほぼ同じ。これでやっと使えるようになりました。ありがとうございました。

828:名無しさん@お腹いっぱい。
09/03/18 19:26:05
>>824
その15.75GFlopsのは、Core2Duo 2.4GHzなのですが
Atlasの1.8868e+04MFlopsのは、Core2Duo E8500=3.16GHzなのです

なので、おそらくgcc-3を使ってGotoBlasで測定すると
2.4:3.2=15.75:X
でX=3.2*15.75/2.4=21GFlops
ぐらいになるはずです

それでAtlasの約19GFlopsというのはそれよりも若干低いわけですが、
このレベルになるとそれはもう細かい話で、再配布可能な点を考えれば
Atlasは十分実用的だと思われます。

829:名無しさん@お腹いっぱい。
09/03/18 19:55:27
長い行列などをless表示ではなくコンソールに残したまま表示することってできますか?
長めの出力を交互に見比べたいときにqで消えてしまうので不便です

830:名無しさん@お腹いっぱい。
09/03/18 19:57:15
829です。環境はwindows版です。
ここしかOctave関連が見つからなかったので質問しました。
よろしくお願いします。

831:名無しさん@お腹いっぱい。
09/03/18 20:25:38
>>829
more off
としてください

832:octave for windowsメモの筆者
09/03/19 08:51:45
>>829 >>830 >>831

この場合コンソールのバッファを増やしておくとよいでしょう。
スクリーンのoctaveのアイコン右クリック→プロパティ→レイアウト
→画面バッファのサイズ→高さ

変更すると確認の画面で
このウインドウを起動したショートカットを変更する
で設定を保存してください。

この高さの値をたとえば9999とかにしておくとlessなしでも結構いけます。

833:octave for windowsメモの筆者
09/03/19 08:59:11
>>828 ありがとうございます。GotoBLASの方がいい場合が多いが
配布に関するライセンスの問題があり,その点ではATLASがいいという
ことでしょうね

GotoBLASのライセンスはテキサス大学の Texas Advanced Computing Center
ものなので仕方ないのでしょうね。



834:octave for windowsメモの筆者
09/03/19 09:38:49
ここも800番超えたしそろそろ次スレたてを考えないととはおもうのですが。
>>439 次スレからはプログラム板に立てるか。
>様々なプラットフォームに対応しているプログラマブルな
>ソフトがUNIX板にあるというのがおかしい。

というような意見があるので,
ソフトウェア板
あたりなのかな。
タイトルは
「データ解析ツールoctaveを語ろう2」

octaveはデータ解析ツールだけでないので
シンプルに
「octaveを語ろう2」なのかな。


835:名無しさん@お腹いっぱい。
09/03/19 10:03:21
>>834
UNIX板でいいと思います
そもそもインストールネタしか無いぐらいの過疎スレですから
あっちこっち動き回るのは得策とは思えません

言語の内容的な論議はシミュレーション板やプログラム板のMatlabスレにまかせて
導入方法や、高速化などに特化した方がいいと思います

836:octave for windowsメモの筆者
09/03/19 11:02:28
>>835
なるほど。まあ,ビルドねたになるとwindows上でもMSYS+mingwやcygwin
などのUnixyなツールでやるわけで,Visual Studio云々にはなりませんよね。
最近やり取りしたGOTOBlasやATLASネタもUnix上の方がすこし便利というくらい
の話で基本は同じですからね。

データ解析ツールoctaveを語ろう2
でもいいですかね。名前よりもないようですからね。名前変えると
検索とかで大変ですからね。



837:名無しさん@お腹いっぱい。
09/03/19 15:48:25
行列演算を高めたOctaveで何が律速になってるのかのテスト
マシンはIntel Core2Duo 2.4GHz

MATLAB 7.6.0 (R2008a)
>> tic;for jj=0:10000;end;toc
経過時間は0.000066秒です
>> A=randn(200);tic;for jj=0:10000;B=(A>0);end;toc
経過時間は3.358699秒です
>> A=randn(4000000,1);tic;for ii=1:4000000,if A(ii,1)>0,end;end;toc
経過時間は0.118251秒です

Octave 3.0.3 (MSVC) ← BLASの関係しない演算なので
octave:1> tic;for jj=0:10000;end;toc
Elapsed time is 0.0079 seconds.
octave:2> A=randn(200);tic;for jj=0:10000;B=(A>0);end;toc
Elapsed time is 5.9 seconds.
octave:3> A=randn(4000000,1);tic;for ii=1:4000000,if A(ii,1)>0,end;end;toc
Elapsed time is 52.8131 seconds.

一番目はループテスト。tic,tocの誤差程度の差。
二番目は比較演算。Matlabより1.6倍遅い。けどそんなにひどくも無い。
三番目はif文。Matlabより50倍遅い。ここが明らかに律速。

Cygwin番のifはさらに1.5倍程度遅いもよう。
なので、if文は使わないようにして、比較演算に置き換えるべき。

838:octave for windowsメモの筆者
09/03/19 17:06:12
>>837

フーム。なるほど。loop自体よりよりifが遅いってわけですね。
これはためになる。
MATLABが速いのはJIT(Just In Time)コンパイルしてるからだそうですね。
でもloopの速度の改善がそれほどないことを考えると完全なバイナリじゃなく
中間コードぐらいかな。octaveもscirptをロードするときには中間コードには
しているらしいけどそのレベルがちがうんでしょうか。

MATLABもっていない人の発言なのであくまでも推測でしかありませんが。



839:名無しさん@お腹いっぱい。
09/03/19 17:39:24
ifのやつパイプラインがどのくらいストールしてるか知りたいですね。

840:名無しさん@お腹いっぱい。
09/03/19 18:11:50
>>838
いや、400万回の空ループ(3番目のif文のテストに相当)を回すと
MATLABで0.01秒
Octave-MSVCで2.22秒で
200倍以上差があるんですけど、
それだけのループの中でやる演算にかかる時間に比べれば
ループのオーバーヘッドは無視出来るって事ですね
JITがどうのというのは、たぶんその程度のの差です

比較式については以下の例をあげます

100x100の行列の全要素を調べて正なら1、違ったら0の行列を返す場合
if文なら
A=randn(100);for ii=1:100,for jj=1:100,if A(ii,jj)>0,B(ii,jj)=1;else,B(ii,jj)=0;end;end;end;
MATLABで0.01秒、MSVCで0.36秒です

比較式で同じ事をした場合
A=randn(100);C=(A>0).*1;
でよくて
MATLABで0.0004秒、MSVCで0.0008秒です。
同じA行列で計算した後にB-Cするとゼロ行列が返るので同一の結果のようです。

841:octave for windows メモの筆者
09/03/21 15:30:55
ウーム。MinGWでの高速行列計算用octaveのビルドは苦戦中。

GotoBLASは、make checkのtest_sparseでsegmentation violationでこける。原因不明。

ATLASのマルチスレッドは、posix threadを使うのでcygwin上でないと動かない。

MinGWでは、今のところシングルスレッドのATLASしか動かない。まあ、これでも、バイナリ配布のoctaveよりも行列計算速度はかなり改善するので、ライブラリキットを出す意味はあるかな。

今のところ、マルチコアのCPUの利点をWindowで使うにはcygwinということですかね。

となると、やはり、計算はwindowsよりもunixがいいような気がしてます。unix屋さんにはそんなの当然といわれそう(^_^;)。

まあ、もう少しMinGWであがいてはみますが。


842:Octave + GotoBLAS (Cygwin上)
09/03/22 02:26:32
>> 841

■ Octave の configure の引数

ATLAS のマルチスレッド・ライブラリを使って,Octave を make するとき
Octave の configure の引数を調整できるようです.
例えば,普通の CBLAS でなくて,ATLAS の libptcblas.a をリンクすることができます
(→この方が望ましい)

CC=gcc-4 CXX=g++-4 F77=gfortran-4 ./configure --prefix=/usr/local --with-blas="-L/usr/lib -L/usr/lib/atlas/lib -lptcblas -lptf77blas -latlas -lpthread" --with-lapack="-L/usr/lib/atlas/lib -llapack"

※ 口出しだけで,実行が伴っていなくて済みません(MinGW の環境を作るスキルがないもので).
  あわよくば,解決のヒントになれば良いなと思いまして,書き込みました.

843:Octave + GotoBLAS (Cygwin上)
09/03/22 02:29:18
842 の投稿者です.
済みません.「841」の内容は,すでに 820 で投稿済みでした.申し訳ない.

844:Octave + GotoBLAS (Cygwin上)
09/03/22 02:31:57

---
842 の投稿者です.
済みません.「841」の内容は,すでに 820 で投稿済みでした.申し訳ない.
---
       ^^^
[842」の内容は,すでに 820 で投稿済みでした.申し訳ない.
このように訂正します. 恥の上塗りで,申し訳ないです.

845:octave for windowsメモの筆者
09/03/23 12:39:28
Octave + GotoBLAS (Cygwin上)様
貴兄のページで気になった点を
すいません。/usr/localでなく/usrにインストールすれば
以下の作業は不要です。
cp /usr/local/lib/octave-3.0.3/lib* /usr/lib

/usrにインストールするにはconfigureで
./configure --prefix=/usr (... other options)

prefixを指定します。

また,octaveはpkg-configは使いません。独自のshell script octave-configを使います。
そこで,prefixの値を変更すればいいのですが。
これは他のソフトからoctaveのライブラリを使う場合に
octaveのインストール情報を探るのにconfigureやmakeから参照されるとき
つかう物なので用途がないときは触らないで結構です。

cp /usr/lib/libctave.dll.a /usr/lib/liboctave.dll.a
ですがこれは,libctave.dll.aがMacroさんのミスなので
mv /usr/lib/libctave.dll.a /usr/lib/liboctave.dll.a
が妥当です。

846:octave for windowsメモの筆者
09/03/23 12:40:28
>>845
私は試験的にいろいろを作成するため prefixを
--prefix=/usr/local/octave-3.0.xx.yy
のように指定してます

xxはバージョンでyyは自分で決める識別子です。頻繁に使うときはaliasを使って

alias octaveyy='/usr/local/octave-3.0.xx.yy/bin/octave'
を.bashrcに書き込みます。
ライブラリのコピーなど。この方法の利点は(もちろん欠点もありますが),
アンインストールが/usr/local/octave-3.0.xx.yy をexplorer削除する
だけでいいからです。
ソースのイメージを消しても同じprefixでconfigureして,make uninstall
すればいいのですが面倒なので^^;。
無論これはoctaveのバージョンをいろいろ作成する人以外には面倒なので
あまりすすめませんが。試験的にやるときにはいいですよ。



847:octave for windowsメモの筆者
09/03/23 12:55:45
ソースコードからコンパイルするときのヒント(メモ)
(参考) Cygwinのソースパッケージを使わないというときは,下記の手順で,ソースコードを書き換えてください(バージョン 3.0.3 の場合)

ですが
3.0.4のback portをするともっとシンプルです。
sparse-util.hの以下を
extern OCTAVE_API void SparseCholError (int status, char *file,
int line, char *message);
extern OCTAVE_API int SparseCholPrint (const char *fmt, ...);

*****
// FIXME this overload is here due to API change in SuiteSparse (3.1 -> 3.2)
extern OCTAVE_API void SparseCholError (int status, char *file,
int line, char *message);
extern OCTAVE_API void SparseCholError (int status, const char *file,
int line, const char *message);
extern OCTAVE_API int SparseCholPrint (const char *fmt, ...);
にします。ページに書かれている変更では,cygwinでは通りますが,
mingwではとおりません。たぶん,3.0.4では私が今回書いたように変更された
と思います。

848:octave for windowsメモの筆者
09/03/23 12:59:30
>>847
たぶん,3.0.4では私が今回書いたように変更された
と思います。


たぶん,コンパイラによっては,mingwのg++のようにcastが通らないものがある
ので今回書いたように変更されたと思います。

です。すいません。<m(__)m>




849:octave for windowsメモの筆者
09/03/23 14:11:31
>>847
すいませんsparse-util.ccも書き直す必要があります。

SparseCholError (int status, char *file, int line, char *message)
{
(*current_liboctave_warning_handler)("warning %i, at line %i in file %s",
status, line, file);

(*current_liboctave_warning_handler)(message);
}

// FIXME this overload is here due to API change in SuiteSparse (3.1 -> 3.2)
void
SparseCholError (int status, char *file, int line, char *message)
{
SparseCholError (status, file, line, message);
}

void
SparseCholError (int status, const char *file, int line, const char *message)
{
(*current_liboctave_warning_handler)("warning %i, at line %i in file %s",
status, line, file);

(*current_liboctave_warning_handler)(message);
}

に変更が必要です。すいません。<m(__)m>


850:octave for windowsメモの筆者
09/03/23 15:20:12
>>770 TLA3.8.2を自分のコンピュータ用にcygwinでビルドしてこれをつかって,
mingw-4.3.2-dw2-TDMでoctave-3.0.4RC3をビルドしたもの
MFLOPS = 4830.2

cygwinでHT-pentiumでmulti-threadで効果があるか見てみました。
octave:6> n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
t = 3.8080
MFLOPS = 4201.7

ウーム。GotoBLASと同様にHyper Threadingでは,multithreadを使用しない
ほうがいいようですね。物理的にコアが2つ以上ないとその威力は発揮
できないようです。

まあ,こういうのは試してみないとわからないもので,この記録はそれはそれ
で意味があるのかなと思います。




851:octave for windowsメモの筆者
09/03/24 14:00:32
cygwinでビルドしてもgotoBLASでSegmentation faultがでました。:-(
test_sparse.m ..........................................panic: Segmentation fault -- stopping myself...
Segmentation fault

GotoBLASの構築におかしなとこがあるのかなと思います。ウーム。

852:Octave + GotoBLAS (Cygwin上)
09/03/24 23:25:00
octave for windowsメモの筆者様
845 から 850 まで.とても丁寧に見ていただいてありがとうございます.
 (近日中に,書き直ししたいと思っています.)

851 について.私の方では再現できないのですが,
 URLリンク(133.5.18.167)
に,私の方での configure の結果を載せています.これが一致しているか否かで,
 問題の切り分けができるかなあ,と思っています.(あまりお役に立てなくて済みません).

853:名無しさん@お腹いっぱい。
09/03/26 08:40:49
octave-3.0.4RC6がでました。グラフィックス周りのバグフィックスのようです。
controldemo(とういか制御系関数のバグ)のフィックスはなされていなかった
ようですぐにパッチがでました。

854:octave for windowsメモの筆者
09/03/26 08:42:24
octave-3.0.4RC6がでました。グラフィックス周りのバグフィックスのようです。
controldemo(とういか制御系関数のバグ)のフィックスはなされていなかった
ようですぐにパッチがでました。

855:octave for windowsメモの筆者
09/03/26 11:37:17
>>853 >>854 2重投稿すいません。なんかユーザ登録のエラーでて書き込みが
できなかった見たいで<m(__)m>


856:octave for windowsメモの筆者
09/03/26 12:19:07
>>851,852
まあ,GotoBLASの再構築とか,ビルドの最適化オプションあてたりとか。
Macroさんのパッチをあてたりとかいろいろかえましたが同じ症状でますね。
どこが悪いかかは,分かりません。gdbでトレースしましたが,GotoBLAS自体
が私のCPUにたいして正常に動かないコードを発しているようです。

test_sparse.m ..........................................
Program received signal SIGSEGV, Segmentation fault.
0x64aeda26 in zpotf2_ ()

zpotf2_はGotoBLASの中にあるので。

まあ,ATLASでもそこそこ性能だせるので,もうあがくのやめます(泣)。

857:octave for windows メモの筆者
09/03/28 10:35:59
3.0.4RC7がでました。mingwとcygwinでテストし、報告しました。
今までずっと未解決だった問題は全てクリアされているようです。
unix系のplatformでも問題なく動いているようで、おそらくもうすぐ3.0.4の正式版のソースが出そうです。


858:名無しさん@お腹いっぱい。
09/03/29 18:02:15
debianやubuntuって、octave3.0パッケージ導入して、atlasも導入してたら自動的にそっちを
使ってくれるんだね。Rも同様みたいですね。

859:octave for windowsメモの筆者
09/03/30 09:04:13
>>858 ウーム。さすがにUnixはちがいますね。ところでatlasは,ソースから自分の
コンピュータにビルドですか。たしか,DebianだとそれぞれCPUに特化した
atlasのバイナリあったような気がしているのですが気のせいですかね?

860:名無しさん@お腹いっぱい。
09/03/30 09:30:24
>>859
そうみたいですよ。debianの派出したものがubuntuなのでそのまんま、同じことになってる
ようです。
ただし、1cpuのみだろうと思う(未確認)なので、複数のcpuを使うときはソースをとってきて
自前でコンパイルしてパッケージで導入という流れなんだろうなと思ってます。

861:名無しさん@お腹いっぱい。
09/03/30 09:32:15
あと、atlasは.debパッケージでバイナリ供給されています。

862:octave for windowsメモの筆者
09/03/30 15:57:47
>>860 multithreadのatlasは,pthread(posix thread)を使うのでptが
ライブラリについています。libptf77blas.a libptcblas.a
のように。
あとリンカにオプションで-lpthreadがついているかどうか。
でも,ダイナミックリンクだとライブラリの方にpthreadが取り込まれている
かも知れませんが。

863:名無しさん@お腹いっぱい。
09/03/30 16:13:20
>>862
atlasのライブラリを少し調べてみた(*1)けど、依存性にthreadライブラリは付いていない
みたいでした。3.6.0を利用しているということで少々古いものなのかな。lennyのunstable
ならoctaveも3.04 rc7みたいですが。

*1 URLリンク(packages.ubuntu.com)
*2 URLリンク(packages.debian.org)


864:octave for windowsメモの筆者
09/03/30 18:00:05
>>863 3.6.0は古いですね。おそらく古いCPUならいいですが,GotoBLASでの
後藤先生のパワーポイントのファイルでATLAS 3.7.xxとGotoBLASの比較では
GotoBLASがかなり速くなっていたんですが,Octave + GotoBLAS (Cygwin上)
さんが
>>828
で述べられているにATLAS3.8.3では差はそれほど大きくはありません。
やはりATLASは3.8.3で自分で作成されたほうがよいかと思います。
特にCore2DuoとかCore2Quadをお持ちならば。



865:octave for windowsメモの筆者
09/03/30 18:36:51
gcc-4.3.3 GCC-TDMのsjlj-EH(Exception Handling)をつかうとmingwでも
multithreaded ATLASが使えました。
ただし,>>803 のテストではdw2-EHの方が25%-30%程度はやいので
痛し痒しです。
n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
はmultithreaded ATLASで(HT-pentium4 prescott)
MFLOPS = 4970.9
single threaded ATLASで
MFLOPS = 4830.2
論理コアのHTでも若干速いです。たぶん,Core2Duoあたりだと大分成績
よさそうですね。
sjljはインタープリターが遅いが,multithreaded ALTASが使える。
このあたりは痛し痒しですね。

このあたりの情報は本家octaveのMLにもアップしました。
ベンチマーク好き(^^;私もですが)の方のいろんなプラットフォーム,CPU
での報告まってます(笑)。




866:octave for windowsメモの筆者
09/03/30 19:31:57
本家のMLに書いたものです。ご参考までに。
URLリンク(www.nabble.com)

なお,octave-3.0.2をmingw-3.4.5でビルドしたバイナリの情報をかいていますが
このライブラリを現在のOctaveのビルドにとりあえず使えると思います。


867:名無しさん@お腹いっぱい。
09/03/30 23:30:31
とりあえず入れてみたよ。僕のメインpcは
opensuse 11.1 x86_64 core2duo 2.66GHz + 4GRAM
なんで、(ubuntu/debianはサブ)そちらに、atlas3.8.3とoctave 3.0.3が
パッケージで導入できるので、src.rpmを取ってきて、specファイルを
改造して入れてみました。

もちろん、pthread対応をしてます。

octave:3> n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
t = 0.98570
MFLOPS = 1.6232e+04
octave:4>

ざっとこんなかんじです。16GFLOPくらいですかね。>>828さんの値とほぼおなじですかね。

868:octave for windowsメモの筆者
09/03/31 08:48:50
>>867
おお!すばらしい!
マルチコアのマシンでは
行列計算重視でなければバイナリ導入。重視ならばpthread ATLASつかって
自分でビルドという感じですかね。
しかし,最近のパソコンはすごいな^^;

869:名無しさん@お腹いっぱい。
09/03/31 09:41:38
>>868
あと、glpkとumfpack/amdもパッケージにあったので対応させましたよ。
umfpackといえば、昔macにいれるときに一筋縄で行かなかったのであまり良い
印象はもってないけど、パッケージで導入が出来るので楽だった。

opensuseのscienceとeducationリポジトリを追加するとこの辺のものはそろっ
てるみたいです。

ps3でlinuxを使ってoctaveをやってる人っているのかなぁ。。。xを起動させなければ
余裕がかなりできると思うんで。

870:名無しさん@お腹いっぱい。
09/04/01 21:09:10
ソースコードを貼ってここを使いたいなら
URLリンク(codepad.org) を使えばいいよ。ここでplain textを選択すればoctaveでも使えるので。

例) URLリンク(codepad.org)

871:octave for windowsメモの筆者
09/04/02 13:33:52
>>870 なるほど Thanks!!


872:octave for windowsメモの筆者
09/04/02 13:40:12
3.0.4がついにでました。
URLリンク(www.nabble.com)
まだ,ソースコードだけなので各platfromのバイナリはこれからだと思います。

Msvc版はおそらく出ないでしょう。
Benjaminさんは,mingw版は3.0,4で出すといわれたいたのでこれはでるのでは
と思います。

将来的にはMichaelさんのMSVC版とBenjaminさんのMingw版は統合され,
WindowsのNative版はMingwでリリースされるのではと思います。


873:名無しさん@お腹いっぱい。
09/04/03 13:14:03
>>493
一年前のものにレス。
今は仮想環境という便利なものがあるのでそちらで、いろんなディストリを試すことを
おすすめします。手元にはurlがないので割愛しますが:
仮想環境:
1.vmware ; vmplayerは無料。仮想ディスク作成はeasyvmxというサイトを利用すれば簡単
です。vm toolsを入れれば、使いがってはあがります。windowsのディスクトップとのコピペ
もできます。vm toolsは各ディストリにパッケージとして配布されていたり、デフォルトでイン
ストールされることは多い。
2.virtualbox ; vmwareよりは少し遅いですが、これだけで仮想ディスクの作成も出来ます。
付属のguest additionsを導入することによってこちらも使いがってがあがります。このツール
も各ディストリでデフォルトで入ってることは多い。

次に、ディストリですが、
deb系はここでも触れられたように、atlasのバージョンが古めだが、導入すれば、すぐにatlas
を使えるようになってくれますね。ubuntuの日本グループはvmwareやvirtualbox用の仮想ファ
イルを配布しているので、慣れるという意味ではオススメできる。
rpm系:
RHELクローン: scientific linux / cent os ; 保守期間が長い。商標以外の部分は商用の
Red hatと同じ。scientificのほうはフェルミ国立加速器研究所がメンテナンスしているようで
す。fedoraはRHELの実験場です。
openSUSE: 追加のレポジトリを加えれば新しいoctave/atlasは利用可能。
mandriva: rpmfindで調べてみたら、こちらのディストリもatlasは新しいものが入ってる。

この辺が使えるところではないですかね。

874:名無しさん@お腹いっぱい。
09/04/03 14:03:58
RHELクローンの追加リポジトリは
URLリンク(okyuu.com) を参考にしてください。
調べたところ、octave 3.0.1 / atlas 3.8.3 でした。

875:octave for windowsメモの筆者
09/04/03 16:13:28
>>873 >>874 Thanks!! 今年の申請予算次第だけどあたれば,
コンピュータリプレイスするのでそのとき考えます。

以前,はやりかけたcoLinuxって最近はどうなんでしょう。
いかんoctaveねたとかけ離れている<m(__)m>

876:octave for windowsメモの筆者
09/04/03 16:25:18
>>875 うむ。予算はずれた。まあ,当分プレスコット3.4GHzでWindowsで
頑張ります^^;

というわけで「octave for windowsメモ」は今年度は続きます(苦笑)

877:名無しさん@お腹いっぱい。
09/04/03 20:17:00
>>875
coLinux野郎ぜ! Part7
スレリンク(linux板)

878:名無しさん@お腹いっぱい。
09/04/05 13:20:13
FreeBSDは atlas 3.8.2,
octave に関しては 安定版 octave 3.0.3, 開発版 3.1.54が入っていた。

879:octave for windowsメモの筆者
09/04/06 08:05:28
Octave.app 3.0.4 for Mac OS Xがでたようです。
詳しくは以下を
URLリンク(www.nabble.com)

880:名無しさん@お腹いっぱい。
09/04/06 14:24:29
emacs のoctave modeって使ってる人がどのくらいいるんでしょうかね?
みなさんどっからoctaveを使ってますか?
あまりにも使い勝手が悪いと思ったので、改良しているところですね。
RのESSやruby-modeと操作性を合せていってるところです。

881:名無しさん@お腹いっぱい。
09/04/06 14:30:52
imaximaともです。C-c C-b, C-c C-c, C-c C-rの3つを直すだけでも
操作性が同じになります。この辺が他のemacsとソフトの連携部分の操作性が
ずれているので。

882:octave for windowsメモの筆者
09/04/06 18:29:43
なんかOctave-3.0.4のソースのLoad関数にバグがあるようで
Benjaminさんがパッチを出されています。
ソースからビルドする人は,パッチをあてましょう。

URLリンク(www.nabble.com)"load"-function-in-octave-3.0.4-p22895800.html

883:octave for windowsメモの筆者
09/04/08 08:11:29
>>882 このバグをfixするために3.0.5が出そうです。
すでにrc1がでました。
3.0.5?
URLリンク(www.nabble.com)
3.0.5 rc1
URLリンク(www.nabble.com)



884:名無しさん@お腹いっぱい。
09/04/08 10:00:08
URLリンク(www.emacswiki.org)

というのが今年の3月に出たみたいですね。auto-complateは別窓が開く
補完用のパッケージですが、このファイルの中にあるoctave-keywordsを
次のようにくわえてみればoctave-complete-symbolが充実した補完に産まれ
変ります。
(require 'octave-mod)
(setq octave-completion-alist
(nconc octave-keywords octave-completion-alist))


885:名無しさん@お腹いっぱい。
09/04/10 01:23:25
octaveの出力するsvgがinkscape0.46でバグるけど、次期inkscapeではなおるみたいです。
今での簡単な対処方法は

URLリンク(www.yamamo10.jp)

を参考にしてください。

886:名無しさん@お腹いっぱい。
09/04/10 14:51:08
>>420 You should come out of the closet.

887:886
09/04/10 15:12:05
誤爆したorz スルーお願い。

888:octave for windows メモの筆者
09/04/11 18:02:34
>>886 スルー('◇')ゞ ラジャ

889:octave for windows メモの筆者
09/04/11 18:03:19
>>886 スルー('◇')ゞ ラジャ

890:octave for windowsメモの筆者
09/04/15 08:13:36
4/8にもう 3.0.5の正式版出てました^^;。
ソースは,URLリンク(www.gnu.org)

で,Octave.app 3.0.5 for Mac OS Xがでました。
詳しくは以下読んでください。
URLリンク(www.nabble.com)


891:Octave + GotoBLAS (Cygwin上)
09/04/19 02:37:32
Cygwin で Octave-3.0.5 の make, make check を行ってみました.
make check で失敗します.
 ※「助けて」という意味ではなく,参考情報としてお送りしています.
  (「素直に,Linux, FreeBSD, Mac 等を使えば・・・」というご意見は分かります)

■ 皆様ご存知の通り,Cygwin 用のソースコードパッケージは,
簡単に入手できます
URLリンク(ftp.jaist.ac.jp)

■ ATLAS 3.8.3 を使う場合
make は通ります.
make check は,エラーが 2 個 (Octave-3.0.3 では出なかったエラー)
(1) src/syscalls.cc ........................................ PASS 0/1 FAIL 1
エラーメッセージは,「octave 3612 child_copy: linked dll
data write copy failed, 0x6B4000..0x6c1600, done 0, ...」
    ※ 私の LAPACK インストール時のミスかも,と感じています.
(2) scripts/specfun/nchoosek.m ............................. PASS 1/2 FAIL 1

■ GotoBLAS を使う場合
make は通ります.
make check は,途中で止まり続行できない.
(1) src/syscalls.cc ........................................ 2 [main] ?
couldn't allocate heap, Win32 error ...


892:octave for windowsメモの筆者
09/04/20 08:22:22
>>891

scripts/specfun/nchoosek.m ............................. PASS 1/2 FAIL 1
は3.0.3には存在しなかったテストです。これは,計算誤差の許容度が
厳しすぎるためで,問題はありません。

make check すると test ディレクトリにfntests.logが生成されますので
これを見ていただけると問題がわかるかもしれません。

Lapackで問題ならば,blasだけGotoBlasやATLASをつかってLapackは,Octaveの
ソースコードにあるものを使うと問題が解決される場合があります。
この場合 configureで --without-lapack オプションをつかうことで
Octaveのソースコードにあるlapackが使用されます。



893:Octave + GotoBLAS (Cygwin上)
09/04/21 02:28:01
>> 892
ありがとうございます.もう少し時間をかけて,調べてみます.
いろいろな組み合わせが考えられ,少しずつ,エラーの出方が変わる,
というところまでは見てとれています.
※ 知り合いの Windows マシンに,Octave と ATLAS をあげたい,というのが本来の動機です



894:octave for windowsメモの筆者
09/04/21 09:44:46
>>893 英語を書くのがいやでなければ,cygwinのMLでcygwin版maintainerの
Marcoさんに聞くのが一番早いかなと思います。

895:octave for windowsメモの筆者
09/04/24 19:08:16
>>892 3.0.5のビルドをcygwin+ATLASでやりましたが,
scripts/specfun/nchoosek.m ............................. PASS 1/2 FAIL 1
以外はエラーはありませんでした。ただし,SuiteSparseは,自分でビルドした
ものを使っています。 lapackは,cygwinのものを使っています。
参考までに

896:octave for windows メモの筆者
09/04/26 06:09:00
octave for windows MSVC版はライセンス問題で今は、配布されていません。
Mingw版のみ配布されています。MichaelさんもMingwでのビルド を進めておられるようです。

897:octave for windowsメモの筆者
09/04/27 13:01:56
>>896 なぜそうなったかをたどってみました。私のメモ
URLリンク(www.tatsuromatsuoka.com)
に大体のことを書きました。詳しくは,そこで紹介している長いスレッドを
ご覧ください。
なお,メモにも書いていますがBenjamin氏が3.0.5の準備をしているそうです。

898:octave for windowsメモの筆者
09/04/30 14:51:35
octave build tool kit under the MinGW
URLリンク(www.nabble.com)

899:名無しさん@お腹いっぱい。
09/04/30 15:58:37
>>896
Michaelビルド版を待てばJhandleを期待出来るのでしょうか。

もしJhandleが使えて、GotoBLASも有効に出来れば最高ですが。

900:octave for windows メモの筆者
09/05/03 05:42:47
>>899
Michael版は、多分3.2からだと思います。
多分当分出ません。

3.2では、BenjaminさんとMichaelさんの仕事は、統合されるようです。octave自身に独自のグラフィックバックエンドがつくと思いますので、よくわかりません。まあ、Forgeでのこるのかな。

GotoBLASは単なるdllの置き換えでは無理だと思います。

Octave-ForgeのSVNにビルドスクリプトがアップされるはずですのでそれを使って自力でビルドが必要かと思います。

ところで
900番ゲットo(^-^)o

次板考えないと

色々あるけど、場所もここで、タイトルも安直に「データ解析ツールoctaveを語ろう その2」でいかがでしょうか?

901:octave for windows メモの筆者
09/05/03 09:09:42
>>900

>Forgeではのこるのかな


>ForgeだからJhandleはそのままのこるのかな?

です。m(_ _)m

902:名無しさん@お腹いっぱい。
09/05/07 16:52:01
print -deps test.eps でepsファイルができません。
何か設定必要ですか?
3.0.2です。


903:octave for windowsメモの筆者
09/05/08 08:52:20
>>902
書き方のミスだと思いますが
help print
Function File: print (FILENAME, OPTIONS)

なんで
print('test.eps', '-deps')
で作成確認。

904:gnuplotメモの筆者
09/05/21 19:33:49
Octave 3.0.5 mingw32 available がでました。

URLリンク(www.nabble.com)

ダウンロードサイトはここ。
URLリンク(sourceforge.net)


905:octave for windowsメモの筆者
09/05/21 19:35:41
>>904 ハンネ間違えた^^;


906:octave for windowsメモの筆者
09/05/26 07:55:41
3.2.0のrc2が出てます。

the Octave 3.2.0 RC2 tarballs are available at
URLリンク(artax.karlin.mff.cuni.cz)


907:octave for windowsメモの筆者
09/05/28 14:50:25
I have prepared corrected image-1.0.8 octave-forge package for users' convenience.

You can download at
URLリンク(www.tatsuromatsuoka.com)

.
image-1.0.8p.zip,201,596 bytes, 2009-05-28, md5 6f573210d2567799c06a838b4dad0380, corrected image-1.0.8 package for Octave 3.0.5 for Windows MinGW32 Installer. Please read the Readme.txt in the archive file to install.



908:octave for windowsメモの筆者
09/06/02 10:51:32
URLリンク(www.tatsuromatsuoka.com)
にビルドしたimage package for Octave 3.0.5 for Windows MinGW32を
おきました。

image-1.0.8_prebuild_oct_3.0.5_mgw.zip

です。

909:octave for windowsメモの筆者
09/06/08 13:47:24
こないだがでたばっかしですが,3.2.0がでました。

URLリンク(www.nabble.com)

かなりの仕様の変更があります。私が大きいと思ったのは疎行列については
Octaveでは,spluなどをspがついた関数をつかわないといけなかったの
ですが,引数が疎行列の場合,luは疎行列用のluを使うように
なったことです。

疎行列に対してspの冠のついた関数使うということがMATLABとの互換性との
問題で大きいところだったので,この点は大きな進歩だと思います。


ところで
>>900
>Michael版は、多分3.2からだと思います。
>多分当分出ません。

とかいたのですが,Michaelさんは,まだMinGWをそれほど本格的に触って
いないようです。したがって,3,2.0もBenjaminさんの
単独リリースとなりそうです。
したがって,jhandleは当分使えないと思います。

OpenGLのBackendはまだまだ試験段階で実用にはなっていません。
当分gnuplotがbackendの状態が続きそうです。


910:名無しさん@お腹いっぱい。
09/06/08 21:02:20
MSVC版の3.0.3だと、
Jhandleが入ってない状態では
wxWidgetsでグラフが描かれますね。

print('test.png','-dpng');

で、グラフの画像がちゃんと出力されます。
Jhandleだと手前にウインドウがあるとかぶっちゃうんですが
これだとちゃんとグラフだけが出力されてるようです。

あんまり話題にはなってませんが

911:octave for windowsメモの筆者
09/06/09 19:36:58
>>910
そうですね。画像書き出しのときはgnuplotをbackendに使ったほうがいいと
思います。

JHandleはMicahelさんが本格的にMinGW版にのりだすまでは出ないと思います。
有志が出てくれば別ですが。


912:octave for windowsメモの筆者
09/06/11 07:35:14
Octave 3.2.0 for Windows MinGW Installerがでました。

こないだ,3.0.5が出たばかりというところですが,すでにBenjamin
さんは,Development Branchで作業をされてようです。

URLリンク(sourceforge.net)

913:名無しさん@お腹いっぱい。
09/06/12 09:59:07
editコマンドで開くNotepad++は、
ユニコードを選べば
(ツールバーのFormat→Encode in UTF-8)
日本語には問題ないように思いますが、
何か支障ありますか。

914:octave for windowsメモの筆者
09/06/12 10:07:51
>>913
確かにそのようですね。実はあまり,Notepad++さわったことないんで^^;。
(SciTE派なもんで。)しかし,sjisはまだ使われる場面も多いので日本語を
使う場合は日本語版が使いやすいとは思います。

文章は修正しておきます。

915:octave for windowsメモの筆者
09/06/12 10:09:11
>>913 >>914
おっと例を言うのを忘れていました^^;。ご指摘ありがとうございます<m(__)m>

916:名無しさん@お腹いっぱい。
09/06/12 14:23:51
Windowsでは(たぶん)簡単に動かなかった時代に比べれば、
Mingw版Octave(3.0以降)はほぼ完成の域に達しましたね。

RでいうRjpWiki
URLリンク(www.okada.jp.org)
みたいなのができると、
使う人が一気に増えると思います。

このスレももう少しで終わりなので、
次はWikiとか作ってみませんか。
コンテンツのほうはなるだけ協力します。

917:octave for windowsメモの筆者
09/06/12 19:11:06
>>916 なるほど。しかし,Wikiの立ち上げに関する知識もないし,自分の
Yahoo Geocitiesのジオプラスで借りているWebスペースにおけるのかな?

Geocitiesにはわたしからきいて見ます。

有志ので自分のサーバー持ってる人とかいればいいんですが。

他の皆さんの意見も聞きつつ考えましょう。

ここはここでスレおわったら 「その2」 をたてておいておくのがいいと
おもいますが。



918:octave for windowsメモの筆者
09/06/12 19:50:54
>>916 >>917
なんか思い切り無知でした。
pukiwikiなんぞをつかうのかな?
ちと,知識不足は否めないので,検討します。(政治家のセリフだな^^;)

919:名無しさん@お腹いっぱい。
09/06/13 03:28:21
最近はWikiスペースを無料でレンタルできるサービスもいくつかあります。
atwikiなどが一般に使われているようです。

URLリンク(atwiki.jp)
URLリンク(wikiwiki.jp)
URLリンク(wiki.fc2.com)


920:名無しさん@お腹いっぱい。
09/06/13 10:08:03
livedoor wiki なんてのもあるね。

921:octave for windowsメモの筆者
09/06/15 09:24:44
>>919 >>920

ありがとうございます。いま,少し立て込んでますんで,今週中くらいには,何とか
立ち上げてみます。まあ,うまくいくかどうかはやってみないとわかりません
ので,立ち上げて様子をみたいと思います。

あとここはここで,前にもいいましたが「その2」を立ち上げるのがいいと
思います。


922:名無しさん@お腹いっぱい。
09/06/15 11:42:18
次はソフトウェア板にでも移動したら?

923:octave for windowsメモの筆者
09/06/15 12:21:01
>>922 それは,たしかにそうなのですが,>>834>>835>>836での>>835のような
意見もありますね。

まあ,リンクを貼ればどこでもいいかな。私は,正直どちらでもいいの
ですがでもどちらかにはしないと混乱しますよね。
まあ,意見分布を待つ。




924:octave for windowsメモの筆者
09/06/16 14:36:39
>>919
URLリンク(www40.atwiki.jp)
とにかく立ち上げてみました。まだ,何もありませんが
よろしくお願いします<m(__)m>。

いまは,IDがなくても書き込めますが,書き込み回数には制限を設けています。
できればIDを取得されて書き込まれることを期待します。
このあたりのことも議論できればいいですね。

925:名無しさん@お腹いっぱい。
09/06/19 00:12:19
>>924
wikiなんで気軽に編集できる形態を希望します。

とりあえずのコンテンツとして以下を希望してみる。
(時間あれば自分でやりたいけど)

Octaveのインストール
クイックリファレンス
Tips紹介
グラフィックス実例集
Octave-Forgeの紹介
掲示板
Q&A掲示板

926:名無しさん@お腹いっぱい。
09/06/19 08:38:20
>>925

反応ありがとうございます。

非ログイン書き込みは20回の連続制限なので,それくらいはあれば実用上
いいかなと思います。
非ログイン書き込みには文字認証があるのでスパムは出にくいと
おもいすが。念のため。

#掲示板か,どやって立ち上げるんだろう。Q&Aでも読むか。

927:名無しさん@お腹いっぱい。
09/06/22 09:42:23
>>925 コメント記入欄作成ありがとうございました<m(__)m>。


928:octave for windowsメモの筆者
09/06/23 12:16:19
Xoctave - Human interface to GNU Octave

929:octave for windowsメモの筆者
09/06/23 12:19:59
>>928 手が滑って書きかけであげてしまいました。スレッドが残り少ないのにすまぬ<m(__)m>

>>927は私です
ところで,こんなのあるそうです。
XだからWindowsの人には使えないです。Cygwinなら動くのかな?
Xoctave - Human interface to GNU Octave

URLリンク(www.nabble.com)

930:octave for windowsメモの筆者
09/06/29 08:00:43
3.2.1のRelease Candidateがでてます。速いペースですね。

URLリンク(www.nabble.com)

まあ,Release前にはテストをメンテナーがしていますが,やはり限界があり,
世にでると3.2.0の不具合が報告されています。

そのフィックスといえそうです。


931:octave for windows メモの筆者
09/07/02 19:35:09
cygwin版のocatave-3.2.0, octave-forge-20090607-2がリリースされました。
ただし,cygwin-1.7でのみのリリースなので
URLリンク(cygwin.com) の
Cygwin release 1.7 in BETA testing の new setup-1.7.exe から
setup-1.7.exeをdownload し,インストールしてください。
CategoryはMathを選んでください。
octaveだけ選ぶとgnuplotがインストールされないので,
gnuplotも忘れずにインストールしてください。
cygwin版のocatave-3.2.0をお使いで,gnuplotで2D のmouse zoomingを
使いたい方は,
URLリンク(www.tatsuromatsuoka.com)
のgp43-winbinX11-cygwin-1.7.zipをお使いください。


932:名無しさん@お腹いっぱい。
09/07/11 17:12:11
画像をimagescで表示した上にplotで点や直線を上書きしようとしても何も変化がないのですがどうしたらよいですか

933:octave for windowsメモの筆者
09/07/12 00:47:15
>>932
hold onを使いましょう。

octave:14> imagesc(A);
octave:15> hold on
octave:16> fplot (@(x) x, [0 300]);


934:名無しさん@お腹いっぱい。
09/07/12 00:50:18
hold onはもちろんしてます
けれど画像の上に点や線が表示されないんです

935:octave for windowsメモの筆者
09/07/12 06:01:19
>>934

MSVC octave 3.0.3とMinGW 3.0.5 にimageパッケージを組み込んだものでは上手くいくのですが。

OSやバージョンによるのかも。

私個人は、3.2.0は、バグが多いので使っていません。



936:octave for Windows メモの筆者
09/07/26 06:54:50
octave 3.2.2がリリースされました。まだ,ソースのみのリリースです。
3.2.0は,メジャーチェンジの最初のバージョンだったので,バグが多かったので今度ものでフィックスされているようです。
私は,MinGW上でビルドしました。まだ,あまりつかっていませんのでよくわかりませんが,多分バグはかなりフィックスされていると思います。


937:名無しさん@お腹いっぱい。
09/08/06 12:32:18
MuPadやMaximaのような数式処理ソフトを組み込んで使うことはできるでしょうか?
Octaveで関数の係数を計算してプロットで結果を確認したいんですけど、多項式なので展開が大変なんです

938:名無しさん@お腹いっぱい。
09/08/06 12:32:51
すみません。質問いいでしょうか。
普段Octaveは使わないんですが、諸事情でちょっと使わなくては
いけなくなって困っています。

もらったスクリプトの中に、こういう記述があって、↓
for h=1:length(salida)
tree.TerrainAnchor(h).Position.ATTRIBUTE.x=salida(h,1);
tree.TerrainAnchor(h).Position.ATTRIBUTE.y=salida(h,2);
tree.TerrainAnchor(h).Position.ATTRIBUTE.z=salida(h,3);
end
どうも「salida」のところでエラーになるようです。
これは、
・スクリプトの配布者が「salida.m」を同梱するのを忘れた。
・Octaveのインストールが失敗してる。
のどちらでしょうか?

939:名無しさん@お腹いっぱい。
09/08/06 17:55:11
salidaは変数

940:名無しさん@お腹いっぱい。
09/08/09 01:09:25
>>937
polyvalというのを使ってください

help polyval

で説明は出ますが

例えば、多項式 y = 3x^2 + 2x + 1 について、
x = 5, 7, 9 で計算する場合。

p = [3 2 1];
polyval(p,[5 7 9])

ans =

86 162 262


941:名無しさん@お腹いっぱい。
09/08/20 01:02:58
liboctaveについて質問なのですが
Matrix型などで各要素でlong double型を扱うことはできますか?

標準だとdouble型になってしまうのですが・・・
できればやり方も教えていただけるとうれしいです

942::octave for windowsメモの筆者
09/08/20 18:48:00
>>941
マニュアル見ると

A.1.2 Matrices and Arrays in Oct-Files

Matrix A double precision matrix class defined in dMatrix.h,

となってるんで無理じゃないですかね。

943::octave for windowsメモの筆者
09/08/20 19:03:02
>>941 >>942

私ではよく分からないので本家に上げときました。後は自分で追ってください。

URLリンク(www-old.cae.wisc.edu)

944::octave for windowsメモの筆者
09/08/21 07:50:46
>>943

David Batemannさんが答えてくれました。
URLリンク(www.nabble.com)

要約すると
Maxtixのclass自体をlong double化するのは容易ではあるが,
実際の計算をするBlasやLapackはdoubleなので自力でこれらを
long double対応版を作成したり,他にもいろいろな関数をlong double
に対応させる必要があるようでかなりの難しい作業になるとのことです。

945:octave for windowsメモの筆者
09/08/24 18:23:31
Octave 3.2.3のRC1がでました。
詳しくは以下を
URLリンク(www.nabble.com)
結構Changeset(パッチのこと)が出ているので3.2.2でもまだまだってとこです
かね。
3.2.xをstableと呼ぶには正直違和感があり,これはcurrentにすべきだと
いってますが聞いてもらえません^^;

946:名無しさん@お腹いっぱい。
09/09/07 15:41:55
stem(x,y,"o")
を実行しても、ポイントが○にならずにデフォルト(三角)
のままです。
どうしたら直るのでしょうか?

947:octave for windowsメモの筆者
09/09/08 16:23:37
マニュアル
The default color is "r" (red). The default line style is "-" and the default marker is
"o". The line style can be altered by the linespec argument in the same manner as
the plot command. For example
と書いてありますね。線のスタイルは変えられるようですがmarkerは変えられるとは
書いてないですね。
上で聞いてみましょうか?

948:octave for windowsメモの筆者
09/09/08 17:50:02
>>946, >>947
本家に上げてみました。
URLリンク(www.nabble.com)

949:octave for windowsメモの筆者
09/09/09 10:27:34
>>946 >>947 >>948
David Batemanさんが答えてくれました。

Try

h = stem(1:10, 'marker', 'x')
set (h, 'marker', 'o')

in octave 3.2.x ... This uses the stem series objects supported in
Octave 3.2.x and described in the section

Plotting -> Advanced Plotting -> Object Groups -> Stem Series

of the manual

だそうです

950:octave for windowsメモの筆者
09/09/09 10:36:20
>>949
その通りにやるとだめで,
x = 1:10;
y = ones (1, length (x))*2.*x;
h = stem(x,y);
set(h, 'marker','x');
set(h, 'marker','*');

で確認できました。


951:octave for windowsメモの筆者
09/09/10 09:28:55
>>950
Davidさんからと返事です
> Oppps, check the bugfix
>
> URLリンク(hg.tw-math.de)
>
> so the first syntax will be fixed in 3.2.3

I have confirmed on tbe 3.2.3rc-3.

上ののパッチはスクリプトファイルのものなので,patchコマンドをつかうか,
パッチをよく見てスクリプトを編集すればフックスできます。

952:octave for windowsメモの筆者
09/09/11 09:37:05
こんなん見つけました。

MATLAB Programming/Differences between Octave and MATLAB

URLリンク(en.wikibooks.org)





953:octave for windowsメモの筆者
09/09/21 17:54:07
Octave 3.2.3がリリースされました。 
今回かなりバグフィックスが進みました。 
URLリンク(www-old.cae.wisc.edu) をご覧ください。
まだ,ソースのみのリリースですので各バイナリが出るのは少し時間がかかると思います。 ソースからビルドする方には,3.2.3に乗り換えがお勧めといえます。

954:octave for windowsメモの筆者
09/10/04 07:07:47
>>953 Cygwin版の3.2.3がでました。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch