トップページ⇒linux
985コメント403KB

intel compiler for Linux

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/11/29 17:53ID:5k7yf0ai

intel 社の Web ページ
URL:<http://developer.intel.com/software/products/eval/>;
の、"Non-Commercial Unsupported Software(非商用、サポート無し)" から、
RedHat系Linux 6.2 または 7.1 に対応した IA-32 や IA-64向きの
最適化C++,Fortran9x用のコンパイラ(version 5.0.1) が無料で
ダウンロードできるようになっています。
(詳しいライセンス条件は、ダウンロード時に表示される文書を
参照してください。)

intel 自身が作ってますので、インテル系のCPUの資源を活用できる
実行ファイルが生成されるます。(AMD の Athlon も Pentium III と
みなしてコンパイルオプションを選べばMMX機能などを使うことが可能です。)

以下は、「無料永続版」を入手した後で、それを実際に使えるようにする
ための設定方法の記述です。
C++ と fortran9x を両方ともインストールする例を書いていますが、
どちらかだけしか必要ない場合は、片方を省略することができます。

例は RedHat6.2 系統向けになっていますが、7.x 向けの場合でも大体同様です。
(Web ページからダウンロードしてくるファイルが違うだけです。)

ダウンロードする際に入力したメールアドレスにインストール時に必要となる
ライセンスキー情報が送られてきます。
0133login:Penguin02/05/13 13:28ID:9l4vLaBH
僕はFreeBSDな人なんですが、rpm2cpioとかいうのを
使って展開していますね。
0134plamoユーザ02/05/13 18:05ID:c5nvN02Z
>>133
お蔭様で、あっさり動きました。快適です。
有難うございました。
0135 02/05/14 01:52ID:IZxJRGuk
Pentium4のマシンを買うならば、絶対にメモリーの種類が
RDRAMのものを買うべし、買うべし。
0136正直alphaの大メモリ機は高スギ02/05/14 04:21ID:XDFbjSgq
ややスレ違いですが、
xeonマシンだとメモリ8Gとか16G積んでる奴ありますよね。
32bitマシンだと2Gだか4Gだかにメモリの壁があるとどこかで聞いた
覚えがあるのですが、このメモリは単一の計算でめいっぱい使いきれる
のでしょうか?
普通に巨大計算できるのか、並列化しないとできないのかご存知の方
いらっしゃいません?

ちなみにifc6.0用のdebianパッケージがここに置いてありました。
http://www.gfd-dennou.org/arch/cc-env/ifc/
0137login:Penguin02/05/14 05:13ID:XO5C21R+
>>136
Pentium Pro以降のCPUにはPAEというアドレス変換機構がついて
いるので、64GBまでは扱えます。ただし、チップセットの制限に
引きずられますが。あと、変換のオーバヘッドがあるので、
パフォーマンスも悪化します。
Linuxでもこの機能はサポートされてます。

たぶん単一の計算でめいっぱい確保できるでしょう。
0138login:Penguin02/05/14 05:47ID:XDFbjSgq
パフォーマンスの低下がどの程度か気になりますが、大規模計算は
できるのですね。参考になりました。
0139login:Penguin02/05/14 06:10ID:XO5C21R+
しかし、この手の使い方なら実績あるSolaris8とかが良いかと思われ
0140login:Penguin02/05/15 05:38ID:gSF91Ka8
>>137,138
大規模計算をやっている人ならばFortranな人が多いと思います。
sizeof(integer)=8 でないと困るように思いますが、ifcはPentium4
SSE2で64bit integer扱えるはずですが、-tpp7でも
でもそういうコードは吐かなかったです。僕が間違えた可能性は
高いですが。
AMDのx64や、Intel も IA-64 以外にもPentiumの64bit
拡張を考えているようですね。
ではでは。
0141login:Penguin02/05/16 05:17ID:GYM8ysqy
5.0まではAMDのAthlonThunderbirdでFortranコンパイラがちゃんと
作動しましたが、どうやら6.0からは、Athlon上のLinuxでは
コンパイラが動きません。セグメントエラーなどが起きる。
0142login:Penguin02/05/16 06:41ID:5yZwyBjV
マジデスカ?
0143login:Penguin02/05/19 22:26ID:TA85Te6I
>>141
おかしいなと思っていたら、本日マシンはお亡くなりになって
しまいました。M.B.か、CPUがいかれていて、BIOS画面すら起動
しなくなってしまった。
0144login:Penguin02/05/23 01:52ID:MUEwqJ2X
icc 6.0試してみました。Pentium4上でgccとの最も大きな違いはmath関数
にあるようです。expやsin,cosはgccの10倍以上の速度でした。

しかし、ベクトル化はコンパイラの条件が厳しくてほとんどされないし、
されても加速は2倍行かないですね。やっぱり、ベクトル型スパコンとは
違うんだと思いました。


