トップページ⇒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 ページからダウンロードしてくるファイルが違うだけです。)

ダウンロードする際に入力したメールアドレスにインストール時に必要となる
ライセンスキー情報が送られてきます。
0261login:Penguin02/08/22 08:06ID:/FBXdmt+
>>260
7.0 でたんですか?
ギャワー。
0262login:Penguin02/08/24 17:25ID:PfaGDlQx
まだ、7.0はベータであります。
0263login:Penguin02/08/30 03:54ID:aneTlj2c
7.0
どこにあるんだ〜!!
0264login:Penguin02/08/31 22:23ID:Jrnphh7d
https://premier.intel.com/
あくまでも開発者向きのプレミアソフトの評価検証、デベロッパ支援だよ。
0265login:Penguin02/09/01 08:33ID:gmMMYJwB
普通にregistしてれば知ってるはずだけどなー。
0266login:Penguin02/09/03 07:17ID:WnJhOOM2
>>264,265
無料登録ではでてこなかったです。
もしかして商品買われていますか?
0267login:Penguin02/09/03 21:14ID:Tq9T9U83
いんにゃ、買っていないよ。もしかして大学は別格?
0268login:Penguin02/09/03 21:15ID:Tq9T9U83
それとも、山ほどバグレポを送ったからかな?
0269login:Penguin02/09/07 01:41ID:c6bP3AxY
SX系のスパコンみたいにlinuxでもjobを管理するjsubのようなコマンドって
ないんですかねー?
intel fortranがめちゃ使えるのでlinuxでもスパコンとおなじようなこと
できたらいいなー。
0270login:Penguin02/09/07 03:10ID:a8rKmADv
dqs
pbs
0271login:Penguin02/09/07 04:18ID:/NB2PEZ9
うちはgnqsで十分
0272login:Penguin02/09/07 06:37ID:0xFRXbF3
dqs ってどこで配布してあります? 昔のバージョンをつかってるのですが。
0273login:Penguin02/09/07 13:04ID:Y2eyZ6jb
>>272
http://www.scri.fsu.edu/~pasko/dqs.htmlに3.3.2ってのはあるが
READMEに2000年12月で開発終了とかなんとか…
0274login:Penguin02/09/07 13:22ID:0xFRXbF3
ftp://ftp2.scri.fsu.edu/pub/dqs/
にはアクセスできないんですよね。connection refused とか出て。
かろうじて archive は残ってますが。
0275login:Penguin02/09/08 00:07ID:tz8uOh0c
DQSの使い方解説してる所を教えてください
0276login:Penguin02/09/08 02:14ID:SvqdSrFV
>>274
ftp://ftp2.scri.fsu.edu/old_ftp_users/pub/dqs/
ちなみにこっちですが
0277login:Penguin02/09/08 06:43ID:6UAJnaFt
うーむ、やっぱり connection refused です。
yahoo! からかなぁ。
276さんありがとうございます。
0278login:Penguin02/09/08 07:16ID:qdgWDnqi
>>275
man DQN
0279login:Penguin02/09/08 11:54ID:ofarZynG
dqsってネタかと思った・・・
0280login:Penguin02/09/08 14:33ID:V+CyUlbE
ftp2.scri.fsu.edu
に直接FTPコマンドでログインすればいけますね。
ブラズザからだとムリみたいです。
一応DLしましたが、インストールできるかな・・。

シェルの書き方などはどこを参照すればいいんでしょうか?
0281login:Penguin02/09/08 14:38ID:6UAJnaFt
% ftp ftp2.scri.fsu.edu
Connected to ftp.csit.fsu.edu.
220 ProFTPD 1.2.4 Server (Debian) [ftp.csit.fsu.edu]
Name (ftp2.scri.fsu.edu:maho): anonymous
331 Anonymous login ok, send your complete email address as your password.
Password:
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (144,174,128,48,5,132).
ftp: connect: Connection refused

くそっなんでうまくいかねーんだ?
password もちゃんといれてるのに?
0282login:Penguin02/09/08 14:43ID:7+JaCJ9p
>>281
PASV モードのコネクションが拒否されてる。
PASV では接続出来ないサーバなのだろう。
0283login:Penguin02/09/08 15:34ID:xG1yGil2
>>280
shとかcshのソースよめ
0284login:Penguin02/09/08 16:35ID:6UAJnaFt
>>282
ありがとう。たしかに passive mode やめたら get できました。

