インテルC++コンパイラ9.0発表!
at TECH
1:デフォルトの名無しさん
05/06/16 00:54:56
結構前からインテルのFTPサイトからダウソ出来たがようやく正式に出荷だ。
8.0と8.1は糞だったが9.0は実行速度もアプし、コンパイル時間も短くなった。
インテラーな人は来いノシ
2:デフォルトの名無しさん
05/06/16 01:15:32
そんなエサで俺様がクマー(ry
3:デフォルトの名無しさん
05/06/16 01:20:23
あどきぼん
4:デフォルトの名無しさん
05/06/16 01:29:26
AMD C++ コンパイラ1.0発表
www.amd.com/us-en/Processors/Develop/compiler/download.html
5:デフォルトの名無しさん
05/06/16 06:05:50
>>4
Not Foundだが
6:デフォルトの名無しさん
05/06/16 10:17:03
>>4
Not Foundだが!!
7:デフォルトの名無しさん
05/06/16 12:30:30
安藤はコンパイラは作らないよ
8:デフォルトの名無しさん
05/06/16 12:35:45
URLリンク(pc.watch.impress.co.jp)
9:デフォルトの名無しさん
05/06/16 12:45:58
AMD Core Math Library (ACML)
URLリンク(developer.amd.com)
10:デフォルトの名無しさん
05/06/16 12:56:17
7.0購入組みだが、9.0も無料でアップグレードできるとは。
メール着てびっくり。
11:デフォルトの名無しさん
05/06/16 16:23:16
効果あった人いる?
速くなったとか小さくなったとか
ためしたところ速度は8とほとんど変わらない。
吐き出すexeは相変わらずでかいし、その割りに速度はVCシリーズ
とトントンかチト負けてる。
もうちょっと頑張って欲しいんだが、使い方が悪いのかな…?
12:デフォルトの名無しさん
05/06/16 16:48:31
VC6だとオバカなので IntelCの方が断然早いけど、VC7は賢いのでそんなにかわらない。
でも DualCore に対応したのが大きいと思う。。
13:デフォルトの名無しさん
05/06/16 17:10:06
VC8とどっちが賢い?
14:デフォルトの名無しさん
05/06/16 18:20:02
VC8のほうが賢いと思う(こっちはまだバグがあるけど)
>でも DualCore に対応したのが大きいと思う
これはどんなアプリで速くなる?(今までのHT対応の
うたい文句とは別のことをするの?)
15:デフォルトの名無しさん
05/06/16 23:29:18
AMDプロセッサにも対応しましたね。
というかIntelチェックをはずしただけか。
16:デフォルトの名無しさん
05/06/18 09:12:23
それは評価できるな
17:デフォルトの名無しさん
05/06/18 14:44:51
だれかインテルコンパイラのすばらしさを語ってくれ。
18:デフォルトの名無しさん
05/06/18 17:38:40
MSCってSSEのパック命令を吐いてくれる?
IntelC++は使ってくれるけど。
19:デフォルトの名無しさん
05/06/18 17:58:01
>>18
よく知らないけどVC(MSC?)ではSSE関係のビルトインは使ったことは無い。
そもそも無いのかもしれない。
VCでSIMD使いたかったら_asmで直に記述だけど、
ICのSSEビルトイン命令は_asmよりもいいことある?
20:デフォルトの名無しさん
05/06/18 18:25:38
>>19
iclはSSEを意識してプログラミングしなくても、必要とあれば勝手に
SSE命令を使ってくれるんじゃなかたっけ?
21:デフォルトの名無しさん
05/06/18 18:38:03
>>20
それはVC7,8にもスイッチある。/arch:sse だったっけ?
体感できるほど実感はなかったけど…。
ICの/Qxオプションで体感するほど性能アップを感じた人いますか?
22:デフォルトの名無しさん
05/06/18 18:41:23
VC++7.0(.NET 2002)には無いぽ
/Qxオプションよりも/Qaxオプションの方が良いぽ
23:デフォルトの名無しさん
05/06/18 18:55:50
>>21
自作プログラムはほとんど速度を要求しないものばかりで
体感云々は感じないけど、姫野ベンチとかはある程度効果があったよ。
icl 9.0 EM64T(-QxW -Qipo -O3)とcl 8.0 x64(-O2 -favor:AMD64)で
10%強くらいの違い。
24:デフォルトの名無しさん
05/06/18 18:57:10
よくわかってないんだけど、IntelC++コンパイラって
Linuxでしか使わなくていいよね?Winなら現行と次のVCあれば問題ないよね?
25:デフォルトの名無しさん
05/06/18 19:01:27
TK2003のVC7には/arch:sse,sse2オプションあるよ。
>/Qxオプションよりも/Qaxオプションの方が良いぽ
/Qx /Qax どっちも性能アップを体感できなかった… Qaxは動作する
CPUを選ばなくなる代わりに、事前判別のオーバーヘッド&EXEがでかく
なるデメリットあるよね? まあ、どっちにしろ早くならないわけだが。
いままでSIMD系を自動で利用する機能で効果あったためしが無いんだわ。
VC,ICともに。
そもそも_asmで直にSIMD書いても、相当がんばって命令順序の最適化を
やらないと大抵はCのSIMD無しのコードに負けちゃう。(それだけ
通常のコンパイル結果が優れているんだろう)
まあだからこそ手作業で、コンパイル結果より高性能なSIMDのコードを
書き上げることは価値があるんだけどね。
SSE,SSE2を自動で使って幸せになった香具師、語ってくれ!
26:デフォルトの名無しさん
05/06/18 19:15:40
>>23
32bit版キボンヌ
27:デフォルトの名無しさん
05/06/18 19:21:17
>>24
ICはVCほど高くないし(余計なもの付いてないし)、性能出るなら
導入したいと思ってるんだが、あんなにでかい&VC比で大して速く
ないじゃあしょうがない…
インテルのサイトにIC導入で幸せになった企業の成功談義が載ってる
の見たことあるけど、ほんとかよって感じ
28:デフォルトの名無しさん
05/06/18 19:45:35
>>26
WinXP x64、Opteron246、姫野ベンチの配列サイズはMiddle。
MSC Version 14.00.50215.44 for 80x86
/O2 687.5[MFLOPS]
/O2 /arch:SSE /arch:SSE2 407.5[MFLOPS]
ICC Version 9.0 Build 20050430Z Package ID: W_CC_P_9.0.019
/Qipo /O3 877.6[MFLOPS]
/Qipo /QxW /O3 1021.6[MFLOPS]
icl9.0、AMDに対応という割には/QxNが相変わらず使えないんだが。
29:デフォルトの名無しさん
05/06/18 20:12:50
>>28
>/O2 /arch:SSE /arch:SSE2 407.5[MFLOPS]
VCだとSSE2使って性能落ちるんかい!
ICが優秀な場合もあるんだねえ〜。あ、でもICにipo(グローバル最適化?)
つけるんならVC8にも/GL,/LTGCつけてあげてよ。
さらにガイドオプティマイズ組み合わせればSSEはともかく結果ひっくり返るかもよ。
30:デフォルトの名無しさん
05/06/18 20:46:12
>>29
MSC Version 14.00.50215.44 for 80x86
/O2 /GL 689.7[MFLOPS] (/LTGCは無いみたい)
ちなみにVC6(Version 12.00.8804)
/O2 880.5[MFLOPS]
31:デフォルトの名無しさん
05/06/18 20:56:51
>>30
/GLはコンパイル時に、/LTGCはリンク時に付けます(両方必要)
ただ、IDEのプロパティからプログラム全体の最適化でリンク時のコード生成を
選んだのならどっちもついてると思う。
>VC8 /O2 /GL 689.7[MFLOPS]
>VC6 /O2 880.5[MFLOPS]
何かが間違ってる気もしますが、こちらの実感としても
VC6のサイズオプティマイズ(O1)が一番バランスいいという
ケースもあるので、プログラムの性質によってはそういう
結果になるのかも…うーむ。
EXEのサイズはやっぱりICの方がかなり大きい?
32:デフォルトの名無しさん
05/06/18 21:24:37
> MSC Version 14.00.50215.44 for 80x86
これって何についてくるコンパイラ? VS2005?
33:デフォルトの名無しさん
05/06/18 21:36:20
>>32
VS2005ベータ2
34:デフォルトの名無しさん
05/06/18 21:44:16
ICCは実行ファイルでかい。かなりインライン展開とかループの
アンロールとか多いのではなかろうかと思っている。
ところでICC9.0ってANSI/ISO C++に完全準拠したの?以前は説明に例外事項
が出ていたけど9.0のマニュアルにはそうしたことは出てないんですが。
35:デフォルトの名無しさん
05/06/18 21:51:13
とりあえずドライストーンをコンパイルして試そうぜ。
イソテルとマイクロンフトの結果も出てるから比較しやすいじゃんぐ。
URLリンク(pcweb.mycom.co.jp)
36:デフォルトの名無しさん
05/06/18 22:19:58
>URLリンク(pcweb.mycom.co.jp)
この記事大丈夫か? ICCがVC必須とかデバッガがIDE上で動くとか
平気で書いてるが…
ベンチマークもいいけど、皆の作成している、現実的な状況での
有用性を知りたい。
37:デフォルトの名無しさん
05/06/18 23:46:36
Windows版は文字通りコンパイラだけでリンカが付属してないから少なくともVC++が必要だぞ。
38:デフォルトの名無しさん
05/06/19 00:08:52
>>37
xilink6.exeはリンカじゃなかったのか…?
Qipoの面倒だけ見て後はVCのリンカへ丸投げか。
まあ、今はMSからVCただでダウンロードできるからいいのか。
39:デフォルトの名無しさん
05/06/20 10:35:27
>>34
アンロールはデフォルトでオフになっているようです。
40:デフォルトの名無しさん
05/06/20 13:05:28
>>39
じゃあ何であんなにでっかいんでしょうねぇ?
下手するとVCのデバッグビルドにも匹敵するような
大きさのEXEを吐かないか?
41:デフォルトの名無しさん
05/06/20 13:58:56
サイズは少々でかくても速ければいいんだが、
VC++に比べて今一つなんだよなぁ。
42:デフォルトの名無しさん
05/06/20 15:06:56
でかさを相殺するほどは早くないんだよねえ。
VCに負ける場合もあるし(っていうかICが勝ってる実感ほとんどないんよ)
ならばHTやマルチプロセッサ環境(ICの得意分野?)で圧倒的に
役に立ってるよ!って香具師いたら、リポートキボンヌ
43:デフォルトの名無しさん
05/06/20 17:16:24
>>40
でかいって、10倍や100倍になってしまうの?
倍くらいの大きさで速くなるのなら別にいいと思う。
44:デフォルトの名無しさん
05/06/20 18:11:23
>>39
デフォルトでQunrollですよ、8.1/9,0は。
>>43
倍にもならないです。プログラムによってICCが出力するファイルがMSCより
小さくなることもあります。
45:デフォルトの名無しさん
05/06/20 18:15:09
さすがに10倍にはならないけど、VC++で120KB程度ならICCでは
340-400KBくらいにはなる。3-4倍くらいかな。それで10秒かかる計算が
9秒で終わるようになっても嬉しくないわけで、投資する価値があるかと。
ただ、小数計算が多いと整数並みに速くはなるみたいだから
そういう処理が多い人は効果を実感できるんじゃないかな。
46:デフォルトの名無しさん
05/06/20 18:25:22
>>43 >>44
各種最適化オプション(高速化のため)を組み合わせると
VCの2〜3倍、ものによっては4倍近くならない?
>倍にもならないです。プログラムによってICCが出力するファイルがMSCより
>小さくなることもあります。
小さくなる事例は見たこと無いなあ…どのぐらいの規模なの?
こちらのはVCで600〜800KB(Ox,GLなど)がICで2MB(Qipo,Qax)近くなる
(デバッグ情報は含んでない、念のため)
47:デフォルトの名無しさん
05/06/20 19:55:21
>>46
Qaxつかったらファイルサイズが大きくなるのは当たり前では?
2種類のコードが含まれるわけでしょ。
MSCのオプションを/Ox /GL、ICCを/Qipo /O3(SSE使わない)でコンパイルして
速度とファイルサイズを比較した方がいいとおもうけど。
48:44
05/06/20 20:20:48
>>46
URLリンク(www5e.biglobe.ne.jp)
ここのソースをコンパイルしたらICCがMSCよりファイルサイズが
小さくなったのであのように書きました。
>47にならって、
ICC9.0 Build 20050430Z(/Qipo /O3)がファイルサイズ61440byte、実行時間942[ms]
MSC14.・・・(/GL /Ox)が90112byte、実行時間953[ms]
49:デフォルトの名無しさん
05/06/20 21:30:25
>>47
こっちとしてはコンパイラの得意技使ってでも高性能たたき出して
欲しいんいだわ。サイズ2倍3倍になってもコンスタントに2割3割
速くなればうれしい状況もあるし。
Qaxはずしてサイズ縮まったとしてもVCと比べて似たような結果になるだけだ
ったらICを検討する価値ない。(確かに縮まるがVCよりはこっちのケースでは
数百キロでかい)
あと、Qaxをはずしたコードが早くなったらそれこそ笑っちゃうじゃない。
だからQaxをつけた状態でVCに比して速度的に? だったらIC何やってんの?
って思う。実際今そう。
>>48
検証ありがとう^^;
実行時間は1%じゃ誤差の範囲かなあ。吐かれたコードのキャッシュへの
たまたまの乗り具合で変動しちゃうこともあるし。
ファイルサイズについては良いですね。 総じてこういうケースなら
ICをサイズ最適化用のコンパイラとして評価することもできるんだけど、
いかんせんこっちのケースではどうしようもない。
ベンチじゃなくて、ご自身がご飯食べているコードで幸せになりましたか?
そういう生の声が聞きたい。
50:デフォルトの名無しさん
05/06/20 21:40:12
>>48
>URLリンク(www5e.biglobe.ne.jp)
ソース見てみましたが、これじゃサイズとして参考にならないと思う。
文句ばかり言って気を悪くしたらごめんなさい。
プログラムが小さすぎて、EXEにくっつくランタイムの大きさとかの差が
もろに出てしまってるのでは?
VC8のランタイムは、VC6,7(ICはこっちを使ってるでしょ?)に比べてかなり
大きいような気がする。
51:デフォルトの名無しさん
05/06/20 21:42:16
Aviutlプラグインフィルタ自作していますが、VS2003付属のコンパイラ
より3割ほど速くなりました。
ICCはとてもいいコンパイラですね。
52:デフォルトの名無しさん
05/06/20 21:46:27
>>51
指定オプションおしえて
あと、プログラムは浮動少数使いまくり?
53:デフォルトの名無しさん
05/06/20 21:59:49
>>52
VSのオプション設定に加えたのは/fastだけ。
単精度使いまくりです。
54:637 ◆jUbpU.TPuw
05/06/20 22:11:21
Ogg Vorbisの最適化やってるけどサイズはGCCとICLではあまり差が出ない。
最もSSE最適化を使っているのでP3以上のCPU専用コードでビルドしていて
SSE非対応CPU用のコードを含んでいないせいかもしれない。
速度の方はやっぱりICLが速いけど手動SSE最適化を進めるとGCCとの差が短くなる傾向にある。
8.1と9.0では有意な速度差は見られなかった。
55:デフォルトの名無しさん
05/06/20 22:11:28
それならそうかもね。
56:デフォルトの名無しさん
05/06/20 22:20:16
>>53
プププレスコ?
57:デフォルトの名無しさん
05/06/20 22:41:14
>>53
総じて
・でかい
・ある程度規模のあるアプリでは速度差はあまり無い
・浮動小数演算に向いている
かな。今のところ
>>54
>GCCとICLではあまり差が出ない。
GCCとICはどっちもVCよりかなりでかいとどこかで見た気がする。
LINUX?
>手動SSE最適化を進めるとGCCとの差が短くなる傾向にある。
それでもICLの方が早いの?
相当がんばれば手動SSEの方が早くなると思う。まあ、それやっちゃうと
ICはいらんがな。
SSE無しと比べてどのくらい早いですか?
58:637 ◆jUbpU.TPuw
05/06/20 23:07:20
24分59秒の曲をAthlonXP 1700+でエンコードした場合
GCC SSE最適化なし 2分53秒09 8.6657倍
GCC SSE最適化あり 2分31秒97 9.8700倍
ICL SSE最適化あり 2分29秒00 10.0667倍
GCC 手動最適化 1分28秒99 16.8555倍
ICL 手動最適化 1分18秒27 19.0533倍
GCCとICLの自動SSE最適化であまり差が無いのはAthlonでの傾向だと思う。
ICLの手動最適化ではプロファイラを使用した2パスコンパイルを実施している。
ICLは基本性能に加えて
小数点演算のSSE/SSE2によるレジスタオペレーション(GCCでもできる)
ベクタライズ化
が優れているんだけどコンパイラによる自動ベクタライズ化では単純な処理しか
できなくてシャッフルを使ったデータの組み換えや条件分岐の置換などは無理。
VC7に関してはあまり使ってないのでよくわからないけど以前見た感じでは
SSEビルトイン命令の最適化が今ひとつだった。
59:デフォルトの名無しさん
05/06/20 23:13:15
EM64T版でインラインアセンブラは可能ですか?
60:デフォルトの名無しさん
05/06/20 23:17:37
>自動ベクタライズ化では単純な処理
そうそう。出力見ていてベクトル化が成功したとか出ると
おおーっ、と感動したが、該当するソースを見てみると
なんだこれか、これはどうでもいいよ、みたいな。
簡単なものしか成功しないみたいだった。
61:デフォルトの名無しさん
05/06/21 00:13:53
>>59
不可
62:デフォルトの名無しさん
05/06/21 02:02:10
>>58
>GCC SSE最適化なし 2分53秒09 8.6657倍
>ICL SSE最適化あり 2分29秒00 10.0667倍
おお、早くなってますね! モノによっては効くんだ、ICLのSSE最適化。
VC8での性能も知りたいところだなあ。VC8はガイドプロファイリングオプティマイズ
がかなり賢いから、もしそういうの好きだったら競争させて見てはどうかな
63:デフォルトの名無しさん
05/06/21 07:10:16
>>50
>VC8のランタイムは、VC6,7(ICはこっちを使ってるでしょ?)に比べてかなり
ICL、MSCともに同じコマンドプロンプト上で実行しているので
インクルードファイル、ライブラリともに同じものを使っていると思います。
64:デフォルトの名無しさん
05/06/21 10:56:19
>>63
例えばレイトレベンチではなくて、
#include "stdio.h"
main(){
printf("hello");
}
だったら似通ったサイズになりますか?
さすがにこれだけだと、生成コードに大差は無いでしょうから。
65:デフォルトの名無しさん
05/06/21 11:05:28
それだけ小さいと、main()以外のものが多すぎて比較にならない希ガス。
66:デフォルトの名無しさん
05/06/21 11:07:02
リリースビルドで変更箇所/O1 /OPT:NOWIN98のみ
icc9.0:28672バイト
vc.net2002:27648バイト
インテルだめぽ
orz
67:デフォルトの名無しさん
05/06/21 12:43:06
>>65
>それだけ小さいと、main()以外のものが多すぎて比較にならない希ガス。
むしろそれが狙い。これやって大きさが変わるようなら、63殿の状況で
ICがVCとは違うものを引っ張ってきている可能性大
>>66
もしかして64に対する返信? ほとんど変わらないんだったら、
URLリンク(www5e.biglobe.ne.jp)
に対してはインテル優秀と言えるのでは。
何でだめぽなの?
68:デフォルトの名無しさん
05/06/22 23:26:45
ICL8.1(windows) を利用しているのですが sleep 文を使うとそんな命令はありませんと
怒られてしまいます。 intel compiler には sleep 文は無いのでしょうか?
もしくは適当なヘッダファイルを include する必要があるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授よろしくお願いいたしますm(__)m
69:デフォルトの名無しさん
05/06/22 23:28:14
>>68
<Windows.h>にはSleep関数がある。
70:デフォルトの名無しさん
05/06/23 00:02:28
スリープみたいな石鹸♪花王石鹸ホワイト♪
71:68
05/06/23 00:47:09
>>69
ありがとうございます!Sleep を使用する事にします。
72:デフォルトの名無しさん
05/06/23 12:23:48
次の質問は、「Sleep(10)しても10秒止まってくれないのは何ででしょう」かな?
73:デフォルトの名無しさん
05/06/23 13:21:01
誰か、HTかマルチプロセッサ環境で、ループの自動並列化が
役に立った香具師いるかい?
どんなアプリかも教えてほしい
74:デフォルトの名無しさん
05/06/25 19:12:33
ICCを手放しでほめてるやつがいてきもいな
75:デフォルトの名無しさん
05/06/25 22:53:57
二日ぶりのレスがそれかよ〜
手放しでほめてるやつんなんていないんじゃない?
76:デフォルトの名無しさん
05/06/26 00:06:46
>>74
よくわからんけど、君がキモイ
77:デフォルトの名無しさん
05/06/26 06:05:38
athlon64などAMDのプロセッサで使用した際の最適化は他のコンパイラと比較してどうなのでしょうか?
78:デフォルトの名無しさん
05/06/26 10:16:27
3DNow!叩かないからUnko
SSEはおまけ程度だし
79:デフォルトの名無しさん
05/06/26 10:37:46
そこで PathScaleですよ
80:デフォルトの名無しさん
05/06/26 16:59:53
久々に進んでると思ったら('A`)
>>76
ムキになるほど心当たりがあるってことだろ
釣られるんじゃね
81:デフォルトの名無しさん
05/06/26 17:59:00
IA64スレでちとやってたけど、ICはVCと単純に入れ替えただけじゃあ
さほどうまみが無いという結論になりますた。
この上にある単精度演算の優位性と、あとは組み込みSIMD関数
を使った時の自動命令スケジューリングが命のようです。
82:デフォルトの名無しさん
05/06/26 18:26:01
工作員が入り込んでいるようですね。
83:デフォルトの名無しさん
05/06/26 18:39:03
VS2005 beta2手に入れたので、Apache2.0.54 Win32をビルドして
ab.exeで速度をはかってみました。
やり方はスレリンク(mysv板)
icc8.1と比べVS2005は12%ダウンですた。
>>82
君はどこの工作員?
84:デフォルトの名無しさん
05/06/26 18:50:01
>>83
どっちもコンパイルオプションキボンヌ
85:デフォルトの名無しさん
05/06/26 19:01:51
両方ともApacheに入っていた同じプロジェクトファイル使っていて
速度に関するオプションは/O2だけかと思います。
86:85
05/06/26 19:02:15
↑>>84
87:デフォルトの名無しさん
05/06/26 19:43:55
>>85
もし暇で面倒でなかったら、どちらも最大全力ガチンコ勝負させてみてくれい。
広域最適化やガイドオプチ、インテルの方はQax系も…めんどうだなorzわがままスマソ
88:85
05/06/26 21:00:53
>>84
ごめん逆。12%アップの間違い。
iccとvsでapcacheのディレクトリをそれぞれ作ったんだけど
それぞれ逆のディレクトリにビルドしてしまったorz
89:デフォルトの名無しさん
05/06/26 21:43:51
>>88
逆って……またひとつインテルだめぽ伝説がorz
90:デフォルトの名無しさん
05/06/26 22:10:32
>>74
使ってもいないのに、文句たれているやつが一番キモイと思います。
91:85
05/06/26 22:16:49
>>87
あまりにもプロジェクト数が多いので、オプション書き直すのが大変です。
すみませんが、ご自分でお試しください。
92:デフォルトの名無しさん
05/06/26 22:49:28
8.1から9.0でほとんど違いはないけど、アセンブラ出力してみると
微妙に違う。依存関係のある演算はなるべく間をおくようになっている。
例えばこんな感じ。
addpsxmm2, xmm4
mulpsxmm2, xmm7
por xmm3, xmm1
↓
addpsxmm2, xmm4
por xmm3, xmm1
mulpsxmm2, xmm7
CPUのスケジューラでやってくれそうなことだけど、効果あるのかな?
93:デフォルトの名無しさん
05/06/26 23:29:19
>>92
効果があるなんてもんじゃない。
例えば手動で組むときもそれやんないとCの汎用ルーチンより
遅くなることも珍しくない
つーか今までやってなかったのか?
94:デフォルトの名無しさん
05/06/26 23:31:35
>>92
>>93は、オウトオブオーダーをCPUがやってくれたとしても
さらに効果あるよ、ということ。オレの実経験上の話だけど。
95:デフォルトの名無しさん
05/06/27 02:23:09
,.ィ , - 、._ 、
. ,イ/ l/  ̄ ̄`ヽ!__
ト/ |' { `ヽ. ,ヘ
N│ ヽ. ` ヽ /ヽ / ∨
N.ヽ.ヽ、 , } l\/ `′
. ヽヽ.\ ,.ィイハ | _|
ヾニー __ _ -=_彡ソノ u_\ヽ、 | \
.  ゙̄r=<‐モミ、ニr;==ェ;ュ<_ゞ-=7´ヽ > インテルのコンパイラが速いというのは
. l  ̄リーh ` ー‐‐' l‐''´冫)'./ ∠__ アポーが写真屋の一部のフィルターの処理だけ比べて
゙iー- イ'__ ヽ、..___ノ トr‐' / Pen4より速いと宣伝するのと同じくらい信用出来ないことなんだよ!
l `___,.、 u ./│ /_
. ヽ. }z‐r--| / ト, | ,、
>、`ー-- ' ./ / |ヽ l/ ヽ ,ヘ
_,./| ヽ`ー--‐ _´.. ‐''´ ./ \、 \/ ヽ/
-‐ '''"  ̄ / :| ,ゝ=< / | `'''‐- 、.._
/ !./l;';';';';';';\ ./ │ _
_,> '´|l. ミ:ゝ、;';';_/,´\ ./|._ , --、 | i´!⌒!l r:,=i
. | |:.l. /';';';';';|= ヽ/:.| .|l⌒l lニ._ | ゙ー=':| |. L._」 ))
l. |:.:.l./';';';';';';'! /:.:.| i´|.ー‐' | / | |. ! l
. l. |:.:.:.!';';';';';';';'| /:.:.:.:!.|"'|. l' │-==:|. ! ==l ,. -‐;
l |:.:.:.:l;';';';';';';';| /:.:.:.:.:| i=!ー=;: l | l. | | / //
l |:.:.:.:.:l;';';';';';';'|/:.:.:.:.:.:.!│ l l、 :| | } _|,.{:: 7 ))
l |:.:.:.:.:.:l;';';';';'/:.:.:.:.:.:.:.:| |__,.ヽ、__,. ヽ._」 ー=:::レ' ::::::|; 7
. l |:.:.:.:.:.:.l;';';'/:.:.:.:.:.:.:.:.:.|. \:::::\::::: ヽ ::::::!′ :::| .:/
96:デフォルトの名無しさん
05/06/27 14:02:00
3DNowとかAMD系の命令は使えますか?
97:デフォルトの名無しさん
05/06/27 21:00:42
9.0は警告が少なくなったような気がするが。
98:デフォルトの名無しさん
05/06/28 22:09:50
インテルのコンパイラに変えたら
20パーセントも速くなりました。
やっぱりハイパースレッディングに対応させたのが良いですね。
こんなに素晴らしいコンパイラを提供出来るインテルは
凄いと思います。
と、一度言ってみたい。
99:デフォルトの名無しさん
05/06/28 22:20:42
>>98
それチョウチン記事と一緒
100:デフォルトの名無しさん
05/06/28 23:38:32
>>98
一部ループが/Qparallelで90%ほど速くなりましたが。Opteronで
101:デフォルトの名無しさん
05/06/29 00:00:43
nandatte-
102:デフォルトの名無しさん
05/06/29 00:05:33
2回ワラタ
103:デフォルトの名無しさん
05/06/29 02:01:01
>>100
演算量に対しメモリアクセスの少ないループなら有効ですかね?
↓みたいな。
for(i=0;i<100000000;i++)
a[i] = sin(b[i]) + cos(b[i]);
104:デフォルトの名無しさん
05/06/29 08:58:54
わかった!
for(i=0;i<100000000;i++);
これが
i=100000000;
に最適化されたんじゃねーの?
105:デフォルトの名無しさん
05/06/29 19:12:13
>>103
それでは、Qparallelは有効になりません。
ループ内におけるメモリアクセスの割合がまだ大きいです。
a[i] = sin(i%123) + cos(i%456);
このくらいやらないとw
106:デフォルトの名無しさん
05/06/29 20:01:46
三角関数は周期関数だから
107:デフォルトの名無しさん
05/06/29 20:42:26
C++で、for文で宣言された変数のスコープってどうなっていますか?
forブロックの中、それとも外のブロック?
108:デフォルトの名無しさん
05/06/29 20:51:40
設定出来る
109:デフォルトの名無しさん
05/06/29 21:23:29
AMD、インテルを米独禁法違反で提訴
URLリンク(www.amd.com)
インテルは、ソフトウェア・プログラムを機械が読み取れる言語に翻訳するコンパイラを
設計する際に、AMDプロセッサ搭載コンピュータ上でプログラムを実行した場合は性能が
低下するようにした
110:デフォルトの名無しさん
05/06/29 22:54:42
>>109
if(AMD){
遅いコード;
} else {
速いコード;
}
ってコード吐き出すのかね?(ワラタ)
111:デフォルトの名無しさん
05/06/30 00:37:16
安藤のCPUで速かったら、別の意味で凄いな。
というか、それならぜひとも買ってみたいぞ。
112:デフォルトの名無しさん
05/06/30 00:38:48
もしやバイナリーのサイズが恐ろしく巨大なのは
対AMDのコードが挿入されているとかw
113:デフォルトの名無しさん
05/06/30 00:58:59
とにかく、インテルのコンパイラはAMDに対応しているわけだ。
114:デフォルトの名無しさん
05/06/30 09:18:59
このスレ読むとiccって一部の評判ほど高速化しない様だけど
URLリンク(www.drk7.jp)
こういう情報もあるわけで
結局どうなんですか賢者様
115:デフォルトの名無しさん
05/06/30 11:29:45
>>114
他のコンパイラもそんなにタコでもない、元の比較対象か状況が
あまりにも特殊か、どこか間違えてるんじゃない?
116:デフォルトの名無しさん
05/06/30 12:37:32
>>114
自分で確認すりゃいいじゃん。
117:デフォルトの名無しさん
05/06/30 13:10:53
よく分からないがそのベンチマークは一カ所からのリダイレクトを計っている
だけか?
118:デフォルトの名無しさん
05/06/30 13:46:16
人リ〒ノレ
119:デフォルトの名無しさん
05/06/30 15:45:36
>>116
自分の場合、とりあえず動作する環境構築は出来たとしても、
パフォーマンスに影響を与える色々な設定を
あまり熟知していないので、自分の比較検証なんてアテになりません。
120:デフォルトの名無しさん
05/06/30 16:09:14
その環境でも比較することは出来る。
パフォーマンスに影響を与える色々な設定をあまり熟知していないなら、
そういう使い方が自分の使い方になるわけだから、
それで比較してみれば良い。それで十分。
自分なりに検証してみることが重要。
121:デフォルトの名無しさん
05/07/08 18:43:54
アップデートあげ
Intel® C++ Compiler 9.0 for Windows* product update is now available for download.
The package id is w_cc_c_9.0.020 IA32 Compiler Build 20050624Z , Itanium Compiler Build 20050628 ,
Intel(R) C++ compiler for EM64T-based applications, Version 9.0 Build 20050623.
122:デフォルトの名無しさん
05/07/08 22:24:36
何か良くなった?
123:デフォルトの名無しさん
05/07/08 22:40:15
r‐┐ r‐┐ r‐┐
|_|. __ .__| |__ .| |
| ̄| | ̄!'´. `ヽ |__ __| | |
| | |. .r"⌒ヽ .| | |. ___ | |
| | | | | | | | ,r''" .`ヽ | |
| | | | | | | !__i'. ,r"⌒ヽ i| |
|_| |_| |_| !、___ _ ̄ ̄ __.,|
! !、 ̄ ̄,―,
ゝ、_  ̄ _ノ
 ̄ ̄