0145 02/05/24 02:38ID:8A5lq9k5
Pentium4用にはどんなコンパイルオプションを使えばもっとも速い
コードがでますかね。
0146login:Penguin02/05/25 19:50ID:7ZkaIBTb
>>144
にわかには信じられん。exp, sin, cos は数値演算プロセッサに渡している
だけだと考えられる。gcc側はへんなライブラリをかませているのか?
0147 02/05/26 02:34ID:7Wq7WMOb
組み込み関数としてインライン展開されたり、MMX命令の類をつかって
いたりするのかもね。パイプライン化に最適なコードを出しているのが
効くのかも。インテルのMATHライブラリーはすごく最適化していると
思う。
0148login:Penguin02/05/26 06:59ID:yJVR8li1
>>147
なるほど!
0149login:Penguin02/05/26 10:25ID:yJVR8li1
>>146
やっぱりよーわからん。多分インライン展開はgccでもやっとると思うが。
あー頭イテ。
0150login:Penguin02/05/26 10:28ID:4fUXbWUZ
>>146
コプロの命令は死ぬ程おそいんだYO
0151名無しさん@お腹いっぱい。02/05/26 11:49ID:ALTTjrt3
つーか、誰か-Sで調べてくれよ。
0152login:Penguin02/05/26 14:04ID:kDtJ2VZ7
>>119
> (途中でKTERMの画面の標示の白黒反転が狂うのが欝。)
Vineのftpに解決法が載っていたような。moreがどうとか…
rxvtとかではならんらしいです。
0153名無しさん@お腹いっぱい。02/05/26 19:53ID:ALTTjrt3
激しくスレ違いだけど、>>119の報告に応えると言うことで、

file:///usr/share/doc/xterm/xterm.faq.html#xterm_hiliteより、

Reverse video is not reset

When running less or other programs that do highlighting, you see the
highlighting not turned off properly.

This may be due to incompatible terminal descriptions for xterm. With XFree86
3.2, I modified the terminal description for XFree86 xterm to use the VT220
(aka ISO 6429) controls that allow an application to turn off highlighting (or
bold, underline) without modifying the other attributes. The X Consortium xterm
does not recognize these controls.

If, for example, you are running an older xterm and rlogin to a system where
the newer xterm has been installed, you will have this problem, because both
programs default to $TERM set to xterm. The solution for mixed systems is to
install the newer terminal description as as a different name (e.g.,
xterm-color) and set the termName resource accordingly in the app-defaults file
for the system which has the newer xterm.

続きに、「What $TERM should I use?」つーのがあって、
xtermの場合、xterm-xfree86ってのを使えってさ。
0154login:Penguin02/05/27 17:17ID:W/KwZtKC
>>151
やってみたところで結果が理解できない自分を発見しますた
0155login:Penguin02/05/27 22:12ID:UHJ+0bj9
とりあえずちびっとだけやってみた。

#include <stdio.h>
#include <math.h>

main()
{
printf("%d\n",sin(3.14));
}
gcc-2.95.3だったら(FreeBSDだけど)、
main:
pushl %ebp
movl %esp,%ebp
subl $8,%esp
addl $-4,%esp
addl $-8,%esp
pushl .LC2+4
pushl .LC2
call sin
subl $8,%esp
fstpl (%esp)
pushl $.LC1
call printf
leave
ret
こんなコードを出しよる。
icc だと、
main:
.B1.1: # Preds .B1.0
pushl %ebp #5.1
movl %esp, %ebp #5.1
subl $3, %esp #5.1
andl $-8, %esp #5.1
addl $4, %esp #5.1
subl $16, %esp #5.1
fldl _2il0floatpacket.1 #6.17
fsin #6.17
movl $__STRING.0, (%esp) #6.17
fstpl 4(%esp) #6.17
call printf #6.17
# LOE ebx esi edi
.B1.2: # Preds .B1.1
xorl %eax, %eax #7.1
addl $16, %esp #7.1
movl %ebp, %esp #7.1
popl %ebp #7.1
ret #7.1
.align 4,0x90
そのままコプロをよびだすようなコードやね。
gcc はライブラリをはさむな。実際ライブラリのソースを
見るともうちょっと処理をしている。10倍はわからんが、
差はでるやろうな。
0156login:Penguin02/05/27 22:13ID:UHJ+0bj9
しかし、printf("%d\n",sin(3.14));
って笑うコードだな。すまん。間違えた。
0157login:Penguin02/05/28 00:02ID:I7J1z0a7
なんか、おもしろそうなことやってるね。

>>155
うちの環境は、Linux + glibc2.1 + gcc2.95.2。
/usr/include/math.hを追っていくと、/usr/include/bits/mathinline.hってのがある。
んで、どーも/usr/include/feature.hが-Oオプションを監視していて、
つけてると、リンク時にインライン展開してくれるみたいなんだなー。
で、-ffast-mathすると、nmの出力からsinが消える。

~/test$ gcc -O m.c -lm
~/test$ nm -a a.out |grep sin
08048420 T __sin
08048420 W sin
~/test$ gcc -O2 -ffast-math m.c -lm
~/test$ nm -a a.out |grep sin

憶測だけど、--fast-mathを指定しないと、全ての関数をとりあえず
wrapしてしまって、インラインアセンブラコードまでは展開されないって
可能性はないかな?