0285login:Penguin02/09/11 16:45ID:Ye+Ngz+T
日経Linux の記事読んだ? つーか、あんなプログラムの最適化
比較されたってなんにも解らんぞ。期待して損した。
0286login:Penguin02/09/11 21:41ID:7ec/JA8x
itanium2ホスイ。。。
0287名無しさん@Emacs02/09/11 22:14ID:LD6k8Cy/
日経Linux
円周率計算でベンチマークテストでもやればよかったのにな
0288login:Penguin02/09/11 22:48ID:Ye+Ngz+T
ホンマ。めっちゃ無理な記事やんか。つーか、そんなバカなプログラム
書く奴いねーよ。そんな最適化なんぞ見たくもねぇ。
SSE2 使うところも、ライブラリで見せてくれんし。パイプラインを
どう使いこなしているか、そんなんがみたかったんやけどな。
実は、見えにくいインストラクションの並びが実にペナルティが低いとかさ。
0289login:Penguin02/09/11 23:19ID:gERs7rWD
立ち読みしてガッカリだったね。 >日経Linux
mozillaとかOpenOffice.orgとかコンパイルしてみてベンチマーク
取って欲しかったよ
0290login:Penguin02/09/14 21:55ID:nz4/+CVH
IA-64用のコンパイラは、C++もFortranも、まだまだ64ビット用
CPUのものとしてはできそこないだ。
LP64モデルを採用しているが、配列の添え字式の計算がIntで32ビット
らしく、2GBを越える配列が取れないなど、さまざまな問題点がある。
0291login:Penguin02/09/14 22:04ID:nz4/+CVH
ちなみに他社のコンパイラの例としてSGI社のものは、
-64というオプションをつけて64ビットアドレス用として
コンパイルすると、LP64モデル(つまりIntは32ビット)
ではあるが、配列の添え字計算ではLongとして計算される
ようで、あとはOSの関係なのか40ビットのアドレス空間を
使える。つまり1TBまでの配列がコンパイラに食わせる
ソースのレベルでは取れるのだ。
#
AnsiのCの解説書などを読んでみたが、どうも、たとえばCの配列
の添え字式はIntであるという風に読めるので、そのとおりに
すると、ILP64ではないLP64のメモリモデルだと、
ポインターは64ビットなのに配列の添え字は正負あって32ビット
までになってしまう。ぜひとも、64ビットの添え字式を使える
ようにして欲しいと交渉したい。
#
IA-64用の場合、IntelのCコンパイラにもILP64モデルになるように、つまり
コンパイラオプションで整数が8バイトになるよう指定が可能
となるようにして欲しいと交渉したい。
今のIntelのeccコンパイラには、なぜかLongとPointerが8バイト
になるような指定をするコンパイラオプションがあるとオンライン
マニュアルにはかかれているし、実際おぷしょんを受け付けるの
だが、本来Linuxの上でeccコンパイラは試してみたところ、
最初からLP64であるので、このオプションを指定するまでもなく
そうなっているなど、理解に苦しむものが多い、わけがわからん。
0292login:Penguin02/09/14 22:15ID:xbXyt3h1
来月、LinuxMagazineでもベンチマーク結果載せるみたいだけど、
これも期待できないかな?
Intelが、日経とアスキーに同時に機材貸し出ししたのが丸見えで萎え。
0293maho02/09/15 12:18ID:7i0e2a3c
>>291
御意。Alpha の gcc やったらどうなんでしょ? どなたかご存知?

>>292
ある意味どういう最適化をしているかというのがバレるからあまり
書きたくないのかも知れないですね。意味ねーじゃん。

OpenOffice.org のコンパイルはまだ厳しいしょう。gcc でも compiler の
バージョン依存の問題が多いので。Xはコンパイルできて然るべきですが。
0294login:Penguin02/09/15 12:43ID:PyOM4RId
bcc(1) bcc(1)
NAME
bcc - Bruce's C compiler

DESCRIPTION
Bcc is a simple C compiler that produces 8086 assembler, in addition
compiler compile time options allow 80386 or 6809 versions. The
compiler understands traditional K&R C with just the restriction that
bit fields are mapped to one of the other integer types.

BUGS
The bcc.c compiler driver source is very untidy.
The linker, ld86, produces a broken a.out object file if ...