∩∩ High performance and low price ∩
(7ヌ) (/ /
/ / ∧_∧ ||
/ / ∧_∧ ∧_∧ _(´∀` ) ∧_∧ ||
\ \( ´∀`)―--( ´∀` ) ̄ ⌒ヽ(´∀` ) //
\ /⌒ ⌒ ̄ヽ、Itanium/~⌒ ⌒ /
| |ー、 / ̄| //`i Xeon /
|Celeron| |Pentium/ (ミ ミ) | |
| | | | / \ | |
| | ) / /\ \| ヽ
/ ノ | / ヽ ヽ、_/) (\ ) ゝ |
| | | / /| / レ \`ー ' | | /
124:デフォルトの名無しさん
05/07/13 00:58:43
インテルコンパイラ、インストールがわかりにくい
おまけにIEがデフォブラウザじゃないとインストールできない
125:デフォルトの名無しさん
05/07/13 03:10:48
dual CPU,ハイパースレッディング環境で main thread の他に演算
作業用スレッドを 4個作って処理させています。 4個のスレッドがそれぞれ
異なる4つの(論理)CPU に割り当てられた時はとても速く動作するのですが、
同じ CPU に2つのスレッドが割り当てられたりすると、1つのCPUが遊んで
しまい、処理が遅くなってしまう事があります。このような事を防ぎ、
確実に異なる CPU にスレッドを割り当てたいのですが、よい方法は
ありませんでしょうか?お詳しい方がいらっしゃいましたらぜひご教授
よろしくお願いいたします。
126:デフォルトの名無しさん
05/07/13 05:04:56
>>124
直接、setup.exe起動すればいいのでは?
127:デフォルトの名無しさん
05/07/13 05:19:45
>>125
URLリンク(www.intel.com)
128:デフォルトの名無しさん
05/07/13 08:39:26
>>125
WinだとSetAffinityMaskとか割り振りようのAPIがある。実際そういうコード組んでる
129:デフォルトの名無しさん
05/07/13 08:45:11
>>126
ダウンロードしたやつのインストールの話なんだが、直にsetup
叩いてもうまくいかなかった。デフォブラウザがOperaだと実際
インストールが途中で失敗する。仕方ないのでIEに戻したよorz
ネスケとかだとどうかな?
130:デフォルトの名無しさん
05/07/13 08:54:04
>>128
Affinityのマスクbitがどの論理CPUを示しているのわからない。
127にあるように、Affinityを変えるごとにAPIC IDを確認していくのが確実。
131:デフォルトの名無しさん
05/07/13 10:25:32
>>130
>>125は分散させたいのでは。
どの論理CPUかは、前から割り振られてんじゃないの?
132:デフォルトの名無しさん
05/07/13 10:59:19
2つのスレッドをそれぞれ別の物理プロセッサに割り当てたい
といっていると思うのだけど。
133:デフォルトの名無しさん
05/07/13 12:23:00
4個のスレッドを4個の論理CPUに分けたいのかと思った。
そうかなるほど、どの論理CPUがどの物理CPUかはわからんのか。
134:デフォルトの名無しさん
05/07/13 18:59:15
>>132
同じ物理CPUでも別の論理CPUなら、さほど酷いことには
ならないんじゃない? 物理CPUまで別のときに比べて
どれほどうまみがあるかはものによると思うけど
135:デフォルトの名無しさん
05/07/14 05:01:26
>>134
2つのスレッドがビジーであれば、スレッドは1つずつ論理プロセッサに
勝手に割り当てられる。
136:デフォルトの名無しさん
05/07/14 08:39:46
>同じ CPU に2つのスレッドが割り当てられたりすると、
これが
1・同じ物理 CPU に2つのスレッドが別の論理CPUに割り当て
2・同じ論理 CPU に2つのスレッドが同時に割り当て
どっちだ??
137:デフォルトの名無しさん
05/07/14 12:52:37
.,Å
.r-‐i'''''''''''i''''‐-、
o| o! .o i o !o
.|\__|`‐´`‐/|__/|
|_, ─''''''''''''─ ,、 /
、-' u -、
/ U 0 \
/ / i
| ● ,,. .,, ● |
__ . ! (_人__) ノ
/´ ̄ `!. 丶_ u U ノ
| `にこ匸'_ノ . '-、、,,,,,,_______,,,,,,、、-'
ノ u { _.. -―| :{ ,/ / \
. / l | __ / ̄ ̄`>'´ ノ' ´ {、 \
/ |/ {'´ `ヽ. " ̄\ U `ヽ. __,,.. -‐丶 u ヽ
| / ヾ、.. } u' 〉、 } `ー''´ /´ ̄ `ヽ '" ̄\
! :} )「` ノ、 ノ l\"´_,,ニ=-― <´ ヽ{ ノ( `、 |
l 、_,/j `ー一''" }, ノ , '''''"" \ ヽ ⌒ヾ v |
ヽ _ / } {. { l ┌n‐く ヽ/ ``\ ノ
`¨´ `¨¨¨¨´ ̄`{ 0 `'^┴'ー┘|ヾ }、 u' ` --‐r'′ キングヤッタス!!
138:デフォルトの名無しさん
05/07/15 10:41:33
もうインテルコンパイラの話題は無いのか…オレのお試し期間ももうすぐ終了だぁ
139:デフォルトの名無しさん
05/07/15 13:03:46
URLリンク(www.itmedia.co.jp)
140:デフォルトの名無しさん
05/07/15 13:47:47
>プログラムが真正のAMD製マイクロプロセッサを探知した場合には
AMDなんて探知していない。
Intel以外は全部だめ。
141:デフォルトの名無しさん
05/07/15 14:04:39
おれんとこじゃPen系でもVC8の吐き出したやつに負けるからどうでもいいが、
でもクラッシュはホントかね。別のコードパスが実行されるって、
両方持って得る香具師ステップして確かめたことある?
たとえばQaxNだと北林かそうで無いかで分けるから結果そうなるんじゃないのか。
クラッシュとかしたらソフト出荷できないからかえってコンパイラの信頼落ちるだろ?
142:デフォルトの名無しさん
05/07/15 14:27:27
>>141
先にIntelチェックをしてから、CPUの機能をチェックしているので
北森だろうがなんだろうが関係ないです。
うちはAthlon64だけど、全体的にVC8よりICCの方が速いですね。
もちろんIntelチェックを行わないよう細工しています。
143:デフォルトの名無しさん
05/07/15 14:57:45
あのEXEのでかさはマジでインテル以外の遅いコードパスが
入ってるからなのか? 信じられん
細工の詳細キボンヌ
144:デフォルトの名無しさん
05/07/15 16:57:19
どうせなら This program is only on Intel CPU Sorry! とか出して
止まっちゃうほうが潔いね。英語への突っ込みは無しねorz
145:デフォルトの名無しさん
05/07/15 17:25:12
>>143
↓をmain()のあるソースに加えて、linkオプションに/FORCEを付ける。
extern int __intel_cpu_indicator;
void __intel_cpu_indicator_init(void)
{
・
・
・
拡張命令使うなら
__intel_cpu_indicator = -512;
使わないなら
__intel_cpu_indicator = -1;
}
146:デフォルトの名無しさん
05/07/15 17:47:29
>>145
ありがと。マジなんか…
どっちでAMDでも最適化コードが使われるようになるの?
__intel_cpu_indicator = -512;
__intel_cpu_indicator = -1;
あと、ホントにそのチェック外しても大丈夫なんかね?
インテル固有オペコードとかを使っているのを他のCPUで
実行させたときにおかしくならないようにする為の細工じゃないのか
147:デフォルトの名無しさん
05/07/15 18:43:22
普通に考えりゃ
__intel_cpu_indicator = -512;
っすねorz
148:デフォルトの名無しさん
05/07/16 23:37:29
MFCのクラス(CBitmap等)を含むVC++ .NET2003で作成された
クラスライブラリを、そのままインテルコンパイラで
コンパイルできるのでしょうか?
ソース的には、ベクトル、行列演算、三角関数等の浮動小数点演算を含む
動画画像処理系のソースなんですが、コンパイラによりどの程度の
速度差が生まれるのか興味があります。
業務に使っているPCなので、体験版・試用版のプログラムは入れられない事に
社内規約上なっていて、インテルコンパイラでコンパイルできるのであれば
購入して試してみたいと思っています。
149:デフォルトの名無しさん
05/07/17 00:45:45
>>148
望む情報かどうかは分からないけど
VC:'a':無符号
ICC:'a':符号あり
でした。スイッチとかあるかもしれないけど、両方のコンパイラで
同じ動作させるには何がしかの苦労はあるんじゃないかな
互換性は高い方だと思いますが。
>体験版・試用版のプログラムは入れられない事に
体験版入れて、気に入ったらそのまま製品版ライセンスを
購入できるのでは? XLsoftに聞いてみたらいいと思う。
性能アップしたらリポートキボンヌ
150:148
05/07/17 01:32:51
>>149
ありがとうございます。なるほど。互換性も含めて確認してみたいですね。
60日間、体験版として使った後に、気に入ったら製品版ライセンスを取得して
ライセンスファイルを取得・指定すれば、即製品版になるという事のようですね。
月曜日に出社するので、試してみます。
現状の会社のPCはデュアルXeon 3.06GHzなので、SSE2/3 を含め、
デュアルコアだけでなくHT/マルチCPU環境で、
インテルコンパイラがどんな仕事をしてくれるか、楽しみです。
(大きな期待はしていません。)
結果などは、何か解りしだい書きますね。
151:デフォルトの名無しさん
05/07/17 01:45:51
>>150
追記
9のインストールは先に8のインストールが必要でかなり分かりにくい
(おまけのその8がまともに動かない明らかにエラーのある
バージョンに先祖がえり起こしてるw)
そこから9へアップするのはプレミアサポートへの登録がさらに
必要だったと思う(無料だけど)
他に、体験版は30日だった気がする。IEもデフォのブラウザで必要。
じゃあガンバッテ
152:デフォルトの名無しさん
05/07/17 07:58:07
>>149
すくなくともVCにはcharをunsigned charにするオプションが在る。
153:デフォルトの名無しさん
05/07/17 09:24:24
ICCにもある。/Jオプション
154:デフォルトの名無しさん
05/07/17 09:43:10
>>152 >>153
そういうこと? どっちもデフォの状態として
VC : char : signed , 'a' : unsigned
ICC : char : signed , 'a' : signed
のような気がするんだけど。
半角アルファベットだと差は無いけど、漢字とかをシフトして
両者の違いに気がついた
155:148
05/07/17 15:22:56
>>154
VC++ .NET2003では、char はデフォルトでは signed char のようです。
/J オプションで unsigned char になるようですね。
ICCでも、この点は同じオプションで指定できるということのようですね。
今のところ、VC++ IDEベースで、ICCを使おうと考えているので、
プロジェクトファイルを VC →ICC へ変更して使えば、
コンパイルオプションは、そのまま引き継がれそうです。
156:デフォルトの名無しさん
05/07/17 16:04:07
charは同じだけど、'あ'って全角の文字定数を書くと、
ICCはsigned short っぽい動作をするのではないか。
VCはunsigned short。前出のスイッチの問題じゃないと思う
157:148
05/07/18 22:59:49
とりあえず、速報ですが、ICC Ver9.0(30日間試用版)をダウンロードして試してみました。
環境は、Xeon 3.06GHz × 2 / Windows XP Pro/ 32bitの環境で、HTはONです。
従来、VC++ .NET 2003で平均35ms程度かかっていた画像処理タスク関数処理時間
(NTSC同期フレーム処理)が、平均23ms程度に高速化できました。
オフライン処理でbmpファイルを1000枚読ませて処理される場合などでも、明らかに速度差があります。
期待以上の結果でした。
基本的にVC++ .NET2003のIDE環境で、プロジェクトファイルをICC形式へコンバートしているので、
VC++ .NET2003のコンパイラと広域最適化、組み込み関数、Pentium4コードなどの最適化オプションは同一です。
ただし、ICC向けに拡張されている項目では「Pentium4 なんとか SSE3」にしています。
ループ処理の自動並列化(スレッド化?)の項目は、有効にすると例外処理で落ちるようになりましたので、設定していません。
VC++ .NET2003と共通のSIMD SSE、SSE2コードを使うかどうかの設定は、SSE2にすると微妙に速度が落ちたので、両社ともSSEコードで使うようにしています。
コンパイルオプションなどは、後日書ければと思います。
実行ファイルサイズですが、リリース版で
VC++ .NET 2003 418KByte
ICC 622KByte
という結果になりました。
今回、画像処理アルゴリズムは、Static Linkライブラリ化して、分割コンパイルで
リングバッファリングなどをしている メインタスクとリンクして使うようにしていますが、
画像処理アルゴリズムだけ ICC でコンパイルし、メインタスクはVC++ .NET2003で
コンパイルすると、リンクは通り、実行ファイルは作成されるものの、実行すると例外処理で落ちる状態となりました。
現在は、メインタスクもアルゴリズム側も、ICC でコンパイルしています。
ICCでのコンパイルですが、一部のレジスタ変数で警告がでる他はコンパイル時間も速く、思ったより快適でした。
158:148
05/07/18 23:01:44
↑の全角の文字定数問題!? は、まだ確認していません。
画像処理結果で算出される浮動小数点パラメータですが、VC++ .NET2003の結果と
ICCの結果は、数値演算レベルでは完全に一致はしませんでした。
SIMD命令関係で、丸め込まれているだけかも知れません。
画像処理結果として、影響がでる範囲ではありませんでしたので、今回の用途では問題にはなりません。
正直、画像処理アルゴリズム側のソースは、Cレベルの記述でも、もっと最適化できると思われる
レベルのソースでかなり悲惨な内容です。グレースケール画像自体を float で持っていたりして
内容的にも浮動小数点演算の固まりのようなソースなので、
こういう状態のソースには ICC は強いのかも知れません。orz
159:デフォルトの名無しさん
05/07/18 23:41:34
>浮動小数点パラメータですが、VC++ .NET2003の結果とICCの結果は、
>数値演算レベルでは完全に一致はしませんでした。
そう、違う。よく比較してみると結構違ってたりするので注意が必要。
160:デフォルトの名無しさん
05/07/19 00:00:56
効果ある人もいるんだ…ウラヤマスイ
おれはコンパイル時間かかるは実行性能落ちるわで散々。
今んところ導入は見送っているよ
>Cレベルの記述でも、もっと最適化できると思われる
得てしてコンパイラの最適化ってのはこんなもんでしょうねぇ
おれんところのはやはり画像処理系だけど、手でがりがりにチューニングしている。
もちろんSIMDなんかも自前で使っている。この状態だとVCの方がいい結果を出す
161:デフォルトの名無しさん
05/07/19 07:39:32
>>145
SSEを使用しない場合__intel_cpu_indicator = 1(というか8bit以内)
じゃないといけないのでは?
-1だと、SSE使用のパスに分岐してしまうような。
162:デフォルトの名無しさん
05/07/19 09:18:29
>>161
>>142に
>先にIntelチェックをしてから、CPUの機能をチェックしているので
とあるのでSSEチェックよりも前の話かと思ったんだけど…?
163:デフォルトの名無しさん
05/07/19 10:57:05
>>162
>(拡張命令を)使わないなら
>__intel_cpu_indicator = -1;
ここが間違いではないかと言っているのです。
あと、拡張命令を使う場合も-512(0xfffffe00)だとまずいです。理由は(ry
164:デフォルトの名無しさん
05/07/20 06:39:49
>>163
オリジナルの__intel_cpu_indicator_initみると、CPUの認識で
__intel_cpu_indicatorに入れる値はSSE2以降が0x400、SSE3以降が0x800と
なるみたいですね。
165:デフォルトの名無しさん
05/07/24 14:28:55
バージョンごとに変えてきていたりして。
166:デフォルトの名無しさん
05/07/24 17:21:54
うひゃあ、こりゃ使えんなあ
167:デフォルトの名無しさん
05/07/31 23:10:13
毎日毎日文句言ってintelチェック無しのを送ってもらった
168:デフォルトの名無しさん
05/08/02 00:50:27
AMD乙
169:デフォルトの名無しさん
05/08/04 03:22:24
アップデートあげ
170:デフォルトの名無しさん
05/08/04 23:07:49
ねえ、VC8って何のこと。.NET2005のこと?
おせーてつかーさい。
171:デフォルトの名無しさん
05/08/06 21:11:31
URLリンク(ads.slashdot.jp)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5385日前に更新/84 KB
担当:undef