例の数倍の差が出たって人、-ffast-math使って追試きぼーん。
0158名無しさん@お腹いっぱい。02/05/28 01:10ID:fjbf3+Jg
iccってdebugger付いてるの? -g付けても、inline展開かね?
015914402/05/28 02:05ID:MAw0QlwZ
#icc -O3 -xW -tpp7 test.c
#time a.out
2.600u 0.030s 0:02.63 100.0% 0+0k 0+0io 145pf+0w
#gcc -O3 -ffast-math test.c
#time a.out
9.650u 0.020s 0:09.68 99.8% 0+0k 0+0io 86pf+0w
#gcc -O3 test.c -lm
#time a.out
11.210u 0.020s 0:11.25 99.8% 0+0k 0+0io 97pf+0w
#gcc --version
2.95.2

10倍は気のせいだったのか、再現できませんでした。すいません。
-ffast-mathなしで4.3倍、-ffast-mathからは3.7倍です。
test.cではsinを10^8回計算してます。

>>158
debuggerはldbです。
0160login:Penguin02/05/28 02:19ID:bUBmd7+C
>>159=144
結果さんきう。
まだ3,7倍かぁ。

> test.cではsinを10^8回計算してます。
じゃ、-funroll-loopsと-frerun-cse-after-loopもきぼーんぬ

ところで、-m686とか使っても変化なし?って
> #gcc --version
>2.95.2
かぁ。これってpentiumへの最適化もされないよね、たしか?


0161login:Penguin02/05/28 02:23ID:bUBmd7+C
>>159
できれば、テストしたソースもきぼーんぬ。
0162login:Penguin02/05/28 08:44ID:t5QZ3SAT
うげー、Linux(RH7.2)とFreeBSD では挙動が違うよー。
-ffast-math すると確かにLinuxでは
main:
fldl .LC33
pushl %ebp
movl %esp,%ebp
subl $8,%esp
addl $-4,%esp
#APP
fsin
#NO_APP
subl $8,%esp
fstpl (%esp)
pushl $.LC34
call printf
movl %ebp,%esp
popl %ebp
ret
となって実際にfsinを直接呼ぶね。
FreeBSDで同様の事(-ffast-math)をしても、call sin は取れなかった。
うげーーー。
#APP ってなんだろ。
#NO_APP
0163 02/05/28 08:59ID:w0d6+dv2
ほう、FreeBSDでiccとかifcがつかえるのですか。
どうやってインストールすればよいのか、詳細希望します。
できれば最新の4.5Rで。
0164名無しさん@お腹いっぱい。02/05/28 10:16ID:fjbf3+Jg
>>162
> #APP ってなんだろ。
> #NO_APP

Assembler PreProcessor.

asm文使うと挿入されます。
#NO_APP
asm文のコード
#APP
逆だから、optimize optionやdebug optionや付けるlibraryで、
fsinの実体が変わったりするのかね。
0165login:Penguin02/05/28 14:55ID:aPvGsWSr
>>163
ちっとむつかしい。あんまりおすすめしない。
icc はlinux_base-7を入れなければならないが、
FreeBSD ネイティブバイナリを生成する。すばらしい!!
C++はコンパイルできないみたい?
ifc はまだsend-prしたばかり。FreeBSDネイティブバイナリ
作成はむつかしいと思う。
4.5-Rだと入らない。icc は 5.0 なので、もう手に入らない。
ports を cvsup すれば入る。
わからなかったら 4.6-Release まで待つべし。
そこまで解説する情熱がもてない。すまん。
>>162
ありがとうございました。
さっきfreebsd-users で
話してたのですが、FreeBSD(4.6-RC, gcc-2.95.3 buildin)
でも
-O -ffast-math -mfancy-math-387
ってやれば、fsin を出していることがわかりました。
0166login:Penguin02/05/28 22:52ID:lr8zx0zz
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68750
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68752
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68753
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68755
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68758
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68759
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68766
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68770
016714402/05/29 08:15ID:aVv8ARHZ
>>161
#include <math.h>
#define N 1000*1000
main()
{
int i, j;
double *a = (double*)malloc (sizeof(double) * N);
double *c = (double*)malloc (sizeof(double) * N);
for (i = 0; i < N; i++)
a[i] = 1.0 * i;
for (j = 0; j < 100; j++)
for (i = 0; i < N; i++)
c[i] = sin(a[i]);
}

-mpentiumpro -funroll-loops -frerun-cse-after-loop効果なしです。
~
0168login:Penguin02/05/29 11:33ID:D7OquwsK
>>167
多分、インテルコンパイラは、外側のループ無くなってるな...
0169login:Penguin02/05/29 11:36ID:D7OquwsK
それとも、キャッシュがヒットするようにうまいことやってるのだろうか...
0170login:Penguin02/05/29 14:30ID:gGpH3Xsz
167のプログラムで、sinでなくてexpだと、gcc -O3に対して約14倍、gcc -O3 -ffast-math
に対して約9倍となりました。ただし、expだとoverflowするので、a[i]=1.0/(i+1)としています。
gccのexpはあまり最適化されていないようです。