0295maho02/09/19 09:02ID:+RmgTTgR
新しい ifc, icc でたな。bugfix らしい。また ports 更新かよ。
つかれた。
0296login:Penguin02/09/20 10:29ID:t21caENn
まほたんが荒んでいく……
0297login:Penguin02/09/21 00:24ID:b0RwualT
ifc や icc はポーツには入れられないでしょう?
0298login:Penguin02/09/21 00:52ID:b0RwualT
Celeron1.7GHzで、MKLライブラリーを使って、ある種の行列積を計算
させました。単精度で3.4GFLOPS、倍精度で1.7GFLOPS近い値がでました。
ifc で同等のプログラムを書いて最適にコンパイルしてみると、
1割ないし2割それよりも低い性能ですが、まあ満足のいく速度がでてます。
最近のPC用のCPUは早いですね。
0299maho02/09/21 03:55ID:viZ9mmJo
>>297
僕、FreeBSD の ifc の ports の作者ですけど。 maintain もしてます
けど... ちなみに icc は FreeBSD native の object を吐ける。
ifc も本来そうなんだけれど、
WRITE とか OPEN とかを使うと call するので、nonstdlib をリンク
せねばならん。つまり FreeBSD 用のライブラリが必要。多分 gnu fortran
のライブラリを真似ればなんとかなるんだろうけど、面倒じゃ。
Lapack なんかはそういうのを使ってないから ifc でコンパイルできる
と思うんだけどね。あとスタートアップルーチンとかも必要だし、
それは何しているか解らん。Fortran90 以降には興味ないし、なんかなぁ。
組み込み関数は一部、prototype definition みたいなのがあるけど、
これの意味は調べてない。多分 Fortran90 のなんかなんやろうな。

こういう作りをみると、Linux 以外での IA-32 のコンパイラも
作りたかった、ような印象を受けた。

>>298
何をおっしゃりたいかちょっと意味わからんかったです。
高度に最適化された BLAS と、適当に書いたお手製 BLAS の比較ですか?
そもそもプログラムの組みかたが違うから、単純な比較は避けた方が
良いと思いますよ。MKL と ATLAS の比較なら理解します。
それとも、素直に書いても ifc なら 1-2割低いだけに留まるから
最適化技術がすごいというのなら、理解しますが。
MKL と ATLAS なら ATLASのほうが速いと思います。最近バージョンアップして入れ替わったのかな? どっちにせよ、パフォーマンスは
似たりよったりでしょ。
0300login:Penguin02/09/21 04:48ID:b0RwualT
ごく安物のCPUで、結構な性能がでるようになって、結構な時代に
なったもんだとはおもわんかね。PDP-11のあるモデルなんか、
FloatingAccelarator機構をつけても、10〜20KFLOPS程度しか
出なかったし、VAX-11・780でも0.1〜0.2MFLOPSぐらいしかでなかった。
日立の最初のスパコンS810が600MFLOPSピークだったんだが(1985頃?)。
2GFLOPS出るようになったのはS820からだったかな。
0301maho02/09/21 08:25ID:viZ9mmJo
>>300
スパコンはさわったことがないから、
直接は気持がわからんですけど。KUBOTA の TITAN かな 高校の頃。
まぁ僕も昔しょぼいパソコンでいろいろ計算やってました、ほんと、遅かったです。レイトレーシングなんか何日もかけてという感じでしたね。
だから、なんとなく気持はわかります。

でもスレちがい...
0302login:Penguin02/09/21 15:22ID:+UfjVmmp
誰か、gnqsのスクリプトファイルの書き方教えて・・・。
cshとかって使えるの?
0303login:Penguin02/09/21 18:05ID:86dc7Wyn
>ごく安物のCPUで、結構な性能がでるようになって、結構な時代に
>なったもんだとはおもわんかね。
結構なこって。
んで。その分、解析精度の要求が高まる罠。
まだまだ性能あがってくれないとねー。
030430202/09/21 19:06ID:+UfjVmmp
gnqsインストールしてifcでコンパイルしたプログラムを走らせたんだけど、
ファイルの入出力に関してわからないので教えてください、
スクリプトファイルは

************************

#!/usr/csh
# QSUB -q testq
# QSUB

setenv F_FF10 file1
setenv F_FF20 file2

./a.out

***********************

こんな感じで、file1とfile2が出力されてほしいのですが
できません。ifcの環境変数はF_FFではないのでしょうか?


030530202/09/23 19:25ID:XpJsF3mg
スクリプトを工夫して解決いたしました。
板よごしてすみませんでした。
0306ldb02/09/24 14:51ID:V9bNhhGg
付属のデバッガldbを使用すると変なエラー出て使えない。俺だけか?

環境
OS:Redhat7.2ja
Compiler Version:6.0.1

エラー内容
次のようなプログラムを作成
#include <iostream>
using namespace std;

int main(){
cout << "Hello World!" << endl;

return 0;
}
次のようにコンパイル
% icc -o hello hello.cpp -g
で、デバッグする
% ldb hello
すると次のようなエラーが出て強制終了する
Linux Application Debugger for 32-bit applications, Version 6.0, Build 20020521.Copyright (c) 2001-2002 Intel Corporation. All Rights Reserved.