>>168
>>169
繰り返し数に対しても配列の大きさに対しても、計算時間は線形に増加します。
また、ループの中外を入れ替えても結果は変わりません。
0171login:Penguin02/05/30 11:27ID:Q1DeRRtz
>>170
ほんとかなと思ってためしてみました。
malloc をよばないようにして。
#include <math.h>
#define N 1000*1000
main()
{
double a[N];
double c[N];
int i, j;

for (i = 0; i < N; i++)
a[i] = 1.0 * i;
for (j = 0; j < 100; j++)
for (i = 0; i < N; i++)
c[i] = sin(a[i]);
}
当方Celeron800ですが、
icc -O3 -tpp6 -xiMK -S test1.c
でこんぱいるすると、fsinが一つも入っていないぞ!
つーか、コードを見ると最後の二重ループはまわってさえいない。

gcc -mpentiumpro -O3 -ffast-math -mfancy-math-387 test1.c
でのコードは素直だ。ちゃんと fsin を使っているし、普通に
アセンブラに出力されている。
つーわけで、参考にならん。
まぁそりゃそうだ。というのもこのコードを最適化すると出力が
全くないから
#include<stdio.h>
main(){}
と等価だもんな...
0172login:Penguin02/05/30 11:32ID:Q1DeRRtz
つーわけで、コードを変えてみた。
#include <stdio.h>
#include <math.h>
#define N 1000*1000
main()
{
double a[N];
double ans;
int i, j;

for (i = 0; i < N; i++)
a[i] = 1.0 * i;
for (j = 0; j < 100; j++)
for (i = 0; i < N; i++)
ans = +sin(a[i]);
printf ("%lf\n",ans);
}

% icc -O3 -tpp6 -xiMK test1.c
% time ./a.out
-0.977352
14.926u 0.007s 0:15.41 96.8% 5+10175k 0+0io 0pf+0w
% gcc -mpentiumpro -O3 -ffast-math -mfancy-math-387 test1.c
% time ./a.out
-0.977352
15.089u 0.007s 0:15.15 99.5% 5+10193k 0+0io 0pf+0w
%
というわけで、誤差範囲。
もっと本質的なコードが必要だな...
0173login:Penguin02/05/30 11:42ID:Q1DeRRtz
おもしろい結果が出た。
% gcc -mpentiumpro -O3 -ffast-math -mfancy-math-387 test1.c
% time ./a.out
-0.977352
15.095u 0.007s 0:15.15 99.6% 5+10187k 0+0io 0pf+0w
% gcc -funroll-loops -mpentiumpro -O3 -ffast-math -mfancy-math-387 test1.c
% time ./a.out
-0.977352
2.355u 0.023s 0:02.39 99.1% 5+10184k 0+0io 0pf+0w
ま、こだわってもしゃあないな...
アセンブラのソースを見ると、二つ目のループは
unroll されてない。つーことは律速は 1コ目のループか。
でも、icc に勝ったぜ!
(またミスった。ans を初期化していないや。すまん)
0174login:Penguin02/05/30 11:47ID:Q1DeRRtz
172, 173 と
あまり意味無いことを書きました。ごめんなさい。
朝飯ぬいたので血糖値が低いみたいです。
#include <stdio.h>
#include <math.h>
#define N 1000*1000
main()
{
double a[N];
double ans;
int i, j;
ans=0.0;

for (i = 0; i < N; i++)
a[i] = 1.0 * i;
for (j = 0; j < 100; j++)
for (i = 0; i < N; i++)
ans = ans + sin(a[i]);
printf ("%lf\n",ans);
}
で試した。
% icc -O3 -tpp6 -xiMK test1.c
% time ./a.out
23.288398
15.070u 0.015s 0:15.95 94.5% 5+10209k 0+0io 0pf+0w
% gcc -funroll-loops -mpentiumpro -O3 -ffast-math -mfancy-math-387 test1.c
% time ./a.out
23.288398
14.811u 0.000s 0:14.98 98.8% 5+10197k 0+0io 0pf+0w
% gcc -mpentiumpro -O3 -ffast-math -mfancy-math-387 test1.c
% time ./a.out
23.288398
15.067u 0.000s 0:15.16 99.3% 5+10180k 0+0io 0pf+0w
0175login:Penguin02/05/30 11:53ID:Q1DeRRtz
上のgccは2.95.3(FreeBSD)です。
まあそんなに変わらないでしょう。
icc は 二重ループをunrollしなかった。gcc は -funroll-loops
を付けると二重ループも一部unrollする。
やはりもう少し本質的な例が必要だと思う。
0176login:Penguin02/05/30 12:04ID:Q1DeRRtz
>>170
なぜ線形に変化しているかと言うと、icc では 君のプログラムの場合
一つ目のループしかまわらないようなコードを出力し、
そして二つ目の(二重ループ)は消えるのだ。ということで
一つ目のループはまじめに実行するから線形に変化するのである。
僕が試した場合はexpでも同じ結果だった。つまりexpは計算されていない。
僕がprintfをはさんだのはそういう理由による。
また、僕のans = +sin(a[i]); はダメだ。かしこいオプティマイザ
だと最後の値だけ計算して終りだろう。
0177login:Penguin02/05/30 14:18ID:EoS08NAY
>>175
> やはりもう少し本質的な例が必要だと思う。