Assertion failure: 0, file ../../src/ST/intel/iCUInfo.C, line 409
このあといろいろ試した結果、coutをprintfに置き換えるとうまく動いた。
またSTLを使用したプログラムを作成しデバッグをかけてみたが、
同じエラーで終了してしまう。つまりC++プログラム特有の文を書くとだめになる?
0307maho02/09/25 00:05ID:WbD3HXSr
結局 ports は更新した。以外と簡単に済んだよ。commit もすぐ済んだし、
まぁ意味があるかどうかはしらん。/usr/ports/lang/ifc って
だれが使うんだろう?
もうこわれてないよ。
>>306
なるべく最新のものにしてみれば?
030830602/09/25 14:56ID:mzUu5Ze3
>>307
これは最新ものです。正確に言うとバージョン6.0.1-304です。
mahoさんはバージョンいくつでしょうか?
そして同じプログラムでエラーが出ませんか?
0309maho02/09/26 08:22ID:I4VU93X1
>>308
debugger は FreeBSD では使えないのです...お役に立てなくて残念です。
031030402/09/26 10:56ID:N9OG6F/V
>>309
そうですか…。わざわざありがとうございます。
0311login:Penguin02/09/27 09:55ID:+6HsjsFH
ifc6に関して悩んでます。情報お持ちの方いらっしゃいますか?

dictionary fileを使って、外部モジュールをuseする際、
*.pcファイルがどうしても必要なのでしょうか?
無い場合にはどうしようもありませんか?

dictionary fileとarchiveしかないライブラリを使いたいのですが、
-Iでパスを指定するだけでは、Error FCE22が出てしまいます。

CompaqやSGIで*.modに相当するのが*.dですよね。。。
0312  02/09/27 10:28ID:u29c/11w
ifc7 では、SGIのと同じ *.MOD の方式が採用されるようです。
(今のベーター版ではそうなっている)
0313login:Penguin02/10/02 12:34ID:Fljz+3D+
ifc6-6.0-140からifc6-6.0.1-304にアップグレードしたんだけど、
パフォーマンスが数パーセント落ちているような結果になってる。
ちょっと寂しい。。。
Windows版はもう正式にifc7が出てるみたいだけど、Linux版はまだかな?
それに期待したい。
031431402/10/13 07:10ID:5zweLQtX
PGPLOTをifcで使用している人はいませんか?
pgplot/sys_linuxの中にはifc用のファイルがないのですが、

absoft_gcc - The Absoft f77 FORTRAN compiler and Gnu gcc C compiler.
f77_gcc - The f77 [f2c] Fortran-to_C converter and Gnu gcc C compiler.
f95_gcc - The NAGWare f95 FORTRAN compiler and Gnu gcc C compiler on an elf-system.
fort77_gcc - The fort77 [f2c] Fortran-to_C converter and Gnu gcc C compiler.
g77_gcc - The GNU g77 FORTRAN compiler and Gnu gcc C compiler on an elf-system.
g77_gcc_aout - The GNU g77 FORTRAN compiler and Gnu gcc C compiler.
nag_gcc - The NAG f95 FORTRAN compiler and Gnu gcc C compiler.
pgf77 - The Portland Group pgf77 FORTRAN compiler and pgcc C compiler on Linux.

お返事お待ちしています!!!
0315login:Penguin02/10/13 20:44ID:6hhGXCde
PGPLOTってなんでしょうか?
0316login:Penguin02/10/14 18:28ID:+zxSyeGL
可視化ライブラリ
0317login:Penguin02/10/16 14:59ID:PYlI20eA
あそびでxscreensaver(with-gl)をiccでこさえてみました。
笑っちゃうくらい速い。
0318x02/10/16 15:04ID:9AlnI0Ke
これって本当か?

↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm
0319login:Penguin02/10/18 22:17ID:q1kWLUal

iccでkernelやXをコンパイルできた人いますか?
0320login:Penguin02/10/19 00:04ID:yEObizWo
笑っちゃうくらい速いって、どうして笑うのですか?
体感何倍早いのですか?
0321login:Penguin02/10/19 10:52ID:BhEBgiKe
iccのclock()がうまく使えない。すべて0になってしまう。ANSIとどうちがうのでしょうか。
0322login:Penguin02/10/19 11:51ID:oME5iqrl
>>320
gccでコンパイルオプションをいくら変えてもはやくならなかったのが
iccではさっくり速くなったので。-O3 -tpp6 -axK -static.

0323login:Penguin02/10/20 14:36ID:7EbOELLI
>>292
0324login:Penguin02/10/26 01:08ID:753aeObx
http://www.intel.com/software/products/compilers/beta/welcome.htm
0325crazy_u02/11/02 09:33ID:EHl1F/UI
>>324
初めて書きます.
Intel Compiler v7.0のベータ版をFEM解析プログラムでテストしてみました.
v6.0に比べて,