総合的な評価と、個々の部分の振る舞いの究明をわけて考える必要があるが、
後者の方が計算時間餓鬼には有益だと思うから、今の流れでいいんと違う?
0178login:Penguin02/05/31 09:33ID:a8/cq5U3
>なぜ線形に変化しているかと言うと、icc では 君のプログラムの場合
>一つ目のループしかまわらないようなコードを出力し、
>そして二つ目の(二重ループ)は消えるのだ。

私も、気になっていたから、ループ数と時間の関係を調べたけど、
内ループ数にも外ループ数にも計算時間は比例したけど?あと、
2つ目のループが回らないのなら、sinとexpで時間が変わるか?
言ってる事の意味が良くわかりません。

iccのmathが速いのは、SIMDバージョンのsin,exp等のためです。
従って、-axW -xWでかつP4上でないとgccと大きな差はでません。
0179login:Penguin02/05/31 17:04ID:25Um11/K
>>178
うーーーむ。なんと言ったらいいのかなぁ。
アセンブラの出力は読んだかな?
気になったから君のコードをコピペして、コンパイルして、
アセンブラの出力を読んでみたんだよ。
そうしたら iccの場合、fsin って行が消えてたよ。
つまり計算していないんだな。gccはまともに計算してたヨ。

あとね、君のコードだとね、賢いコンパイラの場合、最悪空の
コードをはくわけ。これではコンパイラの性能を見ているとは言えないよね。
だから君のベンチでは結論出ないわけ。だから僕はやり直したんだよ。

僕は-tpp6な環境なので実行はできんです。それといまちょっと
システム入れ替え中なんで試せないんだ。ごめんね。
よかったら -tpp7の場合 のソースの
出力良かったら見せてね(icc -xW -tpp7 -S test.cで test.s が出来る)。

SIMDの出力も見たいし。
10倍かぁ...それは魅力あるよ。
昔ね、integer*8 のコードを書いてtpp7オプションでコンパイル
してもどうしてもSSE2のコードが出なかったんだ。君の結果が
手がかりになるかもしれない。良かったら教えてちょうだい。
0180login:Penguin02/05/31 17:19ID:Ki/fe8PF
> やはりもう少し本質的な例が必要だと思う。
gccでもiccでもループが省略されていないことを確認しての比較だから
十分本質的だと思うけど?

>そして二つ目の(二重ループ)は消えるのだ。
配列がスタックのローカル変数ならループ省略の最適化も可能です。
あなたが、わざわざループが消えるように書き換えたということになります。
0181login:Penguin02/05/31 17:46ID:25Um11/K
>>177
そんな気がしてきた。
0182login:Penguin02/05/31 17:51ID:25Um11/K
>>180
アセンブラの出力を比較するってのはダメ?
0183login:Penguin02/06/01 01:37ID:d+BKIyIY
174のコードでも、167のコードでも-xWでないiccでgccと
ほとんど変わらず、-xWのiccで3〜5倍というところです。
結論は、やはりSIMD版のexp,sin等は数倍速いということ
でしょう。なお、tpp7とtpp6はほとんど違いがありませんでした。
アセンブラは私には解読不能ですので、見たことがありません。
0184login:Penguin02/06/01 02:42ID:LtyCCzWp
>>>180
>アセンブラの出力を比較するってのはダメ?
ELF直読み?できるのか...すげぇ。

0185login:Penguin02/06/01 06:53ID:4apHK27I
>>183
テストしてくれてありがとう!!
やっぱりSIMDが有効ってことか。
ま、アセンブラって
icc -xW -tpp7 -S test.c
で、test.s ができるしさ。
一度見てみて。ほんま、違いが一目瞭然というか。
そんな難しくないで。

>>184
ちゃうって...
icc -xW -tpp7 -S test.c
で
test.sってアセンブラの出力が出来るねん。
どんなインストラクションが出されてるかわかるねん。
gccでも一緒。-S で出る。

今な、FreeBSD 5-current に移行しようとしてて、失敗
しとる。幾つかのコンパイルが通らんかった。もうあきらめる。

gcc-3.1ってSSEとかに対応しているらしいし、5-current の
デフォルトのコンパイラがgcc-3.1やねんな...これも価値アリやろ。
でも時間かかりそうやし、ま、別口で試すわ。
0186名無しさん@お腹いっぱい。02/06/01 10:03ID:YzmT9tKS
>>185
> test.sってアセンブラの出力が出来るねん。