1.コンパイルは速くなりました.
2.コンパイル時に必要とするメモリーは半分以下になりました.
3.連立方程式の解法はP4用に徹底的にチューニングしたので,もう速くはなりません.(CPUがフル稼働
状態)
4.その他の部分は2〜4割速くなりました.(あまりチューニングのしようのない準備計算部分や要
素レベルの計算)

推測ですが,

1.prefetch機能が向上した.
2.グローバルな最適化機能が向上した.
 (A, B, Cの計算ブロックがあって,AとBは独立に計算できてCでは両方の計算結果が必要な場合に,あいているレジスターがあればAとBは非同期にほぼ同時に計算を行ないCで同期をとる.)
3.分岐命令を含むコードで,あいているレジスターがあれば,分岐径路の確定を待たずに処理に入ってしまう.
 分岐径路が確定した段階で分岐しない部分の計算結果は捨てる。
 (Itainum用の64bit版の方はこの機能が以前から入っている.)
4.不変式の先行評価機能が向上した.

の幾つかが行なわれるようになったのではないかと考えます.
(高性能なRISC計算機やスーパーコンピュータを使ったことがある人はこれらは分かりますね)
0326crazy_u02/11/02 09:52ID:EHl1F/UI
続きです.
compiler optionは

# Intel Fortran Compiler v7.0
# Penteium II
#OPT_MACHINE= -tpp6 -xi
# Penteium with MMX
#OPT_MACHINE= -tpp6 -xM
# Penteium III
#OPT_MACHINE= -tpp6 -xK
# Penteium 4,Xenon
OPT_MACHINE = -tpp7 -xW
OPT0 = -O3 -prefetch -scalar_rep -prec_div -unroll -fno-alias -fno-fnalias -lib_inline -nobss_init -Zp16
OPT1 = -implicitnone -lowercase -Vaxlib -vec_report3 -V
FFLAGS = $(OPT_MACHINE) $(OPT0) $(OPT1)
COMP = ifc
LD = ifc
です.-ipも効かせたいのですが計算が壊れることがあるので使ってません.
0327login:Penguin02/11/02 19:16ID:EdkYccpG
GNUと互換性を確保してkernelとかコンパイルできるようになるのだろうか??
どっちかっていうと数値計算向けのコンパイラ?
0328crazy_u02/11/03 10:25ID:49bsvkUh
'Improved gcc source and binary compatibility'と説明があるので,コンパイラとそのライブラリにバグが無ければ,kernelをコンパイルしてGNUと互換性を保って稼動するのは可能なのではないでしょうか.
とにかく,自分で試してみる方が良いと思います.
ただし,コンパイラは’魔法の杖’ではないので,元のコードが優秀(無駄のない最適化コード)であればあるほどコンパイラの違いによる性能差はでなくなります.
Fortranのユーザは数値計算屋なので数値計算向きに特化して欲しいと考えますが,CやC++のユーザのなかでは数値計算屋は少数派なのでそこに特化した商品をIntelがつくるとは考えられません.
グローバルな最適化などは重たい数値計算(ほぼいつもすべてのレジスタは大忙し)よりは遊んでいるレジスタができやすいアプリケーション(業務系や制御系?)で効いてくると思います.
私もLinuxシステムそのもののチューニングには興味があるのでただいま勉強中です.
来年,FSB667のチップとそれに対応したM/Bとメモリがでたらもう1台組立てるつもりです.そうしたら,現在のマシン(P4_2.53GHz)を実験機にしてkernelやglibcをiccでコンパイルしてみます.
(安定に稼動しているマシンでkernelを触るのは怖いので)
0329login:Penguin02/11/03 10:48ID:l8t+iVCu
>>328
結果報告よろしくたのんます
0330login:Penguin02/11/04 09:56ID:1FXAr5v4
ifc7.0は,athlonは対応しているんですかね?

過去のログでは,ifc6は対応していなくて,ifc5は対応して
いるとありました.
新しいnforce2のチップセットで,DDR400のメモリ2枚刺しで,
メモリのバンド幅が6.4GB/secというものに引かれて一台組み
立てたいと思っているんですが,ifcが使えないのでは意味ない
ですから...
0331login:Penguin02/11/04 10:11ID:+kRs8LO6
自分で試せよ。
なんかずうずうしいな。