それは「アセンブラ」の「入力」である「アセンブリ言語」のファイル、
って揚げ足取りをしていると思われ
0187login:Penguin02/06/01 13:51ID:Qx7cQIyD
>>186
objdumpをつかえばアセンブラの出力も難なく比較できる。
0188login:Penguin02/06/01 17:48ID:4apHK27I
>>186
確かにそうだな。しもた。ま、でも解るでしょ? いや
わかって下さいー。今夜にはチェックしますわ。
>>187
おお、ありがとうございます!! 知らなかった。
0189login:Penguin02/06/01 23:33ID:4apHK27I
たしかに -xW オプションで SIMD 命令を出力して、
劇的に速くなった。
23.288398
12.872u 0.023s 0:12.93 99.6% 5+10151k 0+0io 0pf+0w
23.288398
12.593u 0.007s 0:12.63 99.6% 5+10172k 0+0io 0pf+0w
23.288398
3.383u 0.023s 0:03.41 99.7% 20+10135k 0+0io 0pf+0w

上からgcc, icc, icc(with -xW)
すごすぎです。
icc(-xW) のsinの計算、FPU 使ってないんだな。
call vmldSin2
か。何のためにFPUついてるんだろ。

0190login:Penguin02/06/03 00:58ID:LXg220aY
もしかして、64bitの精度が得られたらいい、という前提で
相当はしょった計算をしてるのかもしれない。
fsinの消費クロックって高そうだし。
まぁでもSSE2ならば64bitの浮動小数点演算
二つ同時なので二倍速くなると考えるのがマシなんだけどな。
さらに高速ってことから考えるとfsinはビタ一動いてないか。
それならfsinを使わないライブラリをインラインで埋め込む
方がパフォーマンス的にはpentiumIIIでも得になるはず。
わざとライブラリに飛ばしているってやっぱ覗かれたくないのかな?

ちっ、こんなこと深く考えるよりアルゴリズムを練ったほうが楽しいな。
0191login:Penguin02/06/05 21:08ID:DrdXg7fC
あげー
0192login:Penguin02/06/06 01:07ID:W2BBcMds
-wp_ipo オプションはどうですか。
0193 02/06/10 09:52ID:CLFuMcCW
Pentium4と同じバスを持ったセレロンで、Pentium4用のコンパイラは
正しいコードをはくだろうか? キャッシュがPentium4の半分しか
ないのに、それを反映しないコードを出していたら、性能が出せない
ことになりかねないが、そこは大丈夫かな。
0194名無しさん@Emacs02/06/10 21:00ID:kJeoZmX6
CPU : Pentium III,800MHz

問題: 姫野ベンチ
http://w3cic.riken.go.jp/HPC/HimenoBMT/
Fortran77、サイズS

結果:
FC Options MFLOPS
--
ifc -O0 58.5
ifc -O2 127.7
ifc -O3 127.3
ifc -O3 -tpp6 121.9
ifc -O3 -tpp6 -xi 123.5
ifc -O3 -tpp6 -xiM 124.4
ifc -O3 -tpp6 -xiMK 158.7
g77 -O0 42.2
g77 -O2 85.3
g77 -O3 85.2
g77 -O3 -funroll-loops 82.7
g77 -O3 -funroll-loops -ffast-math 83.0
g77 -O3 -march=i686 85.3
g77 -O3 -march=i686 -funroll-loops 86.4
g77 -O3 -march=i686 -funroll-loops -ffast-math 86.3
0195名無しさん@Emacs02/06/10 21:05ID:kJeoZmX6
Cバージョン

結果:
CC Options MFLOPS
--
icc -O0 63.2
icc -O2 154.1
icc -O3 154.2
icc -O3 -tpp6 154.0
icc -O3 -tpp6 -xi 153.9
icc -O3 -tpp6 -xiM 151.6
icc -O3 -tpp6 -xiMK 152.2
gcc -O0 43.8
gcc -O2 141.4
gcc -O3 142.5
gcc -O3 -funroll-loops 147.2
gcc -O3 -funroll-loops -ffast-math 147.1
gcc -O3 -march=i686 139.0
gcc -O3 -march=i686 -funroll-loops 143.4
gcc -O3 -march=i686 -funroll-loops -ffast-math 143.5

Cだとgccとあまり変らん……
0196login:Penguin02/06/11 00:21ID:/rWc+478
出来ればgccのバージョンも教えていただけませんか?
0197login:Penguin02/06/11 01:21ID:hFHia3qT
P4 2.2GHz C, SMALL, static gcc 2.96
gcc -DSMALL -O3 -funroll-loops 391
icc -DSMALL -O3 -tpp6 -xiMK 604
icc -DSMALL -O3 -tpp7 -xiMKW 493

という結果になりました。P4命令ありにすると遅くなります。
単精度浮動小数点の計算では、P4命令は有効でないようです。
ただし、P4はP3命令の実行が速いと思われます。

floatからdoubleにすると、P4最適化の方が5%ほど速くなりました。
doubleの計算はP4命令ありにしないとベクトル化されないことが
効いてきます。