586互換なら大丈夫なんじゃねーの?
ひょっとすると蹴られるかもしんないけど。
0332login:Penguin02/11/04 12:00ID:gL+5bja7
ビデオチップ搭載でない場合FSB帯域幅を超えるメモリ帯域は・・・
033333002/11/04 14:34ID:4afCMgT6
>>332

確かにシステムバンド幅を超えているスピードのメモリバンド幅って
いうのに、何かメリットはあるのかと考えてしまう。
が、HPのItanium2は、システムバンド幅6.4GBに対してメモリバンド幅は8.4GB。
何かいいことあんのかな。
0334login:Penguin02/11/04 14:39ID:2zKwI8RZ
>>333
メモリバンド幅はバーストした時のピーク性能だから、
実効値はずっとずっとずっと低い値。
0335login:Penguin02/11/07 16:10ID:e6eeEJ5O
icc6.0は、Athlon MPで動いたよ。
M/B Tiger MP
CPU Athlon MP 1.2GHz
SuSe 8.0
0336login:Penguin02/11/08 01:25ID:U6l7cdxw
Q1:HyperThreadを有効に使えた例あるかい?
Q2:DebianGNU/Linuxでは intel Compiler はうまく使えないけど、
将来なんとかならないの?
0337login:Penguin02/11/08 01:52ID:3nm7+jZ5
A1:計算屋ですが、HT使ってもパフォーマンスは変わりませんでした。
なぜなのかは専門家じゃないのでわかりません。
A2:ifcならpotatoでもwoodyでも使えていますが?なにがどう上手くいかないのか
書いたら何とかしてあげられるかもしれません。
0338login:Penguin02/11/08 03:19ID:xnWba0Fk
HTまともに使えるようになるのはkernel2.6まで待たなきゃならんと思うよ。
2.4後期でも一応の対応は出来てるかもしれないけど、
スレッド廻りがもともと弱いカーネルだし。

2.5ではある程度使えるという話しは聞くけど。
0339login:Penguin02/11/08 11:44ID:UuLgSvtg
HTってsmpとして使えるんでしょ?
0340login:Penguin02/11/08 22:07ID:ccmxL41c
>>325
やっぱりにわかにはそんなコードが出ているとは信じられない。
僕の知っている限り、Pentium 4のコードが高速なのは SSE2 を使っている
場合だが、特殊関数(sin,cos とかね)ライブラリに渡して高速に
なっているようだ。
そこらへんはライブラリを disassemble しなければからくりはわからない。

また、日経Linuxの記事(買わなかったけれど)によると、計算をそもそも
省ける場合の最適化がうまいとのことしか書いていなかったが、
これは本質的な最適化ではないよね。
というかそんなプログラム書かないっつーねん。

やっぱりアセンブラの出力を見て直接比較したいっす。1. 2. 3. 4.
が実際にどう行われているか、とても見たい。どなたか公開できる
サンプルを持っていらっしゃる方はいますか?

>>337
SSE2 や FPU は threading できないようですね。だからあまり HT
は効かないということではないでしょうか。
0341login:Penguin02/11/09 07:04ID:IPBiP7vy
つまり、数値計算であってHT以前にもう性能がCPUの限界近い場合には
HTを入れても整数は速くなるけど、FP演算は早くならないということですか?
0342crazy_u02/11/09 10:07ID:pvpo5FMk
HTはsingle threadのプログラムが速くなる技術ではなく,CPUリソースに余裕があるときに複数のthreadを同時に処理するものです.
SMP用のmulti-threadのプログラムにしないと意味ないと思います.技巧ではなくて手法(FEMなら領域分割法やsupernode algorithm等)を研究すべきです.
HTの分かりやすい解説が
http://www.atmarkit.co.jp/fpc/rensai/zunouhoudan016/hyperthreading.html
にあります.対応ディストリビューション一覧がコンパック(現在はhp)のサイト
http://linux.compaq.co.jp/support/doc/option/etc/ht_capability.html
にあります.
BIOSの設定はHTはonになっていますか? SMP用のカーネルで起動してますか? multi-thread programingしてますか?
今,Itanium2をターゲットにして「実践マルチスレッドプログラミング」(アスキー,1998年3月発行)で勉強してます.
来年,第3四半期に開発コードDeerfieldというItanium2の廉価版のチップがでる予定.価格はXeonよりちょっと高めだそうです.
0343login:Penguin02/11/09 10:58ID:IPBiP7vy
おお、よく分かりました。これはメモリのレイテンシーをマルチスレッド
により(可能なら)吸収して、スループットを向上させようという
昔のデネルコア社のHEPという実験システムの延長線上にあるような
技術ですね。
0344 02/11/09 19:09ID:cxRy6Ah9
ところで皆さん、高速化の為にコードを工夫したりしてますか?
詳しい人いたらノウハウ教えてください。
0345login:Penguin02/11/09 19:16ID:qbAg7zaY
来週3.06HTがでたら"HT+icc人柱"大会をやりたいっす
現在サンプルコード募集中。
0346login:Penguin02/11/10 14:57ID:jAjpoqqV
まずは、Linpackベンチマークを見たいね。HTが、ページングやTLBミスの
待ち時間を果たしてうまく吸収して性能を上げることができるものだろうか、
とか。
0347login:Penguin02/11/10 15:28ID:0MPyrCTN
すいません、HTの話が出たところで。
P4-Xeon SMP環境で使ってる人いませんか?
2ジョブ実行でどれくらいの並列化効率が得られてますか?
私のところは50%即ち、CPU1つのときと変わらんという結果です。
kernelは2.4.18-17.7.xsmpで、HTオンで/proc/cpuinfoに4つの
CPU, HTオフで2つのCPUがちゃんと見えてます。
なお、ベンチの結果はHTオンでもオフでも変わりません。