結局、
数学関数多用 - P4最適化
単精度 - P3最適化
倍精度 - P4最適化
というガイドラインができるかもしれませんが、20%も結果が変わるんでは、
P3最適化とP4最適化、常に両方試して見る価値がありそうです。
019819502/06/11 03:41ID:J030uHjr
>>196 すんません,gcc version 2.96です.
>>197 P4欲しい…
0199login:Penguin02/06/11 04:11ID:2NczXlos
gcc 3.1 だと、ものによってはかなり速くなるよ。
0200login:Penguin02/06/11 07:59ID:/rWc+478
>>197
両方試さねばならないというのはきついですよね。
なんか上手い方法ないでしょうか...
SSE2が遅いというのは意外です。doubleで二個同時演算まで
ですよね。
>>199
gcc-3.1ってMMX,SSE,3DNow!最適化もあるんですよね。
http://gcc.gnu.org/gcc-3.1/changes.html
の、
New Targets and Target Specific Improvements
を見るといろいろ書いてあります。
SSE2は次のメジャーリリースからだそうです。
0201名無しさん@Emacs02/06/11 13:34ID:wCcZynJr
評価版使いたいんですが、昨晩webで登録したのにメール
来ません。結構時間かかるものなのでしょうか?
まさか手作業でやってるとは思えないのですが。
0202login:Penguin02/06/12 01:12ID:VazL4LZH
>>201
メールアドレス間違えてないですか?瞬時に来ましたよ。
0203くっそー02/06/12 22:12ID:zpuPhe3W
俺もメールこないよ。2回やったけどどっちのアドレスにも
メールがこない・・・
どうなっとんジャーーーーいんてるさんよーーーー
0204くっそー02/06/12 22:50ID:zpuPhe3W
どうやら、30日評価版でしかメール送ってこないみたい
ノンサポートのフリーバージョンはメールがこないみたいですね
要は買えということでしょうか。
0205login:Penguin02/06/13 02:29ID:0GiZBNFg
んなこたぁない
0206くっそー02/06/13 02:43ID:/xEHZNiO
あるよ。100番台のレスでもそう書いてあった
0207login:Penguin02/06/13 06:22ID:2LgBVGRx
>>204
僕もこんなメッセージが。フリーバージョンを入手したつもり
だったのですが。
(icc 6)
NOTICE: Your license to CComp expires tonight at midnight.

License file(s) used were (in this order):
1. /usr/local/intel/licenses/l_cpp_25250653.lic

Please visit http://premier.intel.com to obtain license renewal information.

iccbin: Command line error: no files specified; for help type "iccbin -help"
0208login:Penguin02/06/13 06:29ID:8B+0OnYN
俺の所に来たメール全文。

Dear XXXXXX,

Thank you for evaluating Intel(R) C++ Compiler for Linux*. For future reference, your serial number for this product evaluation is XXXX-XXXXXXXX.