0348crazy_u02/11/10 16:41ID:ifwKEp6r
「2CPUに2JOB」と「1CPUに2JOB」が変わらなかったということでしょうか?
「2CPUに2JOB」と「1CPUに1JOB」が変わらなかったというのなら正常だと思いますが.
以前,1週間だけDual Xeon (ワークステーション用のi860チップセットなのでHT機能なし.メモリはRIMM)でテストしたことがあります.
single threadのJOBを2個同時にrunさせても,1CPUで1個のJOBをrunさせた場合と殆どパフォーマンスは変わらなかったように記憶してます.(つまり2個のCPUはそれぞれ独立に1JOBずつ担当している.)
Intel Compilerで自動並列化オプションをつけたコードの場合は所詮末端での並列化なのでオーバーヘッドが喰われるせいか殆ど効果なし.
手法を検討して上位レベルでmulti-thread化したコードを書かないと効果なさそうです.
コンパイラは1CPUのときよりも軽快で,topコマンドでみていると2CPU使ってコンパイルしていました.(コンパイラはmulti-threadのコードなのでしょう.)
OSはRedHat Linux 7.2 (kernel-2.4.7-?smp)でした
0349login:Penguin02/11/10 16:55ID:g4m5WDlb
http://pc3.2ch.net/test/read.cgi/jisaku/1033748563/
こっちの方が詳しいし。
スレは死に気味だけど、一度見といた方がいいかも。
035034702/11/10 20:09ID:0MPyrCTN
>>348
>「2CPUに2JOB」と「1CPUに2JOB」が変わらなかったということでしょうか?
そうです。
ジョブはsingle threadです。やはり、私のところは、何が悪いのか、実質
1CPUになってますね。以前使ってた、PII Dualのマシンで、kernel2.2の最初
の頃ので80%以上の並列化効率がありました。Xeonはきっと、もっといいはず
ですよね。

>>349
ありがとう。早速見てみます。


再び>>348
マルチプロセッサマシンでは、コンパイルのとき、make -j NとしてNファイル
同時コンパイルするという方法もあります。
0351crazy_u02/11/10 23:20ID:ifwKEp6r
>>349
有難うございます.参考になりました.

>>344
稼動するマシンが変わるたびに殆ど常にプログラムには手を入れています.
どの程度のことを知りたいのでしょうか?
例えば,
「RISC 超高速化プログラミング技法」(寒川光著,共立出版,1995年8月発行)
は現在の計算機でも役立つ内容だと思います.Pentium4もスーパースカラー計算機といえると思います.
寒川氏は情報処理学会の論文集へもこの手の論文を多数投稿している研究者です.
私も氏の論文は参考にしてきました.(私はもっぱらvector計算機を相手にしてきましたが)
他にも参考文献があったらお知らせします.
0352login:Penguin02/11/11 00:23ID:dXRwOR+k
低レベルな質問。仮にメモリ帯域を常に使い切っているようなプログラムがあったとして、これを
SMPマシン上でそれぞれのCPUに実行させることは意味がないと考えていいのでしょうか?