1. If you haven't done so already, download and save the product from <URL>.
2. Untar the product in the directory of your choice. After doing so, you will see
the installation script "install" in that directory.
3. Ensure you have root permission and execute the installation script "./install".
The installation script will prompt you for the top-level directory for installation.
The default installation path is "/opt/intel".
4. Install the attached license file by copying it to the following location:
<installation path>/licenses
i.e. "/opt/intel/licenses"
5. If you haven't registered for Intel(R) Premier Support, you can do this at any time by
visiting <http://www.intel.com/software/products/registrationcenter/index.htm>;.
Note that you will be prompted for the serial number (shown above) and the date of
purchase (enter today's date).

If you have any questions, please send them to [email protected].

で、l_cpp_XXXXXXXX.licってファイルが添付されてる。
0209名無しさん@Emacs02/06/13 14:27ID:YSZ6uR7a
メールアドレスやマシンを変えて何回かやりましたが
依然としてメールきません。直でメールしてみようか
な、英語書くの苦手ですが。
0210login:Penguin02/06/13 17:33ID:m5d8ZDQ2
きました
0211login:Penguin02/06/13 17:39ID:l/3jF7oD
近代的巨大企業イソテルとしても、やはり半導体不況なので
使えない中年はリストラ候補室へ送還されるわけです。
若い社員にパソコンが使えなくて馬鹿にされた中年が、
一日中書類を書いてシュレッダーへGo!という仕事をやっていたり、
一本指タッチでユーザから来たメールにOEで返事を書くという仕事
をやっていたりするわけです。
そんな中年の都合でメールの返信にはラグがあるのです。
0212login:Penguin02/06/13 20:55ID:/xEHZNiO
とりあえず、30日版とフリーでは送信主のアドレスが
違ってたからサーバーの設定ミスか込んでたかどっちかでしょうな
0213login:Penguin02/06/14 07:58ID:VA/sHuIR
>>209
expire されたということだったので、再申込してみましたが、
僕の環境でもメールが来ませんでした。
0214名無しさん@Emacs02/06/14 14:49ID:38CVxCjW
リストラ中年でもなんでもいいですからお返事欲しいです。
LAPACKやBLASまで無料ということで楽しみにしてるんですが。
0215login:Penguin02/06/14 15:49ID:4CsOaoRm
>>214
ん? その辺の話ってどこに出てるの?
0216名無しさん@Emacs02/06/14 19:22ID:38CVxCjW
>>215
LAPACKのことでしたら、インテル数値計算ライブラリに
含まれてるそうです。
http://www.intel.co.jp/jp/developer/software/products/mkl/mklfeatures_new.htm
これも、お返事来ないのですが、、
0217login:Penguin02/06/15 01:04ID:jVtzzXww
SuSE8.0にifc6.0をインストールしてたけれど、
setenv FORT7 output.dat
てなかんじでファイルの自動オープンができない。なぜか、そんなファイルはないと怒られる。
こんな経験がある人います?
0218 02/06/15 13:24ID:CnbGLDKn
217>>
シェルは何をお使いで?
BSHELLあるいはBASHなら
#FORT7=output.dat; export FORT7
だろうけど。ところで、FORT7っていう名前が、
機番7のファイル名のマクロ名になるの?
0219login:Penguin02/06/15 16:00ID:jVtzzXww
>>218
tcshです。
docによると、Linux版の場合FORTnでn番をオープンすると書いてあるんだけど。
ためしにFreeBSDのLinuxエミュレーションで動かしたifcはきちんと開けるんで、端末の設定が悪いのかな?
0220 02/06/16 00:39ID:Kudjb0GB
FORTnで指定されているファイルのパーミッションが適切かどうか
調べるべし。またまだファイルがなくて作るはずであるときには、
ファイルを作るべきディレクトリーのパーミッションが適切か
どうかも関係するだろう。
0221login:Penguin02/06/16 13:56ID:KsvPx+Rr
ldconfigすると、
ldconfig: File /opt/intel/compiler60/ia32/lib/libcprts.so is too small, not checked.
ldconfig: File /opt/intel/compiler60/ia32/lib/libcxa.so is too small, not checked.
ldconfig: File /opt/intel/compiler60/ia32/lib/libunwind.so is too small, not checked.
って出るんですけど問題は無いんですか?
0222 02/06/16 18:28ID:Kudjb0GB
問題なし。
#
インストールがすんだら、メールに
入っていたライセンスファイルを切り取ってコピーして、
/etc/ld.so.conf にライブラリのパスを書き加えて ldconf し、
/etc/profile に コンパイラのバイナリコマンドへのパスを加え、
/etc/man.config にオンラインマニュアルのパスを追加すれば
できあがり。
0223login:Penguin02/06/17 17:16ID:FMDFl0W+
今朝 Intel C Compiler の登録をやってみたらすぐメールが来た。
0224login:Penguin02/06/17 19:18ID:d4w8sZKk
>>223
たぶん、リストラさやたおやじが増員されたと思われ。
0225login:Penguin02/06/17 22:49ID:SbfYKQK5
>>224
つまらなすぎ。
0226名無しさん@Emacs02/06/17 22:52ID:lh1rtOj0
もう一度やってみるか
0227login:Penguin02/06/21 18:35ID:ES86Qcyi
f90のモジュールの定義を探しにいって見つからないとifcコンパイラが
叫ぶのだが、どうやってそのありかを教えてやればよいのだろうか?

0228名無しさん@カラアゲうまうま02/06/21 23:21ID:Rojv+xOM
>>227
エラーメッセージをかってに俺訳しないでください。
0229-tpp702/06/24 09:17ID:s4Hr+GO8
Linux version 2.2.19 (root@c-server) (gcc version 2.95.2 20000220 (Debian GNU/Linux)) #4 SMP
CPU0: AMD Athlon(TM) XP 1800+ stepping 02

な環境において、 cc010817rh62.tar から入れた icc(フリー版) で
-tpp7 オプション付けたいのですが、

icc: Command line warning: overriding '-tpp6' with '-tpp7'

となります。ほかにも
RedHat 7.1(Linux 2.4.10) on PentiumIII-S のシステムがありますが同様です。

ユーザガイドには Redhat 7.1 と SSE2 を必要とするとありますが、
実行時ならともかくも、コンパイル時にも PentiumIV でないと -tpp7
で最適化されたコードは吐けないのでしょうか?
0230login:Penguin02/06/24 12:15ID:rHq3ABnU
>>229
うちではCeleron(SSE1)でPentiumIVのコード出してるよ。
で、走らせると、不正命令例外がでる。ははは。
0231login:Penguin02/06/24 13:53ID:Qr5L0Xt5
> icc: Command line warning: overriding '-tpp6' with '-tpp7'

ほかにどんなオプションを指定してますか?
0232-tpp702/06/24 14:42ID:s4Hr+GO8
>>231
-tpp7 だけでもやってみましたし、-axW , -xW などもつけたり外したり
しましたが、warning は消えません。

>>229
とするとコンパイル時はCPU関係ないようですね。
ではなぜ…頭痛ぃ

(時は流れて)
…あ、 以下のファイルを見付けました。

$HOGE/intel/compiler50/ia32/bin/icc.cfg
- -tp p6
+ -tp p7

したら warning 消えました。(でもこうすると-tpp6でwarning...)
まるまる一行消したら、-tpp6 でも -tpp7 でもwarning消えました。

デフォルトで p6 となっているようですが、このままでも皆さんのところでは
-tpp7 指定できますか?

とりあえず、生成バイナリが実際どうなっているのかはともかくも、
warning は消えました。お騒がせ致しました。。。
■ このスレッドは過去ログ倉庫に格納されています