>>348
ifc6.0の自動並列化はほんとーに使えなかったんですけど、次のバージョンでも期待は
できなさそうですか?結局、にわかじこみのOpenMPで1割程度は速くできますた。
某所のccNUMAマシンの自動並列化には感動した覚えがあるんですが。。。
0353crazy_u02/11/11 21:48ID:9ykjmpF9
>>352
やはり,普通のSMPのマシンでは意味ないのではないでしょうか.
ccNUMA(アーキテクチャの説明は,http://www.sgi.co.jp/products/pdf/ccNUMA.pdf)や富士通の最新のSMPのスパコンなら問題ないでしょうが....
並列計算で多少参考になりそうなのが(概要しか書いていないが),
http://plaza11.mbn.or.jp/~myoneya/comp/smpmd/smpmd.html

12月か1月にDual Xeonのテストができそうなので,ifc7.0 betaで自動並列化を(全然期待していませんが)試してみます.

>>351で紹介した本はやや学術色が濃くヘビーな内容なので,もっと一般的なところでは(その代わりアーキテクチャに即したチューニングは書いてない)
「プログラム改良学」(J.L.ベントリー著,近代科学社,1989年9月発行)
「C++/C プログラム改善法」(D.スプラー著,トッパン,1993年6月発行)
があります.今なら,もっと良い本が出ているかも知れないので,そういうのがあったら教えてください.
035434702/11/11 22:43ID:MZf6bpFl
kernel-2.4.18-17.7.xsmpで全然SMP性能が出なかった
のですが、Win2Kを入れて、ベンチしてみると、ちゃんと
2CPU使ってるみたいです。
もっと、よく調べてみると、最初に使ったベンチマークが
1本でメモリ帯域を使い切るものだったため、2CPUあって
も性能が上がらないということが分かりました。

--- GogoWinBench 1.28 [2002/11/11 20:11:40] ---
[OS] Windows 2000 Service Pack 2 (5.0.2195)
[CPU] Intel Xeon (Prestonia) * 2 / 2795.5MHz (399.4 * 7.0)
GenuineIntel
Intel(R) Xeon(TM) CPU 2.80GHz
0/0/0/15/2/7
FPU TSC MSR CMOV MMX MMXE SSE SSE2 HT(2)
L1TraceCache 12Kuop, 8Way
L1DataCache 8KB, 4Way, 38787.87MB/s, 2clk
L2Cache 512KB, 8Way, 21333.33MB/s, 18clk
Memory 2048MB, 2179.10MB/s, 430clk
[DLL] GOGO DLL ver. 2.39b for only bench (Feb 28 2002)
[結果] 再生の48.70倍速 / 音響解析あり / 使用機能 MMX SSE
[結果] 再生の85.18倍速 / 音響解析あり / 使用機能 MMX SSE CPU[2]
035534702/11/11 23:16ID:MZf6bpFl
続いて、配列を小さくしてキャッシュに収まるようにしたベンチマークの
複数ジョブの結果です。(kernel-2.4.18-17.7.xsmp)
数字は総MFLOPS(所要時間)です。
     1 job 2ジョブ同時 4ジョブ同時
HTオフ 1067(2.05秒) 2123(2.06秒) 2122(4.12秒)
HTオン 1067(2.05秒) 2133(2.06秒) 2339(3.74秒)

2ジョブ同時では、ほぼ2倍の性能です。HTオンにして、4つの
論理CPUの状態で4ジョブ実行すると、トータル性能が1割ほど
向上しました。インテルが言うには最大3割でしたっけ?

並列化でスレッド数を物理CPUの数より多くして性能向上を
狙うのはなかなか難しそうです。

0356login:Penguin02/11/12 01:03ID:9up4JSu9
ページングしまくりの時には、効くと思われるけど、どうでしょう?
035734702/11/12 12:27ID:Uq+VTKXL
>>356
そう考える理由はなんでしょう?ページングが発生すると
一般に、CPU利用率は激減するので、1CPUでも十分だと思います。
間違ってるのかな?

0358login:Penguin02/11/13 00:20ID:vH9lO9Qf
ページングしまくりのときに、マルチプログラミング(マルチプロセス)が
効くはずなので、そう思ったのですが、もっと粒度が細かい場合である、
ひとつのプロセスの中でスレッドがキャッシュミスしまくりの時にも、
よく効くのかな?
0359login:Penguin02/11/13 00:46ID:6mTv3JvB
一つのスレッドがメモリやディスクのI/O待ち状態に
なったときは、マルチスレッドが有効だと思います。
ただ、これは普通の時分割のマルチスレッドやマルチタスク
で済む話で、HTが有効に働く局面ではないんじゃないでしょうか。

0360login:Penguin02/11/16 11:46ID:p4ZGg3L2
行列計算でVC++6を使ってましたが、Intel C++(Windows版)の購入を検討してます。
行列計算で両者の速度体感の差を経験された方がおありでしたら、教えて下さい。
また、Linux版とWindows版(Win2kで使用予定)の速度体感に大きな差はみられる
でしょうか?
スレ違いですが、プログラム技術@2ch掲示板に行っても「そんなスレありません」
でしたので。


■ このスレッドは過去ログ倉庫に格納されています