CPUアーキテクチャについて語れ Part.13at JISAKU
CPUアーキテクチャについて語れ Part.13 - 暇つぶし2ch82:Socket774
08/10/05 18:04:34 KNap0rF0
1 strand == 1 scalar ~ 1 pixel or vertex
で変動だったら理解できるんだが、例によって計算が合わない気が。

83:,,・´∀`・,,)っ-○◎●
08/10/05 18:05:58 PiRb9Agc
>>78
必要なら、両方を書いてCPUID見てブランチすればいいじゃない。
後方互換のために使うななんて言ってたらいつまでも移行は進まない。

84:Socket774
08/10/05 18:07:58 KNap0rF0
多数あるstrandの中から1 strandを切り出して他と組み合わせたりする。
まあ要するにpermuteするってこと?? そのために用意した概念っていうならまあ理解できるな。

85:Socket774
08/10/05 18:08:43 YrFE5okz
>>83
それはつまりMACオタの言うところの並立じゃん

86:,,・´∀`・,,)っ-○◎●
08/10/05 18:10:20 PiRb9Agc
>>82
Scatter/Gather命令ってのがあって、任意のアドレスから16個の要素を引っ張ってきたり
逆に分解してストアする命令があってだな。


座標がx, y, zならそれぞれxだけ、yだけ、zだけでベクトルを再構成する。

87:Socket774
08/10/05 18:10:58 ToBxbpc8
>>79
> 64xStrandという何か意味的に同質のものが64並列化されてるように思える。

複雑なシェーダプログラムは16way=16strandsに、
簡単でレジスタもちょっとしか使わないものは16wayを4つで64strands、で納得いかない?

>>81
>>82
どこにそんなに引掛ってるのかわからんのだが、
ふつうプログラマって、1ピクセルについてどうこう、とアルゴリズムを考えるんじゃないの?

Strandに対応するプログラムはコンパイル後にはないと思う。
言語によってはソースではstrandのプログラムを書くものがあるかもしれない。
(C*やData-parallel Cみたいな感じ)

88:MACオタ>70 さん
08/10/05 18:12:00 IsV0akqP
>>79
Larrabeeに関してわ、ソフト次第でどうとでも書ける訳すから、SiggraphのIntelのプレゼンわ
一例に過ぎないと思っておけば良いす。
  ------------------
  シェーダプログラマは4要素ベクターを基本に処理を書くよね。
  ------------------
スカラプロセッサでもベクトル処理わ可能す。16-strandsの例わ512-bit SIMDを16個のスカラ
プロセッサとして使用する例と読めば良さそうす。

ベクトル内の要素を取捨選択するための機能わ、ハードウェア的に用意されているす。

89:,,・´∀`・,,)っ-○◎●
08/10/05 18:14:27 PiRb9Agc
>>85
いいや。並立の考え方がそもそも違う。
彼の場合は、「オペランド指定できるレジスタに制限があるほうがレジスタが節約できる」
と思ってて、同じコードシーケンスで併用するものと解釈してるっぽいので。
別に3~4オペランドだからってsrcとdestに同じ値を指定して破壊したらいけないわけではない。

90:Socket774
08/10/05 18:15:19 KNap0rF0
いやいや、ID:WHIgITGQは、3Dグラフィックスのプログラミングにおいて、
1要素だけを操作したり入れ替えたりという行為は殆ど意味がないし実際やらないから
strandの意味するところに疑問をいだいてるんだと。
団子のいうようにScatter/Gatherでメモリ配置を大規模に入れ替えるというレアケースの
ための概念ならまあ理解できる。

91:MACオタ>90 さん
08/10/05 18:22:17 IsV0akqP
>>90
  -----------------
  3Dグラフィックスのプログラミングにおいて、1要素だけを操作したり入れ替えたりという
  行為は殆ど意味がないし実際やらないから
  -----------------
Strandわプログラムの単位で、データの単位じゃ無いす。単一のSIMD演算で実行しないという
だけで、1-wayのStrandで複数要素を扱うプログラムわ可能す。

92:Socket774
08/10/05 18:22:52 ToBxbpc8
けっきょく、Strandなるものを導入しているのは

「Data-parallel programにおいては」
・ハードウェアのSIMD幅などはあまり意識しないでくださいよ
・ベクトルレジスタの要素は同じ種類にしてくださいよ、パックドピクセルみたいなのはやめてくださいね

と主張したいということでしょう
データパラレル用APIやコンパイラが存在して、そうなっているのかもしれないけど

93:,,・´∀`・,,)っ-○◎●
08/10/05 18:22:56 PiRb9Agc
別にレアでもなんでもないぞ。たとえばグレースケール変換なんかじゃしょっちゅうやること。


94:Socket774
08/10/05 18:24:46 ToBxbpc8
MACオタが正しく理解している(T_T)

StrandというのはData-parallelism用語で、20年以上前からあるので、それをそのまま使ったんでしょう

95:Socket774
08/10/05 18:26:48 WHIgITGQ
>>88
64Strandってのが、例えば本当に64Pixel/Vertexのことで、
4要素ベクトルも全部スカラーに分解して、
1Fiber内で64個分並列化する可能性のことを言ってる?
それなら筋は通るけど、ありえないよなぁと思う。

>>90
そうなのよ。
わざわざStrandっていう概念を出すことの必要性に疑問を感じてる。
名前的にもThread(糸)、Fiber(繊維)、Strand(髪)と似てるんだから
概念的にある実行シーケンスの単位の一つのように思える。
でもその実体がSIMDの1wayということが釈然としない。

96:Socket774
08/10/05 18:33:00 KNap0rF0
>Strandわプログラムの単位で、データの単位じゃ無いす。単一のSIMD演算で実行しないという
>だけで、1-wayのStrandで複数要素を扱うプログラムわ可能す。
この2行は最初からわかっているし納得できるんだが。
そもそもSIMD演算で性能を発揮することが前提のLarrabeeでStrandで複数要素を扱うメリットが理解できん。
Scatter/Gather命令で計算しやすいようにデータのレイアウトを高速に変更できるってのが特徴ってなら理解できる。
>>93 3Dゲーでリアルタイムにデータ要素を入れ替えるのは全体の計算量からいったらごくわずかだろ。
単にruntimeとかで扱い安い概念としてのStrandだと思う。

97:,,・´∀`・,,)っ-○◎●
08/10/05 18:33:35 PiRb9Agc
>>95
高級言語とアセンブラの関係、あるいなP6以降のx86命令セットアーキと内部アーキの違い。
ソフトGPUは極度に抽象化されてるんだよ。

98:,,・´∀`・,,)っ-○◎●
08/10/05 18:35:37 PiRb9Agc
>>95
加えて、釈然としない人のために、ネイティブのSIMDをダイレクトに使うための手段を用意してるんだから
気に入らないならそっちを使えばいい。俺はそのつもりだし。

99:MACオタ>96 さん
08/10/05 18:37:07 IsV0akqP
>>96
  ----------------
  そもそもSIMD演算で性能を発揮することが前提のLarrabeeでStrandで複数要素を扱う
  メリットが理解できん。
  ----------------
GPU的用途でわ、「同じ演算」を行う対象が山ほどあるすから、横に並べてSIMD演算でも、
1-wayのStrandを大量に処理しても同じ効率になるのだと思われるす。

100:Socket774
08/10/05 18:39:10 KNap0rF0
う~わかってないなあ。
2D画像処理とか科学技術計算とかなら理解できるけど、
3Dゲームのグラフィックスの計算で、4要素とかのベクトルデータをバラに考えるケースなんて
殆ど存在しないって。
まあ、知らないのだからいいや。次に興味のある話題までROMってるわ。

101:,,・´∀`・,,)っ-○◎●
08/10/05 18:41:12 PiRb9Agc
というか、言ってしまえばLarrabee=GPUエミュレータ

102:Socket774
08/10/05 18:43:29 KNap0rF0
>3Dゲームのグラフィックスの計算で、4要素とかのベクトルデータをバラに考えるケースなんて
>殆ど存在しないって。
そもそもGPUが3Dゲーに異常進化できたのもこの前提があるからなんだけど。
Larrabeeはそこからちょっと距離を置いているように見えるが、
やはりGPUの代替えとして使う限りにおいて、4要素のpixel/vertex, 16要素のtransform行列
あたりの処理の考えはこれまでのGPUからあまり変わってないように見える。

103:Socket774
08/10/05 18:44:41 WHIgITGQ
>>97>>98
つまり高級言語ではプログラマはStrandという単位でプログラムを記述する、
それがコンパイラによって最終的にSIMDの1wayに還元されるということ?
その情報のソースはある?

104:,,・´∀`・,,)っ-○◎●
08/10/05 18:46:16 PiRb9Agc
>>100
その4要素がx, y, z, wとして、バラさないといけないケースならしょっちゅうある。

IntelがSSE4でdppsをサポートするまで内積とるのすら
シャッフルが必要だったし。

クォータニオンの回転も並列実行するにはばらさないと無理


105:Socket774
08/10/05 18:48:37 KNap0rF0
>>104
それはCPU側の話だろ。
今は元々GPU側の処理メインの話してるんだが。
Larrabeeがでても今までCPU側がやってたことは当分CPUでやることになるって。

106:,,・´∀`・,,)っ-○◎●
08/10/05 18:52:23 PiRb9Agc
>>105
ならそれがGPU側でできてしまうLarrabeeはゲームにも強いことになるね。


107:Socket774
08/10/05 18:56:32 KNap0rF0
そりゃ一応今までのGPUよりも融通が利くのがLarrabeeなのだから
使いようによっては面白いものが出来るんだろう。でも性能は高くないと思う。
3DゲーのベンチではGPUばかりが注目されているけど、
ベンチではない3DゲーでのCPUの計算量はバカにはならないことは
DirectXでなんかつくったことのあるやつならわかると思う。

108:MACオタ>107 さん
08/10/05 19:02:58 IsV0akqP
>>107
  -----------------
  でも性能は高くないと思う。
  -----------------
これに関してわ、多少なりとも明らかになるのが一年以上先の話す。

109:,,・´∀`・,,)っ-○◎●
08/10/05 19:03:56 PiRb9Agc
Havokみたいな物理演算やるにも、GPUでできないことをCPUにやらすためにいちいちデータ交換するより
GPUだけでやってしまったほうが有利でしょ。サーフェイス作って転送なんて馬鹿らしいことやる必要ない。


110:MACオタ>団子 さん
08/10/05 19:10:16 IsV0akqP
>>109
豪華な仕様で高性能という単純な時代わ終わっているす。

111:,,・´∀`・,,)っ-○◎●
08/10/05 19:20:12 PiRb9Agc
nVIDIAもIntelもやろうとしてることは同じ。座標計算などCPUでやってた処理をほぼすべて
GPUでやれるようにする。各社がそれぞれ2大物理演算エンジンを買い取ったのはそのため。

AMDはGPU-CPU間のデータ転送レイテンシを短縮するためにFusion構想を打ち出した。

GPU-CPU間のデータ転送が遅いことがネックってのはどこの会社も認識してるわけだ。

112:Socket774
08/10/05 19:31:07 AU8yjwvo
大量のデータ並列化が可能な場合は16個のvertex/pixelで16waySIMDを各要素ごとにそれぞれの要素を入れて、
命令の並びがscalarに見えるように処理するのが一番ALU的に無駄が少ないと思うんだけど。
といってもその辺は自由だからアイデアがあったら各自実装すればいいだけだね。

個人的にはフラグメントシェーダーからフレームバッファとZの参照が可能、A-Buffer実装可能、リアルタイムレイトレに一番近づいてる、
ってだけでも興味がわくけどな。intelならメモリ帯域とキャッシュ周りの性能が足引っ張ることもなさそうな予感がしてる。
唯一ボトルネックになりえるのがテクスチャユニットで、話で聞いた限りでも間違いなく足を引っ張ると思う。

LarrabeeってMCMでうまいこと繋げられるようになってるのかね?なってるならハイエンドも狙えるんじゃないかな。

113:Socket774
08/10/05 19:34:56 hpAFqnz6
>>100
> 3Dゲームのグラフィックスの計算で、4要素とかのベクトルデータをバラに考えるケースなんて
あるって。しかもNVIDIAもATiもそれを考えて作ってるでしょ。
NVIDIAはSIMDだろうがなんだろうが全部ばらして独立したスカラプロセッサで処理してるんでしょ?
ATiに関してはR600のISAのドキュメントを読んでごらんよ。

URLリンク(developer.amd.com)
R6xx Family Instruction Set Architecture
Figure 4-3. ALU Data Flow

114:Socket774
08/10/05 19:36:23 ToBxbpc8
>>100
> 3Dゲームのグラフィックスの計算で、4要素とかのベクトルデータをバラに考えるケースなんて

ぼくちゃんあのね、あれは Data-Parallelism on Larrabee というセクションの記述なの
ちゃんと読もうね

データパラレル的でなくグラフィックスをやりたいのなら、団子と一緒に頑張ってくれ

115:Socket774
08/10/05 19:39:19 KNap0rF0
Larrabeeでハイエンドの性能はねらえないでしょ。
性能って速度のことをいってるわけだけど。
LarrabeeってLarrabeeにしか容易にできなさそうなことをやればGPUよりも速くて、
従来型のゲームグラフィックスだとローエンドのGPUにも劣るとかそんな感じだと思うけど。
単純に今あるようなベンチでミドル~ハイエンドのスコアを期待しているなら、
多分Larrabeeがでるときにアンチスレッドでバカ騒ぎする厨房と化すのは目に見えているな。
そもそもLarrabeeって単体よりもCPUにGPUのやっていた仕事を取り込む方向なわけで。

116:,,・´∀`・,,)っ-○◎●
08/10/05 19:40:52 PiRb9Agc
実際DirectX使ってれば内積とか座標回転なんてしょっちゅう使うぞ。
Intelはどっちに転んでもいいようにCPU側のSIMD命令の大幅強化をはじめました。

117:Socket774
08/10/05 19:42:11 KNap0rF0
ID:AU8yjwvo以外はあまり3Dゲーム処理には詳しくないみたいだね。
そもそもstrandという概念をなぜfiberやthreadなどの概念と並べて説明する価値があったのかという話で、
一応>>113とか>>114とかの言いたいことは理解できるけど、軸がぶれすぎ。

118:Socket774
08/10/05 19:42:18 hpAFqnz6
団子も嫁って。
内積は一命令で済むぞ。

119:Socket774
08/10/05 19:44:09 Pzd6tsBX
GPU自体がDXと共に途上過程にあるため
既存の概念でパフォーマンス云々言っても仕方ない気もするが
なんせ登場まで最低でも一年以上もあるのだし

GPUの構造も現在よりもDX11向けに変更されて
ある程度GPGPU向けに最適化される可能性もあるわけだし
いずれにしろ、楽しみではあるね

現存するGPUでは、たとえばDX10にいち早く対応したnvidiaよりも
さらにDX10に最適化した仕様で、GSの高パフォーマンスを誇ったATIだが
そのGSのパフォーマンスを、S3(のローエンド)がさらに超えてしまう場面があるし
(物量がものを言うものは除く)

URLリンク(jp.youtube.com)
ここの動画(DXSDKサンプル)だと、radeon HD4870が88?fps位でHD2600proが23fps
440GTXが50fpsとなっているようだ(なんで440だけ音楽違うんだよ)
うちの3870と4670じゃ45-48fps位だから、どんな構造になってんのかねChromeは

理論パフォーマンスでは劣っても、構造がそういった世代向けに最適化されている場合
他社のハイエンドGPUすら凌いでしまう場合は、ヒョットシタラあるかもね
(ただし、それより古い世代のパフォーマンスは知りませんよ)

120:,,・´∀`・,,)っ-○◎●
08/10/05 19:45:54 PiRb9Agc
>>118
知ってるよ。内積命令なんて初歩の初歩だもんな。

クォータニオンは?
Intelもなかなか対応してくれないんだよね。

121:Socket774
08/10/05 19:48:24 KNap0rF0
ちなみに計算幾何学の基礎がないやつが3Dゲームを作ると、
いちいち個々の要素を1次元配列にコピーして取り出してみたりとか
無駄なことをやってくれる。
同人ゲーまでは許されるけど、さすがに洋ゲーの主流ではこんなコードは書いてないと思う。

122:,,・´∀`・,,)っ-○◎●
08/10/05 19:50:50 PiRb9Agc
クォータニオン扱ってる大学少ないのが嘆かわしい。
D3DXでサポートされてから専門学校ではチョコチョコ始まったのかな?
回転マトリクスなんかよりよっぽどスマートなんだがなぁ

123:Socket774
08/10/05 19:52:47 ToBxbpc8
>>117
君はゲーム以外のことを知らないし、視野も狭すぎる
(ゲームのことも怪しいが)

しばらくROMれば?

124:Socket774
08/10/05 19:57:05 KNap0rF0
いや、視野がせまいのはフェンス君の方だと思うよ。
なんでもかんでもアーキテクチャの歴史と結びつけないで欲しい。
strandは20年前からある用語だとか、
Data-Parallelism on Larrabeeってところにかいてある。
それは理解できるんだが、LarrabeeをGPUとして使用したときに
strandという単位になんの意味があるの?っていうところが発端なんだけど。
で、Larrabeeは従来型のGPUより柔軟性があるから云々という話をしてる。

125:Socket774
08/10/05 20:00:19 ToBxbpc8
しかし、ほとんど正解なのに、なんで理解できんのかな
よりにもよってMACオタは正しく理解しているし…
文面だけ読めば理解できると思うんだが、余計な思い込みが邪魔してるんかね

126:,,・´∀`・,,)っ-○◎●
08/10/05 20:01:54 PiRb9Agc
>>115
> そもそもLarrabeeって単体よりもCPUにGPUのやっていた仕事を取り込む方向なわけで。

Larrabeeに取り込むのはCPUのSIMD命令に取り込むのと同義だぜ。
Intelの最終構想はあくまでこれだもんね。

URLリンク(pc.watch.impress.co.jp)



このへんではLarrabeeはハッキリと「IA++」という呼び方をしている。
URLリンク(www.custompc.co.uk)

「IA++」は全x86のヘテロジニアスマルチコア構想を打ち出したときにゲルたんが言ったスモールコアの呼称と同じ。

127:Socket774
08/10/05 20:06:53 ToBxbpc8
>>124
> それは理解できるんだが、LarrabeeをGPUとして使用したときに
> strandという単位になんの意味があるの?っていうところが発端なんだけど。

実体としてFiberにまとめられてしまったイメージしか湧かないということだろうけど
プログラミングモデルに意味を見出せないのなら、それまでだね
いくら説明しても無駄だし、君も永遠に理解できない

128:,,・´∀`・,,)っ-○◎●
08/10/05 20:09:15 PiRb9Agc
逆にGPUとして使ったとき以外にStrandに意味はない。
C/C++で使う場合はただの512bitのSIMDユニットの載ってるマルチコアCPUだ。


129:Socket774
08/10/05 20:29:21 KNap0rF0
>>127
全然理解できん。俺がなんか極端な勘違いしているとかなら別だが、
Larrabeeも結局スタートラインは今のGPUが処理しているゲームグラフィックスと
同じ内容を扱うことからはじまるんだが。
Larrabeeの提唱する新しいプログラミングモデルが効果を発揮するのは、
従来型のGPU処理から離れていく未来の話でしょ。
その上でstrandはこう使えるというのなら意味はあるけど。
何が理解できていないのでしょうか?

130:MACオタ>129 さん
08/10/05 20:44:36 IsV0akqP
>>129
  ------------------
  何が理解できていないのでしょうか?
  ------------------
理解できていないとわ思わないすけど、有体に言えばStrandに関してわ気にする必要が無いす。
グラフィックプログラマわ、個々のピクセルなりバーテックスなり、ポリゴンなりに適用する
プログラムを書けば良いす。

それを誰かが対象物全てに適用するようにファイバなりStrandなりに展開してくれる訳すけど、
その世界わ数学的な処理とわ別に汚い世界す。

131:Socket774
08/10/05 20:54:29 KNap0rF0
なんとなくわかってきた。
俺はどっちかっていうと、Larrabeeの命令セットはSSEが長くなっただけみたいな仕様で
最終的な処理は従来のSIMDをグラフィックスの計算に適用するときの扱いと大して変わらないと思ってるんだけど。
そこまでばらばらにStrandには展開されないと思ってる。
Intelの資料にはFiberがGPUのShaderに相当すると書いてあるから、柔軟にスケジュールされるのはFiberの方だと思うが。

132:MACオタ@補足
08/10/05 20:55:52 IsV0akqP
ちなみに、コレわ当人が理解していない場合の典型的反応す。
>>127
  ---------------------
  いくら説明しても無駄だし、君も永遠に理解できない
  ---------------------
通常の返答わ、「済みません。判ってるつもりだったんだけど、説明できるほど詳しくなかった。」じゃ
ないすかね(笑)


133:Socket774
08/10/05 20:55:52 hpAFqnz6
>>120
> 知ってるよ
知ってるんなら内積を「バラさないといけないケース」に挙げるなって。

クォータニオンの積はALU命令が7個になったよ。

0
x: MUL_e T0.x, R0.x, R1.y
y: MUL_e T0.y, R0.y, R1.x
z: MUL_e T0.z, R0.x, R1.w
w: MUL_e T0.w, R0.x, R1.z
t: MUL_e T1.x, R0.z, R1.x
1
x: MUL_e T2.x, R0.y, R1.z
y: MUL_e T1.y, R0.w, R1.y
z: MUL_e ____, R0.z, R1.w
w: MUL_e T1.w, R0.w, R1.x
t: MUL_e ____, R0.w, R1.z
2
x: ADD ____, PV3.z, -PS3
y: MUL_e ____, R0.z, R1.y
z: MUL_e ____, R0.y, R1.w
w: ADD ____, T0.x, T0.y VEC_021
t: ADD T0.x, T0.w, T1.x
3
x: ADD ____, T0.z, T1.w
y: ADD ____, PV4.x, PV4.w
z: ADD ____, T2.x, -PV4.y
w: ADD ____, T1.y, -PV4.z
t: MUL_e T0.z, R0.x, R1.x
4
x: ADD T0.x, PV5.z, PV5.x
y: ADD ____, PV5.w, T0.x
t: MOV R2.y, PV5.y
5
x: DOT4_e ____, R0.y, R1.y
y: DOT4_e ____, R0.z, R1.z
z: DOT4_e ____, R0.w, R1.w
w: DOT4_e ____, (0x80000000, 0.0f).x, 0.0f
t: MOV R2.z, PV6.y
6
x: ADD R2.x, T0.z, -PV7.x
w: MOV R2.w, T0.x

134:Socket774
08/10/05 20:58:31 hpAFqnz6
ミス。PV?とPS?は全部-2してくれ。ずれちゃった。

135:Socket774
08/10/05 21:04:15 ToBxbpc8
>>132
また都合のいい所だけ引用してイチャモンつけるんだから

正しくはこう
> プログラミングモデルに意味を見出せないのなら、それまでだね
> いくら説明しても無駄だし、君も永遠に理解できない


136:Socket774
08/10/05 21:05:46 Lq1xkIVD
PXはCore 2 Duo E8500よりも優秀

Xbox 360のCPUは、Wii と同様に PowerPC をベースにしたプロセッサだが、
3コアで動作クロック3.2GHz を内蔵する。同 CPU は、並列処理においてIntelのコンシューマー向け CPU で最速の
Core 2 Duo E8500(2コア/3.16GHz)を超える性能を持つ

137:MACオタ>135 さん
08/10/05 21:18:39 IsV0akqP
>>135
捨て台詞にまで文句を付けられると出てきちゃうすね(笑)
Larrabeeのプログラミングモデルの話題に参加している段階で、
  ----------------------
  プログラミングモデルに意味を見出せない
  ----------------------
ってのが当てはまらないのわ自明す。

138:Socket774
08/10/05 21:33:45 KNap0rF0
>>133
それはAMDATIのshader実装はこうなっていますと説明してるだけ。
nVIDIAやATIもGPGPU的な進化をしているので、いままでより柔軟性がある実装にかわってきていることは不思議ではない。
おれは従来の3Dゲー処理でわざわざ1要素の例を一度抽出してしまった方が都合がよい処理は殆どないといってるの。
ATIやnVIDIAもHPCとか従来の処理にとらわれない用途を模索した結果の実装だとおもうけど。

139:Socket774
08/10/05 21:53:20 AU8yjwvo
strandってインテルが現在実装している16waySIMDの性能を引き出すDXとOGLの実行レイヤーを解説するのに使ってるだけでしょ?
実際セミナーではstrandやfiberについての解説がなくて、16waySIMDについて既存のハードウェアに照らし合わせて、
4要素以下ののベクトルに対して処理するとき無駄が多すぎる!みたいな勘違い(?)をした人が結構いたみたい。
このハードウェアはintelが提供するDXレイヤーを使わずに独自の実装を許容するわけで、
その場合strandの概念に縛られる必要はまったくない。
16waySIMD、4H/Wスレッド、scatter&gatherと自由なswizzleを使えるメモリアクセスと読み書きが可能なL1/L2キャッシュを使って
好きにプログラムすればいい。当然BinningもFiberも必須ではない。

ただFiberは性能を引き出す上で避けては通れないかなと思うけど。


140:,,・´∀`・,,)っ-○◎●
08/10/05 23:10:13 jHPZNbsT
>>139
おもしれーwww
だが実際は制約は同じっていう。

ただ、Fiber相当のことはネイティブやる場合、ただのソフトパイプライニングでしかない。まじで。

141:Socket774
08/10/05 23:18:23 WHIgITGQ
>>139
それはわかってるって。
strandってどう理解すればいいのか教えてくれよ。

一から例のLarrabeeの資料読み直して見たけど
「Advanced Rendering on Larrabee」に
When strand reads memory...
という記述があるんだけど、いかにも実行系的な書き方だ。
単なるSIMDの1wayという存在ではなさげ。

一方
「Software is the New Hardware」で
We call each of these shaders a “fiber”
という記述もある。
つまりshaderはstrandに対応するわけではない。

ちなみfiberについて
Also called “coroutines”
とある。
この時点でMACオタが正しくて、団子の最初のFiberの主張は間違っていることがわかる。
(>>24で彼なりに訂正したとおれは理解している。)

142:Socket774
08/10/05 23:33:35 KNap0rF0
>>141
? Strand: a program invocation that runs in one SIMD lane
1つのSIMD lane(==32bit scalar値)に対する呼び出し = Strand
Strandはdataそのものではない

143:Socket774
08/10/05 23:41:50 KNap0rF0
Strandをどれだけ有効活用できるかはRuntimeばかりではなく、
Larrabeeの命令セットに深く依存してる。
IntelがStrandという概念を持ちだしている限り、
多分LarrabeeのISAや回路実装はStrandをうまく扱えるようにつくってある。
ID:AU8yjwvoのいうとおり、プログラマ次第で何でもできるといえばそうなのかもしれないが、
実際は性能が出る範疇でしか自由に出来ないから手法はある程度決まってくるかと。
本当につかうかわからないもののための万能なISAや万能な回路実装は自分の首を絞めるだけだから。

144:Socket774
08/10/05 23:44:47 WHIgITGQ
>>142
では例えばshaderで3要素ベクトルの内積があったとして
なにがstrandになるの?

145:,,・´∀`・,,)っ-○◎●
08/10/05 23:45:58 jHPZNbsT
>>141
それはどうも。

ただ、MACヲタの間違いは俺は認めていない。
APIとして提供されるFiberは関数を順番に呼び出すだけの昔ながらのスケジューラ以外のなんでもない。
Larrabeeがやるのは、JITコンパイル時のソフトウェア・パイプライニング。

Larrabeeの場合1つのスレッドで最大の64 Strandを扱うわけではない
64 strandを扱う場合は同じコアで動く4つのスレッドでレイテンシを埋める。
均等に振れば、たとえばレイテンシ:スループット8:1のSIMD命令ならどのスレッドも8:4となり、
もうひとつくらいのファイバーとインターリーブするだけでレイテンシが埋められる。

図を描くか。

→クロックサイクル
スレッド1 ■■■■■■■■ファイバー1[0-15]
スレッド2   ■■■■■■■■ファイバー1[16-31]
スレッド3    ■■■■■■■■ファイバー1[32-47]
スレッド4      ■■■■■■■■ファイバー1[48-63]
スレッド1       ■■■■■■■■ファイバー2[0-15]
スレッド2         ■■■■■■■■ファイバー2[16-31]
スレッド3          ■■■■■■■■ファイバー2[32-47]
スレッド4            ■■■■■■■■ファイバ-2[48-63]
                   ・・・・・・・・・・・・

これを各スレッドからみると単に2つのフローを交互に実行するだけに見える。
各スレッドが使うレジスタ数も均等に消費するので経済的。
で、FiberあたりのStrand数が少ないと、命令のレイテンシに応じて、
インターリーブするファイバーのほうを増やさないといけない。
x64アーキテクチャは各レジスタが4ビット、つまり16本しかないないのでできるだけ節約したい。
64 Strandがベストということになるね。

146:Socket774
08/10/05 23:46:19 ToBxbpc8
いや、ランタイムにはstrandという実体は存在しないんだって
スケジューリングの最小単位がfiberでしょ

147:Socket774
08/10/05 23:48:56 hpAFqnz6
>>138
よく見てほしい。4要素全部同じレジスタから読んでるのなんて頭の2つだけでしょ。
でも実際に書いたコードはBrook+でこんな感じなのさ。
kernel void hoge(float4 A<>, float4 B<>, out float4 C<>)
{
float a = A.x;
float b = B.x;
float3 U = A.yzw;
float3 V = B.yzw;
float ab = a*b;
float uv = dot(U,V);
float3 aV = a * V;
float3 bU = b * U;
float3 UxV1 = U.yzx * V.zxy;
float3 UxV2 = U.zxy * V.yzx;
float3 UxV = UxV1 - UxV2;
C.x = ab-uv;
C.yzw = aV+bU+UxV;
return;
}
これをSSEみたいな制約をつけて書いたとしたらどれだけになると思う?
クォータニオンの例だけじゃない。HDRFormats10のHDRFormats10.fxをGPUSAに喰わせて見ればわかる。
ソースレジスタはてんでばらばら。1命令中に4つのレジスタ使ってる場合もある。

148:Socket774
08/10/05 23:49:41 KNap0rF0
>>144
その回答は俺よりも他の連中が得意なんじゃないの?
俺は一貫して、Strandという概念はLarrabeeを従来のGPU用途以外にも展開できることを想定して
用意した概念であって、従来の3Dゲームグラフィックス用途に対してはあまり意味のない
概念だと思っているから。その点では君とはかなり共通した認識みたいだが。

149:,,・´∀`・,,)っ-○◎●
08/10/05 23:50:03 jHPZNbsT
> kernel void hoge(float4 A<>, float4 B<>, out float4 C<>)

<>を見るとメタプログラミングの変態の血が騒ぐんだぜ


150:Socket774
08/10/05 23:50:11 ToBxbpc8
> スレッド1 ■■■■■■■■ファイバー1[0-15]
> スレッド2   ■■■■■■■■ファイバー1[16-31]

Fiberはこんなふうにスレッドに跨がらねーの
どうして皆こう思い込みが激しいんだ

151:Socket774
08/10/05 23:51:54 KNap0rF0
>>146
ランタイムでスケジューリングするときにstrandという概念があって
最終的なnativeコードでは実体がないとおもってたが違うのか。

152:,,・´∀`・,,)っ-○◎●
08/10/05 23:52:13 jHPZNbsT
>>150
思い込みが激しい奴だな。スレッドに完全従属である必要はない。

153:Socket774
08/10/05 23:52:56 ToBxbpc8
>>147
この例みたいなArray of Structuresじゃなくて、Structure of ArraysなのがLarrabeeのData-parallelism

どうしてもAoSでやりたきゃTask-level Parallelismというモデルも用意されているから、そっちを使いな

154:,,・´∀`・,,)っ-○◎●
08/10/05 23:55:26 jHPZNbsT
ファイバーはStrand数に応じてスレッドで分割実行される。
これを否定するのはAtomのlfenceはNOPじゃない!なみの思い込みでしかない。

なぜ「フェンス君」なんて言われてるかわかるだろ?
ご自分が思い込みで壮大な誤爆をしたの忘れた?

155:Socket774
08/10/05 23:58:52 ToBxbpc8
>>144
1つの3要素ベクトルの内積を計算するプログラムが1strand

156:,,・´∀`・,,)っ-○◎●
08/10/05 23:59:24 jHPZNbsT
4スレッドでファイバーを水平分割して実行するモデルの何が合理的かって
同じ命令列を実行するだけでいいので命令キャッシュが節約できる。
レイテンシを埋めるためのレジスタも節約できる。

縦割りだとどうしてもコードサイズ・レジスタ数に無駄が生じるからな。

157:Socket774
08/10/06 00:01:15 ooDOnZoT
フェンス君の言っていることがわからん。
SoAだったら外積のときはStrandはどうなるやら?

158:Socket774
08/10/06 00:02:14 ToBxbpc8
>>154
1. AtomのlfenceはNOP             ←団子の主張
2. AtomのlfenceはNOPかどうか不明     ←おれの主張
3. AtomのlfenceはNOPではない

団子は論理学の素養がないので、2.の選択肢があることを理解できない

そういうわけで何回おれが訂正しても、おれは3.だと主張している

159:Socket774
08/10/06 00:02:20 ooDOnZoT
まさか内積と外積のときでいちいちデータを並び替えるのか?
どっとも3Dゲーでは頻発だが。
無知な俺におしえてたもれ。

160:Socket774
08/10/06 00:03:14 EqalDJCL
>>153
俺は実際に「3Dゲー処理」とやらで4要素がバラけるのはよくあることだと言う例を
>>138に対して示してるんであって、Larrabeeがどうこうってのは知らないんだが。

161:,,・´∀`・,,)っ-○◎●
08/10/06 00:05:49 Gjt1lbWv
>>158
お前は分析すらしてないだろww
妄想でものを言うな


162:Socket774
08/10/06 00:06:17 ooDOnZoT
>>160
俺(>>138)は>>138に書いているとおり、
1要素に対する操作(=Strand)をわざわざ抽出してメリットがあることは殆どない
といっているだけで、実際GPUで計算されるときにばらけるとかそういう話はしてないんだが。
そりゃGPUの実装の問題でしかない。

163:,,・´∀`・,,)っ-○◎●
08/10/06 00:06:40 Gjt1lbWv
>>159
そうだよ。しょっちゅう並び替えるよ。


164:Socket774
08/10/06 00:08:33 ooDOnZoT
じゃあ従来の3Dゲー処理では使えないモデルだね。
並び替えで時間をくわれて話にならない。
やっぱHPC向けなんだろ。

165:Socket774
08/10/06 00:08:41 Zrg1b2Ja
Fiberの切り替えって単純に避けられないデータハザードとかテクスチャの読み込み待ちなんかで
どうしてもALUが遊ぶ場合に例のドキュメントの手順を踏んでパイプライン埋めますってだけでは?
Fiber切り替えはHWスレッドの切り替えと違ってノーペナルティでは出来ないとすると、
どうしようもないとき以外はFiberのスイッチはしないと思うんだけど。


166:,,・´∀`・,,)っ-○◎●
08/10/06 00:12:07 Gjt1lbWv
>>165
x86コードに落とし込んだときにファイバーの「スイッチ」なんてものは存在しないの

ソフトパイプライニングして交互に実行するだけ。
ただアーキテクチャレジスタが少ないのでインターリーブは最小限にしたほうがいい。

167:Socket774
08/10/06 00:12:14 sZHTe2uz
>>165
正解
ファイバーの切り替えは静的に見積りができるレイテンシーの隠蔽に使う
コンテクストスイッチと見積ったレイテンシーの有利なほうを選べるでしょ

ただし、コンテクストスイッチのペナルティはレイテンシーに隠れるけどね

168:,,・´∀`・,,)っ-○◎●
08/10/06 00:14:01 Gjt1lbWv
ファイバーのインターリーブも隠れるわボケ

169:Socket774
08/10/06 00:15:03 EqalDJCL
>>162
だからちゃんと例示したものは読んで下さいよ。
HDRエンコードどかデコードとかはバラけるんですけど。
ほかにもクックトランス反射はベクトル演算なんて4回ほどの
内積と1回のスカラ倍で、後は全部スカラ演算だし。
Larrabee云々の話は知らんがな。

170:Socket774
08/10/06 00:15:14 sZHTe2uz
>>166
インテルの資料にファイバーはコルーチンだって書いているのに、どうしてそう強情をはれるんだ

171:,,・´∀`・,,)っ-○◎●
08/10/06 00:17:59 Gjt1lbWv
>>170
抽象的な概念に踊らされすぎです。
コンパイル時に1つの直列なコードに変換されます。

x86レベルでも本当にコルーチンとして展開されてると思うのか?
call/retのクロック数考えてみろよ。レイテンシの隠蔽以前の問題だから。

172:Socket774
08/10/06 00:19:33 sZHTe2uz
> call/retのクロック数考えてみろよ。レイテンシの隠蔽以前の問題だから。

call/retって何?

173:Socket774
08/10/06 00:21:09 sZHTe2uz
?Fiber switch on texture request submission
?Saves live registers
?Saves the IP to resume at
?Jumps to the next fiber’s IP
?Next fiber restores live registers
?Gets texture result, continues shading

174:Socket774
08/10/06 00:22:32 sZHTe2uz
団子よ、お前が妄想を書き散らすのは勘弁してやるが
せめてインテルの資料は尊重してくれ

175:,,・´∀`・,,)っ-○◎●
08/10/06 00:25:09 Gjt1lbWv
知らないならいいよ。

ちなみに今のIntelコンパイラはインライン展開可能かつ並列実行可能な関数は展開して
同じ命令列の中でインターリーブして実行することもできます。
ためしにアセンブリの出力みてみましょう。

静的コンパイルだろうと実行時コンパイルだろうとやることは変わらない。
静的の方がやれることは多いけど

176:Socket774
08/10/06 00:26:04 igaDDIad
>>155
> >>144
> 1つの3要素ベクトルの内積を計算するプログラムが1strand

では積の部分を3wayで一気に計算せずに1wayだけ使って
スカラー的に1stepづつ計算するわけ?
(で16個の内積を並列に計算することで16wayを埋めると?)

177:,,・´∀`・,,)っ-○◎●
08/10/06 00:27:45 Gjt1lbWv
>>173
あのさー、それ真の意味でタスク切替。

ファイバーを交互実行する仕組みでのインターリーブとはまったく別物。

178:Socket774
08/10/06 00:29:01 ooDOnZoT
>>169
それを1スカラ要素に着目するとどうエレガントなコードに変身するのか説明してくれよ。
お前だけ全然別の話してるぞ。

179:Socket774
08/10/06 00:31:02 EqalDJCL
>>178
そりゃ違う話してるよ。>>100への反論続けてるのなんて俺だけでしょ。

180:Socket774
08/10/06 00:32:23 ooDOnZoT
>4要素とかのベクトルデータをバラに考えるケースなんて殆ど存在しない
この部分ってのは1要素に対する1連の操作を抽出してもメリットは殆ど内って意味。
キミが書いているのは全然違う話だって。レジスタやALUなんて今の話に関係ねーよ。

181:Socket774
08/10/06 00:33:16 sZHTe2uz
>>177
?Fiber switch on texture request submission


182:Socket774
08/10/06 00:35:40 sZHTe2uz
>>176
概念的にはだいたいその通り

4要素ベクトルを処理するのが、strand
4要素ベクトルのベクトルを処理するのが、fiber

183:Socket774
08/10/06 00:36:46 ooDOnZoT
で、たとえば内積に続いて外積を計算するときは
SoAではどうするの? >ID:sZHTe2uz

184:,,・´∀`・,,)っ-○◎●
08/10/06 00:36:59 Gjt1lbWv
>>181


> ?Fiber switch on texture request submission

テクスチャリクエスト

どこにリクエストする?
メモリだろ?

その間に別の処理をやってしまおうってだけ。
レジスタ退避復帰が伴うので普通のOSのコンテクストスイッチと同じだよ。

185:,,・´∀`・,,)っ-○◎●
08/10/06 00:41:56 Gjt1lbWv
レジスタを二重に持つことでレジスタ退避・復帰を伴わずにやってしまうのがItanium2のCGMT

しかしLarrabeeの場合はレジスタファイルを多重に持つのは既にFGMTでやってしまってるので
あまりリソースを取れない。だから退避が必要なんだ。
1スレッドあたりのレジスタ数がそんなに多くないので退避してしまっても
たいしたペナルティにならない。逆にね。

186:Socket774
08/10/06 00:42:15 ooDOnZoT
外積のあと内積だな。
SoA的にはオペランドを縦割りだあらかじめ全部抽出しといて
一気にかけ算だけバーっとかでやるとかになるんだろうけど。

187:Socket774
08/10/06 00:47:33 EqalDJCL
>>180
> この部分ってのは1要素に対する1連の操作を抽出してもメリットは殆ど内って意味。
実装の部分ではあるんじゃない?
GeForceは抽出してるわけじゃないけど実際1要素ごとにばらばらにして演算するわけだし。
と思ってるから今までISAや実装の話と、実際のエフェクトの話をしてた。
スレの流れから逸脱してるのはわかってるし団子叩きの邪魔になってるのもわかるんだけど、
まあ許しておくれ。

188:Socket774
08/10/06 00:52:00 ooDOnZoT
今1要素ごとにばらばらにするってことが問題なんじゃなくて、
ある1要素に注目してそれに対する操作という考えで、
コードを書くor自動でスケジュールすることに意味があるのかという話。
同じところに積和を何百万、何億回とひたすら計算を繰り返すジャンルなら理解できるが、
3Dゲーみたいにころころ計算内容がリアルタイムにころころかわるジャンルには向いてないと思う。
レイトレーシングのコードはよくしらないからわからん。

189:Socket774
08/10/06 00:55:05 ooDOnZoT
>>188の書き込み内容は微妙だがまあいいや。

190:Socket774
08/10/06 00:56:14 sZHTe2uz
Strandはベクトル演算の1ALU OPの複合化したやつとでも思えばいいのかな
ベクトルと同様に、Fiberにまとめるのをコンパイラやランタイム任せにすれば、境界条件のマスクを考えなくてもいい

ただし、アーキテクチャ上からも逐次方向の局所性を利用しないと性能がでないので、純粋なベクトルモデルではなく、
Strandの導入になったと

191:Socket774
08/10/06 01:02:03 igaDDIad
おれは今日の議論でLarrabee(のD3D実装は)
shader上のベクトル演算も一旦スカラーに展開して、
それを並列に並べてベクトル演算器に流すと理解した。
つまりG80のさらにその先を行くわけか。
ステップ数は増えるが、確かに並列度は高くなって演算器を有効に
使えるのかもしれない。
しかし結果トータルでパフォーマンスはあがるのか?
分岐やテクスチャフェッチはどうなるのか?
そのあたりまだよくわからない部分はある。
レスくれた皆サンキュー、寝る。

192:Socket774
08/10/06 01:02:53 ooDOnZoT
なんだか散々だな。
結局団子の1ファイバ 4スレッドの解釈は間違いだったとことでいいんだろ。
腹切りよろしく >> 団子
そして俺は寝る。

193:,,・´∀`・,,)っ-○◎●
08/10/06 01:12:30 Gjt1lbWv
AoS/SoA変換を重点的に攻めてきたのはAVXもLarrabee新命令も同じ


特にAVXは熱い!やばい!間違いない
前にも書いたけどxmm1, xmm2, xmm3, xmm4のベクトルからxmm5で指定した
4つの要素を取り出してxmm0に格納するのにこれだけでおk
(ただしこれはxmm6をテンポラリに使う)

vpermil2ps xmm1, xmm1, xmm2, xmm5, 2
vpermil2ps xmm6, xmm3, xmm4, xmm5, 3
vpor xmm0, xmm0, xmm6

これならマトリクス演算も高速に出来るってわけだ。

194:,,・´∀`・,,)っ-○◎●
08/10/06 01:13:39 Gjt1lbWv
>>192
はい?

散々言ってるけどハードウェアスレッドとソフトウェアスレッドの意味を混同してね?

195:,,・´∀`・,,)っ-○◎●
08/10/06 01:25:20 Gjt1lbWv
そこで説明されてる「ファイバースイッチ」そのものは普通のOSでのコンテクストスイッチと同じこと
何百クロックも何千クロックも待たされるからこその。

16ビット時代はフロッピーディスク初期化中に他の作業できなかったろ?
プリエンプションでフロッピー初期化中でも別の作業ができるようになった。
アレと同じ理屈

命令間のレイテンシを埋めるためのインターリーブはまた別個で必要

196:Socket774
08/10/06 01:27:01 +Q6OMh3e
>>193
任意の要素をゼロクリアできる分だけ
32bit要素の並び替えに関してはAltiVecのvpermより使いやすいってことかいな

197:,,・´∀`・,,)っ-○◎●
08/10/06 01:38:19 Gjt1lbWv
>>196
そう、抽出用のパターンテーブルが1つで済む。
AltiVecは3つ目のオペレーションにvpermを使うにせよvselに使うにせよ
もう一個ビットパターンを用意しないといけない。

同じ目的の命令はAMD SSE5にもpermpsというのがあるが
こっちはAltiVecの劣化版に毛が生えたようなの。

198:,,・´∀`・,,)っ-○◎●
08/10/06 01:46:36 Gjt1lbWv
で、フェンス君の言ってたスレッドよりファイバを使えのなぞ発言ってさ

テクスチャフィルみたいな待ち時間が多い処理は
ハードウェアスレッド切替を使うんじゃなくてファイバコンテクストそのものを退避して
別のコンテクストに切り替えろ

ってこと?
なら納得。


CPUとして使う場合でテクスチャフィルなんて使うのか甚だ疑問だが

199:MACオタ>196-197 さん
08/10/06 01:47:02 pdu9F3SC
>>196
  --------------------
  任意の要素をゼロクリアできる分だけ
  32bit要素の並び替えに関してはAltiVecのvpermより使いやすいってことかいな
  --------------------
CELl SPEのShuffle Byte命令も任意要素を0, 0xFF, 0x80に設定できるす。

200:MACオタ>団子 さん
08/10/06 01:56:46 pdu9F3SC
>>198
  -----------------
  テクスチャフィルみたいな待ち時間が多い処理は
  ハードウェアスレッド切替を使うんじゃなくてファイバコンテクストそのものを退避して
  別のコンテクストに切り替えろ
  -----------------
レイテンシが不定な処理わ、データが来たところで自動的に再開できるSMTを利用するのが得策す。

ところで、この謎発言わ撤回したすか?fiberわSMTスレッドの上位の単位で無いし、「4つ」という
制限も無いことわ明らかにされたかと思うす。
  ==================
  847 名前:,,・´∀`・,,)っ-○●◎ 投稿日:2008/10/05(日) 00:21:59 ID:PiRb9Agc
    [略]
    LarrabeeでいうところのFiberは同じ1コアで動かすべき4つまでのスレッドを纏めたものにすぎない。
  ==================

201:,,・´∀`・,,)っ-○◎●
08/10/06 01:57:09 Gjt1lbWv
それ全然vpermil2psより優位な要素じゃないんですけど。

vpermil2ps/vpermil2pdでは、imm8[1:0] で指定する2ビット値によって、第3ソースで指定した
パターンのうち、最上位ビットが立ってるほうをゼロクリアするか、あるいは立ってないほう
をクリアするか選択できる。
シミュレータで動かした限りにおいてもSPEのアレよりだいぶ便利だ

202:Socket774
08/10/06 01:57:40 +Q6OMh3e
>>199
ほんとだ。確かに要素指定には5bitしか使わないから
残りの3bitを使えばフォーマットを変えずに拡張できるね。

でも4ベクトルから任意の要素を取り出して並べ替えようとすると、
やっぱり2つ制御ベクトルが要るね。2ベクトルだと1つで済むけど。
このあたりをAVXはimmidiateを使ってうまくやってる感じ。32bit以下には使えないけどw

SSE5のも見てみたが、こっちは0以外にもセットできるけど
やっぱり4ベクトルから取り出そうとすると制御ベクトルが2個要るのは同じだな

203:Socket774
08/10/06 01:59:32 +Q6OMh3e
おっとかぶったw

204:,,・´∀`・,,)っ-○◎●
08/10/06 02:00:02 Gjt1lbWv
>>200
何が?

で、ファイバーのスイッチは普通のOSにおけるプロセスを切り替える仕組みと何が違うのかな?
プロセスには(ソフトウェア)スレッドが従属するが。

205:MACオタ>団子 さん
08/10/06 02:02:49 pdu9F3SC
>>204
  -----------------
  普通のOSにおけるプロセスを切り替える仕組み
  -----------------
「普通のOS」というのがWindowsやLinux, Mac OS Xのような用途のOSを意味するなら、ページテーブル
の切り替え等、はるかに複雑な処理を必要とするす。
ファイバのスイッチと比較できるのわ、関数呼び出し程度でわ?

206:,,・´∀`・,,)っ-○◎●
08/10/06 02:05:21 Gjt1lbWv
XSAVE/XRESTORで全部退避復帰する必要があるんですけど
関数呼び出しで退避が必要なレジスタは一部です

207:MACオタ>201-202 さん
08/10/06 02:06:08 pdu9F3SC
>>201-202
SPE ISA、VMX-128の改善点、反省点を含めた新SIMD ISAわVSXとしてPOWER7に実装される
予定す。Altivecの正統進化がどのようなものになるか、楽しみにして欲しいす。


208:MACオタ>団子 さん
08/10/06 02:09:21 pdu9F3SC
>>206
  ----------------
  関数呼び出しで退避が必要なレジスタは一部です
  ----------------
Larrabeeのファイバのスイッチも退避レジスタわ使用している分だけと書いてあるす。
  ================
  - Saves "live" registers [""わ、MACオタ注]
  ================


209:MACオタ>団子 さん
08/10/06 02:13:18 pdu9F3SC
ところで、後藤氏がLNIと将来のx86拡張についての記事を書いているすよ。
Gelsinger氏とのインタビューを交えて。
URLリンク(pc.watch.impress.co.jp)

210:,,・´∀`・,,)っ-○◎●
08/10/06 02:16:32 Gjt1lbWv
まあ、使ってないレジスタは退避しないという方針に基づいても、

汎用レジスタ16本とSIMDレジスタ16本、マスクレジスタ、EFLAGSにMXCSRなど
諸々は基本的に退避しないといけないな。
FP/MMレジスタの退避はまあ使わないなら必要なさそうだな、

関数コールとは違ってABIを規定できない筈だし(するのか?)




211:,,・´∀`・,,)っ-○◎●
08/10/06 02:21:10 Gjt1lbWv
>>209
だから言ったとおりじゃん。
Larrabeeのコアはヘテロジニアスマルチコアにおける「IA++」と同じものだって。

ちなみにゲルたんがいってることは4年前に後藤自身が解説したこととなんら変わってない。
SSEと共存できないだとか、いや、共存できるだとか、後藤が一人で混乱してただけで
Intelは一貫してたわけだ。


212:MACオタ>団子 さん
08/10/06 02:23:54 pdu9F3SC
>>210
なんとなく見積もりが違う気がするすけど。。。
  -----------------
  関数コールとは違ってABIを規定できない筈だし(するのか?)
  -----------------
Larrabeeわ目的が異なるスレッド(orタスク)が併走する設計になっていないす。
(例えば4つのSMTわMMUを共有するため、スレッド間のメモリ空間の独立性の自由度わ低い)

演算リソースわユーザーコードで占有され、タスクのスケジューリングも自前で行うすから、
ABIも必須でないす。こういう点でもCELL SPEと各コアの使い方わ近いかと思われるす。

213:MACオタ>団子 さん
08/10/06 02:26:36 pdu9F3SC
>>211
記事でわAVXが妙に無視され気味な訳すけど、その辺気にならないすか?
スケジュール通りなら、2010より数年間AVXとLNIが並立するというISAの分離が発生するすけど。。。


214:MACオタ@訂正
08/10/06 02:28:47 pdu9F3SC
>>212で少し記述間違えたす。
 誤: 4つのSMTわMMUを共有するため
 正: 4つのSMTわTLBを共有するため


215:,,・´∀`・,,)っ-○◎●
08/10/06 02:37:37 Gjt1lbWv
> つまり、256-bitと512-bitのずれは、時間軸上のずれに過ぎず、
> PC&サーバー向けCPUもいつかは追いつくことになる。

さて、問題あるかね?

LarrabeeでSSE/AVXをサポートしないとも言ってない。
特にAVXについては、LNIでVEXエンコーディングを用いる以上
デコードできてしかるべきだし、やれるんじゃないの?
まあ「絶対サポートする」と強弁する気はないが。



後藤はLNIがVEXエンコーディングって事実はまだ把握してないようだが
なんとなくは気づいてるような。「命令は固定長にするのが望ましい」とかな。



216:MACオタ>団子 さん
08/10/06 02:49:18 pdu9F3SC
>>215
  ----------------
  256-bitと512-bitのずれは、時間軸上のずれに過ぎず、
  ----------------
マーケティングトークわ別にして、Intelわ論文で「512-wideはグラフィック市場のための選択」と
公言しているす。
(Siggraph Larrabee論文より)
  --------------------------
  We chose a 16-wide VPU as a tradeoff between increased computational density and the
  difficulty of obtaining high utilization for wider VPUs. Early analysis suggested 88%
  utilization for typical pixel shader workloads if 16 lanes process 16 separate pixels one
  component at a time, that is, with separate instructions to process red, green, etc., for 16
  pixels at a time, instead of processing multiple color channels at once.
  --------------------------

217:,,・´∀`・,,)っ-○◎●
08/10/06 03:10:51 Gjt1lbWv
3byte版のVEXのm-mmmmフィールドは5ビット(32種類)あって
SSE*の再定義とAVXの新命令のために3つ(0F, 0F38, 0F3Aのエイリアス)
使ってるが、あと29個も残っている。
こいつとVEX.Lフィールドとの組み合わせで、いくらでも命令を定義できる。

将来的にISAの均質化を目標としているのならAVXまでのSIMD命令も
Larrabee(IA++)側でサポートしないといけない。

もちろん、統合までにやる話であって、最初の世代ではすべてやる必要も無いんだが
じゃあ、最初の実装のLarrabeeで128bit/256bitのSIMDをサポートしないとして
その理由は何よ?
積和算にしろシャッフルにしろ、全部Larrabeeにインプリメントされた機能で実装できそうだ。
専用ハードがないならないでマイクロコード実装でもいいんだけどな。

SSEが64bit SIMD
Sandy Bridgeでも256bit AVXは内部的に128bit命令を2個実行するだけの実装にとどまってる。

まあ、あれはAVXを実装したCPUですら無条件でサポートされるものではないことは
マニュアルにて示唆されてるが。
SSE4.1を無効にしたWolfdaleコアがあるように、マーケティング上の理由で
ローエンドCPUでは無効にするとかそういう類のものになりそうだが





218:,,・´∀`・,,)っ-○◎●
08/10/06 03:13:22 Gjt1lbWv
後半書き直し

最初のPentium IIIからPentium 4においてSSEが64bit SIMD×2で実装されてたように
Sandy Bridgeでも256bit AVXは内部的に128bit命令を2個実行するだけの実装にとどまってる。

LNIでもAESくらいならサポートしない理由はある。テーブルが複雑だし。
まあ、あれはAVXを実装したCPUですら無条件でサポートされるものではないことは
マニュアルにて示唆されてるが。
汎用CPUではSSE4.1を無効にしたWolfdaleコアがあるように、マーケティング上の理由で
ローエンドCPUでは無効にするとかそういう類のものになりそうだが



219:MACオタ>団子 さん
08/10/06 03:53:53 pdu9F3SC
>>218
  -------------------
  Sandy Bridgeでも256bit AVXは内部的に128bit命令を2個実行するだけの実装にとどまってる。
  -------------------
また根拠の無い話を(笑)

反証にわソースがあって、"Terra Terra Terra"プレゼンでわ、Gesher (Sandy Bridge)のコアあたり
のDP Flops/cycle/core=7とあるす。8の誤植かどうかわ別にして、「サイクルあたり4-wide x 2 (積和)」
じゃないと到達できない数字す。

220:,,・´∀`・,,)っ-○◎●
08/10/06 03:58:29 Gjt1lbWv
古い記事見たら、LarrabeeにVEX使うことは後藤は既に気づいてた。
URLリンク(pc.watch.impress.co.jp)

> また、512bitsや1,024bitsといったベクタ長の拡張も容易になる。
> Intelが、2008年末から2009年にかけて投入する予定のメニイコアCPU「Larrabee(ララビー)」は、
> AVXの命令フォーマット拡張の上に乗っている可能性が高い。
> AVXには、今後、毎世代命令セットを大きく拡張して行く、Intelの戦略が根幹を伺うことができる。

あと、ここ注目。
> 「5バイトバージョンの2つ目のペイロードはフルではない。将来の拡張のために3ビットが残されている。
> 3bitsあれば、1,000以上の新命令を加えることができる。新しいフィーチャ、新しいレジスタ、
> 新しいベクタ長。ほとんどなんでも加えることができる」(Valentine氏)。

m-mmmmフィールドは5ビットあるのに「3ビット」とはなんぞや?
これが間違いではないとすれば、5ビット32通りの中に0F, 0F38, 0F3Aフィールドがあるのではなく、
3ビット+2ビット(Reserved, 0F, 0F38, 0F3A)と考えてることになる。
それならそれで1000命令以上といったのはおかしいわけだが。


ちなみに後藤はここでも暗にVEX方式であるべきだと説いているようだ。

URLリンク(pc.watch.impress.co.jp)
>  Intelは、Larrabee拡張命令のフォーマットの詳細については明らかにしてない。
> しかし、想定できる点がいくつかある。まず、命令フォーマットはデコードしやすいものでなければ
> ならない。x86命令のデコード時の複雑さの多くは、x86命令が可変長であることに起因している。
> この問題を軽減するためには、Larrabee拡張命令を、固定長にすることが望ましいと推定される。


この記事で
> MMX Pentium以降のMMX/SSE系の拡張命令は、サポートしないと推測される。

なんてトンデモなことを言った理由は、むしろVEXプリフィクスの合理性を主張したいからな気がした。
実際には、MMX/SSEが使ってきた2byte Opcode空間はMMX以前から使われてきたしLCP+2byte Opcodeなんてのはザラ。
SSEの命令フォーマットがデコードできない理由にはならない。「遅い」ならまだわかる。

221:MACオタ
08/10/06 04:09:18 pdu9F3SC
余談すけど、今回の後藤記事の内容のヒドさに、私わ落胆したす。

かつて後藤氏わ、素朴な質問をぶつけて相手に詳しく語らせることで、自身の素養の無さにも
かかわらず良いインタビューをモノにしていたす。(ちなみに、逆のスタイルが本田雅一氏で、
話を聞くより自分の意見を売り込もうとしてるんじゃ無いかと思われるようなやり方す。)

ところが今回の記事、まるで自分の憶測の裏付けを必死でGelsinger氏に求めているとしか
思えないような代物す。これでわ記事自体、都合のいい言葉だけを引用しているような
バイアスがかかっている疑念すら出てくるす。

222:,,・´∀`・,,)っ-○◎●
08/10/06 04:10:35 Gjt1lbWv
>>219
また妄想を
128ビットである理由は俺のサイトにも書いている通り
256bitに作用するシフト命令が無い時点でネイティブ256ビットはありえないんだよ。

7が誤植で実は8でしたという思い込みはできても
実は4でしたというほうへの思い込みはできないのはおめでたいとしか。

GesherはSandy Bridgeを特定して指すという前提がそもそもおかしい。
AVXをサポートするgmmintrin.hには、FMAのIntrinsicsも含まれている。
元のGesher New Instrunctions(GNI)はFMAまでのサポートを含んでいたことがわかっている
FMAをサポートする次の世代も含めてGesherだ

そして、7DPという数字については、128bit FMA+ 128bit Dot-Productで7でも計算が合う。

ばかだなぁFUCKヲタは。

223:MACオタ>団子 さん
08/10/06 04:16:33 pdu9F3SC
>>222
何度か書いているすけど、
  -------------------
  俺のサイトにも書いている通り
  -------------------
議論の相手や聴衆が、自分と同じ情報を持っているという思い込みわ、勘弁して欲しいす。

それわそれとして、
  -------------------
  128bit FMA+ 128bit Dot-Productで7でも計算が合う。
  -------------------
内積のような高級命令ってシングルサイクル・スループットなんすか?

224:,,・´∀`・,,)っ-○◎●
08/10/06 04:37:03 Gjt1lbWv
IntelコンパイラのSSE組み込み関数のヘッダファイルはCPUの開発コード名を冠してる

SSE3 pmmintrin.h (Prescott)
SSSE3 tmmintrin.h (Tejas)
SSE4.1 smmintrin.h (Swing)
SSE4.2 nmmintrin.h (Nehalem)
AES/CLMUL wmmintrin.h (Westmere)
AVX/FMA gmmintrin.h (Gesher)

Tejas/SwingはNetBurstがロードマップに存在した時代の死んだコードネームです。


Gesherも死んでSandy Bridge/IvyBridgeは後釜なんじゃないの?
Intelが開発コードを変えるのは気分じゃなくて何かしらアーキテクチャ定義に
変更があったからではないかな?

事実、GesherではFMAまでをサポートする予定でgmmintrin.hが定義されたのに
Sandy Bridge・Ivy Bridgeあるいはその次の世代という段階的なサポートになってしまってる。


> 内積のような高級命令ってシングルサイクル・スループットなんすか?

おまえはドリームキャストを馬鹿にしたな
もとい、水平加算を伴う命令は将来シングルサイクルスループットでできるようにすることは
開発者向けには前々から公約にしてたよ。

「Gesher」というコードネームが消えた今となっては真相は誰も知らないわな。
つーか、あの資料の該当ページを抹消したのにも何かしらロードマップ上の理由があったと思ってるが。



225:MACオタ>団子 さん
08/10/06 04:53:48 pdu9F3SC
>>224
  -----------------
  Gesherも死んでSandy Bridge/IvyBridgeは後釜なんじゃないの?
  -----------------
思い込みに合わせて現実を改変するのも勘弁して欲しいす。一応風数ソースで。
URLリンク(pc.watch.impress.co.jp)
  =================
  Sandy Bridgeは、もともとはヘブライ語のコードネーム「Gesher(ゲッシャ)」で呼ばれていた。
  GesherからSandy Bridgeへと変わったのは、技術的な内容の変化があったからではなく、
  名称だけだという。
  =================
URLリンク(www.atmarkit.co.jp)
  =================
  32nmプロセスの2世代目(新しいマイクロアーキテクチャを採用)の開発コード名が従来の
  Gesher(ゲッシャー)からSandy Bridge(サンディ・ブリッジ)に変更されたが、こうしたコード名の
  変更は「靴下を替えるように、頻繁にあること」だという。
  =================
もう少し詳しい理由わ、こちら。
URLリンク(www.theregister.co.uk)
  =================
  Gesher - 'bridge' in Hebrew - is also the name of an Israeli political party.
  We wondered how long Intel would stick near the semi-charged name and have now learned
  the answer -- about seven months.
  =================

226:,,・´∀`・,,)っ-○◎●
08/10/06 05:03:54 Gjt1lbWv
で、7は誤植で8だという根拠は?
7は誤植だという一方で8が真実だというのはずいぶん都合がいい考え方だなぁ
4GHzで28GFLOPSとも書いてあったぞ。

227:,,・´∀`・,,)っ-○◎●
08/10/06 05:05:55 Gjt1lbWv
URLリンク(xtreview.com) /images/davis.pdf

これだろ?


先に出るLarrabeeのベクトル長が8か16かも曖昧な資料が根拠になにを妄想してるのかなFUCKくんは

228:,,・´∀`・,,)っ-○◎●
08/10/06 05:09:15 Gjt1lbWv
FMAがSandy Bridgeで実装されないことそのものがロードマップの修正だと思わんかね?

Intelの*mmintrin.hでサポートされる組み込み関数の使える命令がCPU世代をまたがったことは一度も無い。

229:,,・´∀`・,,)っ-○◎●
08/10/06 05:30:14 Gjt1lbWv
Sandy Bridge世代ではいまだに内部128bitである根拠

◎AVXではメモリアドレッシングで指定されたソースに対しミスアラインロードを許容するが、
 SIMDユニットがネイティブで256ビットをサポートするとすれば、アラインメント補正処理を
 ユーザーに開放したvpalignrの256bit版がないのはおかしい。
 シフト・ローテート処理が128ビットのままでは、スループット的にアンバランスが生じる。

◎256bit化の対象となってる浮動小数演算は、SIMD演算ユニットが内部128bitのまま256ビット版を使う
 ・命令レイテンシ隠蔽のため引き伸ばすだけでも実効性能は伸ばせる。
 ・SandyBridge世代においてもなお16バイト/clkまでしかないらしい命令フェッチ帯域の節約になる。


まあ俺はどっちでもいいよ。
内部256bitといい続けることで恥をかくのはお前だけだから。

230:MACオタ>団子 さん
08/10/06 05:49:29 pdu9F3SC
>>229
前者わ興味深い指摘だと思うす。今後わ、最初にこういう論拠を示してから自説を展開するように
お勧めしたいモノす。
後者に関してわ、何度も現実に裏切られているのでわ?

231:MACオタ@補足
08/10/06 05:55:43 pdu9F3SC
>>227
少しだけ補足す。
  -----------------
  先に出るLarrabeeのベクトル長が8か16かも曖昧な資料
  -----------------
"Terra Terra Terra"のp.16のブロック図に"SIMD-16"とあることから、この時点で16(512-bit)-wideわ
確定していたことが判るす。従ってDP flopsの未確定部分わ、この時点で積和命令を実装するか
否かが確定していなかったことを示すす。

232:,,・´∀`・,,)っ-○◎●
08/10/06 07:11:08 Gjt1lbWv
じゃあ、palignr の256bit版が存在しないのを「誤植」だとでも思っておきなよ。
VEX.L=1にすると未定義例外が出るってハッキリ書いてあるんだがな。

たとえばAltiVectのvpermが先頭64ビットまでしか作用しなかったらきっと
理不尽だと思うだろうけどそれと似たようなもんだよ。

233:,,・´∀`・,,)っ-○◎●
08/10/06 07:14:21 Gjt1lbWv
全部誤植でAVXのベクタ長は1024ビットかもしれないよ
極論言うとMACヲタの妄想はそういうことだ

234:Socket774
08/10/06 07:21:47 +Gr7A0as
実物が無い以上
全部妄想です

235:Socket774
08/10/06 07:28:18 kNki4HP2
xmmレジスタが登場してから演算器が128ビットになるまでを考えると128*2の可能性は大きいな。
同業者の状況を見るに、急いで新昨日で巻き返さないといけないなんて状態でもないし。

236:Socket774
08/10/06 09:32:50 xPkVE/H5
7DPで28GFLOP資料が間違ってるという一方でそれを根拠に

237:Socket774
08/10/06 09:59:29 xPkVE/H5
7DPで28GFLOPS@4GHzという資料が数字が間違ってるという一方で
それが根拠にネイティブ256bitだというのは苦しいわな。
256bitでない根拠にならなりうるが。

間違ってると言った数字を根拠にする理屈はありえない。

ちなみに積和+内積で7DPを満たせるってのはム板でも議論されてた。

64bit SIMDではあるがK7ではE3DNow!によって内積をスループット1クロックで行えていた。
別に困難でもないんじゃないの?パイプライン段数増えていいなら。

238:,,・´∀`・,,)っ-○◎●
08/10/06 11:07:36 Gjt1lbWv
URLリンク(software.intel.com)
もう既に。中の人に近いところではAVXのパフォーマンスについて議論がなされてるよ。

AVX-256での行列積のスループットはSSE2の1.4~1.6倍程度だそうだ。
ざっと概算しても新命令のvpermil2psの効果分+3オペランド数増加分程度の
スループット向上しか得られてない。
これは内部128ビットのままである証拠にならないかな?

MACヲタも無根拠な256ビット幻想なんて捨てて
Intel謹製のパイプラインシミュレータでスループットの検証してみれば?

239:,,・´∀`・,,)っ-○◎●
08/10/06 12:04:19 Gjt1lbWv
むしろSandyBridgeって乗算命令って2ポートで発行できるようになってないか?
FMA+DotProductで7DPを実現するスタイルだと、乗算だけに限っては既存のCore 2ファミリの
2つの浮動小数ユニットのどちらでも2DP/4SPの乗算が可能になる。

まあ、加減算とは排他になるが。

240:,,・´∀`・,,)っ-○◎●
08/10/06 12:20:40 Gjt1lbWv
でだ

FMUL/FADDとある2つの演算機の両方に乗算・加減算を実装してどちらでも加算・乗算を発行できる
ような形にすれば、既存のSSEコードでも若干性能向上が期待できる。
それに、新命令のFMAのパフォーマンスという観点でも1つの実行ポートに両方の演算ユニットが
ぶら下がってるほうが性能を出しやすい。

256bitでのパフォーマンスが伸びてないというより、レガシーを含めた128bit SIMDでの
パフォーマンスを若干ながらも伸ばすアプローチを採るのはそれなりに意味はある。


いじょ。

フォローしておくと256bit SIMDでも相当速いよ。シミュレーションの通りなら
今のCore 2と比べてざっと2倍ってのは嘘じゃない。
単に256bitじゃないと恩恵が無い実装にはしなかっただけでしょ。

241:Socket774
08/10/06 21:20:32 ooDOnZoT
とりあえず、この手の話で
団子 >>> MACオタ
なのはよくわかった。
今日の団子はいつもよりかなりまともな理屈をならべているな。

242:Socket774
08/10/06 21:30:52 ooDOnZoT
つーか、団子は正直、拡張命令ネタだけでいい。他はいらん。

243:Socket774
08/10/06 21:56:38 ooDOnZoT
対戦成績表'08
ナマエ 10/6
---------------------------------------------------------------------
団子 ○
オタ ●

10/6 AVXの実装など

244:,,・´∀`・,,)っ-○◎●
08/10/07 01:05:22 Aeh0Wlge
MACヲタとかってさ

まさかとは思うんだけど
AVXの128bit SIMDを使うと、256ビットの上位128bitも毎回ゼロクリアしないといけないから
256ビットでないといけないとか

思ってないよな?

まあ俺も最初はそう思ったよ。

でも、よくよく考えたらさ

むしろ、YMM下位(XMM)のみの演算ではYMM上位が常に0と決まってるからこそ、
上位のゼロクリア処理をサボって256bit未満の幅のSIMDユニットでも効率的に処理できるわけだよね。
fxchやxorゼロクリアでレジスタリネーミングのヒントとして解釈するのと同じで。

AVXのマニュアルには、レガシーSSEを使うと、YMMの上位をゼロクリアせずそのまま残すから偽の依存関係が発生するとある。
逆に言うと、AVX-128を使ってるときはYMM上位の依存関係が常に解消されてるってことなんだよね。
そりゃそうだ、結果が常に0なんだから。
その値をソースにとるAVX-256の命令あるいはレジスタ退避命令に遭遇するまで、実際にゼロクリアをする必要すらない。

で、レガシーSSEをなんでYMMの上位をゼロクリアしない仕様としたのかって、
そりゃおそらく、AVX-256との併用時に依存関係を故意に発生させて、性能出なくするためだよ。たぶん。
まさに飴(AVX)と鞭(SSEと同時利用することに対するペナルティ)。
そうまでしても、プリフィックスが付き捲って複雑怪奇な命令フォーマットとなってしまったSSEを整理したい。

245:Socket774
08/10/07 07:06:44 z3zv0nRE
larrabeeってDX11世代のGPUやOpenCLで使った場合のGPUに対して
余程のパフォーマンス的アドバンテージが無い限り
結局ニッチな仕様のGPUで終わるんじゃないのかい?

246:Socket774
08/10/07 08:10:27 RBYU5KK8
ところがCPUに内蔵されるようになる予定だから話はちょっとこじれる。

247:Socket774
08/10/07 11:59:50 ikSGh2Nd
それはAMDがやろうとしてる事と
何が違うの

248:Socket774
08/10/07 12:07:47 AXOmBY8z
どうせCPUに内蔵されるから、単体カードとしてのLarrabeeはぼろぼろでも、
CPUに内蔵されたら、今と同じでシェアだけは高い可能性があるってことじゃね?

249:Socket774
08/10/07 12:28:34 Jbkrm287
マリオと抱き合わせでクソゲーを買わされたトラウマが…

250:Socket774
08/10/07 12:34:13 z395BKc1
>>247
ポイントは全部x86。
同じ命令セットで汎用スカラ処理が得意な大きなコアとSIMDだけは得意な特化型コアが並立する。
で、ワークロードに応じて最適なコアを選んで実行するようになる。

AMDのやろうとしてることの最終構想はCPUのSSE命令をGPUでやること。
現実にはGPUの大量の演算ユニットだけあってもSSE命令の供給が間に合わなければ意味がない。
CPU内蔵のFPUすら、持て余してる時間が多い。
フロントエンドやスケジューラにどれだけトランジスタつぎ込んでるか考えれば
AMDがやろうとしてることがいかに無謀で馬鹿げてるかは。

251:Socket774
08/10/07 13:05:15 ikSGh2Nd
適切なコアの判断は何処でやるの?

252:Socket774
08/10/07 14:10:41 Qxng3wLy
並列計算プログラミングを勉強している者ですが、質問があります。
Dual CoreとQuad CoreのCPUを用いてバックトラッキングの速度計算をやっているのですが、
実際のマルチコア対応演算プログラム(例えば、将棋や囲碁など)だと、
Dual CoreとQuad CoreはSingle Coreの物と比べてどのような処理をやっているのでしょうか?


253:Socket774
08/10/07 22:47:24 z395BKc1
>>251
OSのカーネルじゃね?
XP/VistaのカーネルはRDPMCでプロファイルとってコンテクストの割り当てを最適化する
機構を既に備えている。

現状、SMTで論理プロセッサが複数あるCPUで、同一物理CPUかを判定したり、
メモリ階層を考慮した最適化くらいはOS側でやってくれる。
IntelとMSは共同でメニーコアの研究やってるからなんらかの解決策は出してくるでしょ

254:Socket774
08/10/07 23:16:45 lzSJaurJ
ララビーのコア1個1個はOSから
それぞれCPUとして認識されるっての?

255:Socket774
08/10/07 23:33:09 z395BKc1
GPUではなくずっと先の話だ。

256:,,・´∀`・,,)っ-○◎●
08/10/08 01:57:04 0Yot2dF8
>>252
「バックトラッキング」って言葉の意味がわかってるなら話は単純だが
複数のコアあるなら、その分だけスレッド起こして各枝の探索に割り当てていけばよくね?


257:MACオタ
08/10/08 07:46:16 Iaqsra3B
IBMがDunnington対抗でPOWER6搭載サーバーのミドル~ローレンジで搭載コア数を2倍にしたす。
単純にソケット数を2倍にした模様。
URLリンク(www-03.ibm.com)
  -------------------
  As the world's most popular midrange server, the IBM Power 570, now offers more energy
  efficiency and consolidation options with new processor cards that double the number of
  cores in the same system footprint.
  -------------------
過去の情報でわ
「POWER6+でコア倍増(MCM?)」スレリンク(jisaku板:850番)
「実わ実装密度倍増?」スレリンク(jisaku板:45番)
ときて、結局POWER6でソケット数倍増という形で実現しているす。POWER6+って順調に遅延しているか、
Dunnington対抗で、製品投入を急いだという感があるす。

ただし、ミドルレンジのPOWER570にもハイエンドと同じPOWER6/5GHzを投入しているすから、搭載
チップ数倍増と合わせて、POWER6自体の歩留まりわ上がっていそうす。POWER6+登場前の在庫
整理の可能性もあるので、POWER6+がいつ登場する(or しない)かわ、注目す。

258:レトリック君
08/10/11 00:01:35 pJwx8BrO
>>252
枝分岐する探索をthreadに割り当てとかじゃね?
憶測だがw

259:レトリック君
08/10/11 00:05:06 ndohKGFa
>>250
> で、ワークロードに応じて最適なコアを選んで実行するようになる。
dynamic loadbalancing?
そんなとろいことやってたらメニコアではscalabilityボロボロのキガス
これも憶測だがw
ねむー仕事でくたくただの介。モヤ済みノシ

260:MACオタ
08/10/14 04:00:26 OQHMmdpk
>>257の続報すけど、IBMサイトのPower 560 Expressの価格ページで、搭載プロセッサが
"POWER6+"と記されていることが話題になっているす。
URLリンク(www-03.ibm.com)
当初予定されていた45nmプロセス製造のPOWER6+によるコア数倍増のロードマップがズレて、
POWER6のままでのコア数倍増製品の投入至ったという推測を裏付けているかと思われるす。

なお、ITJungleのTimothy Prickett Morgan記者がIBMに問い合わせて、実際にわPOWER6の
ままであることを確認したとのことす。
URLリンク(www.itjungle.com)
  --------------------
  I checked with my sources at IBM, and the Power 560 is not based on the Power6+, but rather
  the existing Power6 chip, which is implemented in 65 nanometer processes.
  --------------------
IBMサイトのページわ、今後訂正されるかもしれないすけど、当該記事にわスクリーンショットが
掲載されているす。

261:MACオタ
08/10/14 04:05:30 OQHMmdpk
TechNewsWorldのRoss Mauri (IBM, Power System事業部長)インタビューより、POWER8の仕様
策定が開始されたという話題す。
URLリンク(www.technewsworld.com)
  --------------------
  "We are working on Power7 and next week I have a meeting to hear about research on
  Power8," Mauri said. "We're not slowing down."
  --------------------

262:MACオタ
08/10/14 05:23:17 OQHMmdpk
NCSAが建設するPOWER7を採用したスーパーコンピュータ"Blue Waters"の水冷技術に
関する記事す。
URLリンク(www.techworld.jp)
  ---------------------
  NCSAの代理ディレクター、ロブ・ペニントン(Rob Pennington)氏によれば、水冷方式の大きな
  アドバンテージは「CPUの高密度実装を可能にすること」であるという。同氏らは、開発中の
  コンピュータを設置するために、現在NCSAで稼働しているスーパーコンピュータの2倍分の
  施設を確保している。だが、現行コンピュータのコア数が9,600 基であることを考えれば、同
  プロジェクトにおいて高密度化がいかに重要な課題であるかがわかる。

  「水冷方式だからこそ、CPUコアの高密度実装が可能になった。もし、空冷方式でサーバを
  冷却しようとしていたら、フロア内の空気の流れを確保するために、さまざまな制約が課される
  ことになっただろう」(Pennington氏)
  ---------------------
前スレに書いたPOWER7に関する情報も参考に。
スレリンク(jisaku板:950番)
  =====================
  開発グループが異なるとわ言え、POWER6で電力効率向上のために一旦あきらめたOoOEを
  再投入する 技術的裏付けわ謎す。冷却に関してわ水冷技術で先行しているために問題わ
  無さそうす。
  =====================

263:Socket774
08/10/16 23:08:49 AOjFjrQU
>>254
それは無いと思われ。

URLリンク(softwarecommunity.intel.com)

論文によればLarrabee上で実行されるプログラムは、
専用コンパイラで生成されなければならないと書かれてるし。
それにシステムコールもLarrabee側では実行されず、
CPU側で動作してるコードに一旦コールバックして実行されるらしい。
(つまり、OSはLarrabee上で動作していない)

既存のアプリを再コンパイルなしで実行出来ないなら別にx86互換でなくてもねぇ。

264:レトリック君
08/10/17 01:49:41 TAQlmPyn
コンパイラが作り(流用し)やすいのは、一つの大きなメリットだろ。
すぐできる。が、しかし…

265:,,・´∀`・,,)っ-○◎●
08/10/17 02:22:31 Q2jCyvxh
nVIDIAが「ハイエンドクアッドコアよりデュアルコアにSLIなGPUのほうがエンコ速いよ」
って挑発してる状態だからね。
あくまで継続的に高付加価値のCPUを売っていきたいIntelには、GPUを牽制するのもやっぱり
x86である必然性が出てくる。

・将来のSIMD拡張LNIの先行実装
・トランジスタあたりのスカラ性能もそれなりには出る
・x86最強wwwww


つーか実際問題ハイエンドを欲するのはエンコとかゲームとかなわけで、
大量のSIMD演算をこなせるエンジンが必要になる。

CPU側のサブコアではなく敢えてディスクリートGPUとしてのモデルを採ったのは
いろいろな実験を兼ねてるんだと思われ。
というか、CPU側にはまだ汎用コアを詰め込んだ方が良いと判断したんだろう。

266:Socket774
08/10/17 17:40:12 J9fBLUft
むしろx86スカラコアがおまけで主力はSIMDエンジン

267:Socket774
08/10/17 20:02:23 WL69sFTm
んでそいつらのためのGDDR3
ディスクリートしか道が無い

268:,,・´∀`・,,)っ
08/10/17 23:29:41 pmXEC0Ia
LeadtekのSpursEngine搭載アクセラレータボードは3万だってな
VGA機能のないSIMDアクセラレータですらこの価格だから
VGA機能を兼ねるLarrabeeでもそれなりの値段はしそうだな。


269:Socket774
08/10/18 00:02:12 98LL/FGc
それはどれだけの普及を見込んでるかによるのでは?

270:,,・´∀`・,,)っ-○◎●
08/10/18 00:41:06 3i9EJ3i8
SpursEngineはチップの単価が1万円程度だからなぁ。

ハイエンドSIMDアクセラレータになるか、ローエンドGPU扱いされるかは
ソフト次第だと思うよ。

その点においてIntelはしっかりしてると思ってる
少なくともCellみたいに当のSCE自社すらまともなライブラリ作れないような企業より。



271:レトリック君
08/10/18 01:49:03 PCcfdfg/
Larrabee、試しに買って、お家でもプチHPCしてみるか、どうするか…
Cellだとアプリが完成するまで203高地・死体累類状態を数年続けた後、
アプリが完成して日の目を見る前にフェードアウトされちまいそうで
迷わずスルーしたけれども。

272:MACオタ
08/10/18 15:32:06 8sSawSax
S3もGPGPUに参入したす。
URLリンク(www.s3graphics.com)
URLリンク(drivers.s3graphics.com)

273:MACオタ
08/10/18 16:53:08 8sSawSax
IBMの2008Q3会計報告も出ているす。
URLリンク(www-03.ibm.com)
URLリンク(www.itjungle.com)
ハードウェア部門に関してわ、前年同期比10%減の$4.4Bとのことす。
 - z (メインフレーム): 台数ベースで+49%の大幅増加。売上ベースでも+25%
 - p (Unix/Linux): 売上+7% (Power Systems統合後のi-Seriesも含む)
 - i (AS/400): 売上-85%
 - Microelectronics (半導体): -27%

POWER6搭載製品わ、まあまあ好調に見えるす。
ゲーム機用プロセッサの受託設計で大儲けして以来、Microelectronicsの売上わ低下する一方す。
そのうち研究施設だけ残して工場わ売り払われるかもしれないすね。。。

274:MACオタ
08/10/18 17:11:38 8sSawSax
TheINQのCharlie "Groo" Demerjianが最近RWT掲示板に出没しているすけど、彼の書き込みから
興味深い話題をいくつか。
「xbox3 Larrabee採用説」
URLリンク(www.realworldtech.com)
  -----------------------------
  Last up, MS is likely to use the API that keeps Larrabee in a box the most.
  -----------------------------
「Nvidia身売り説」
URLリンク(www.realworldtech.com)
  -----------------------------
  My bet is that they won't be an independent company at this time next year.
  -----------------------------
「Nvidia/VIA交渉」
URLリンク(www.realworldtech.com)
  -----------------------------
  It was tried. If you know anything about Jen-Hsun and Wen-Chi, the two together in the
  same room has all the makings for someone getting stabbed in the eye with the spork
  that came with lunch.
  Needless to say, no deal was done, and comedy did ensue.
  -----------------------------
「既にクロスライセンス締結済みの企業(intelとか。。。)わ無い?」
URLリンク(www.realworldtech.com)
  -----------------------------
  Anyone who would be in line to buy them has likely already cross-licensed everything they
  have, so patents would not likely be an issue.
  People will be bled off as the writing becomes quite apparent on the wall. Intel is already
  picking them pretty clean, so what will be left?
  A good analogy is Transmeta. Lots of bright people, lots of interesting tech, no one bought
  them. Why? Same real reasons.
  -----------------------------

275:Socket774
08/10/18 21:26:40 /HoQ2eKv
>>272
Core2Duo E8400 3.0GHzと430GTでは約2.3倍の差がつきます
もっともCPUはシングルしか使われませんが

ちなみに119枚の2048*1536のjpgを処理した場合
E8400 3.0GHz : 215.744s
同CPU+430GT : 95.398s
------------------------------------
Turion64 1.8GHz : 9.474m(568.44s)
同CPU+440GTX : 179.594s

同様にS3からエンコーダでも提供されれば
VIAプラットフォームにとって強い味方になりそうですね

276:,,・´∀`・,,)っ
08/10/18 22:37:44 zYJcwEab
>>275
> E8400 3.0GHz : 215.744s
> 同CPU+430GT : 95.398s

> Turion64 1.8GHz : 9.474m(568.44s)> 同CPU+440GTX : 179.594s

やっぱ同じGPUでもプラットフォームで差がつくんだな。
GPUでできない仕事をCPUにオフロードしてるから当然といえば当然だが。

ということは、よりCPU側に投げる仕事を減らしたのがGPGPU市場を制しうる。

Larrabeeの勝因はここにあるかもな。

もっとも固定機能部分が遊んでたら意味Nothingだが

277:Socket774
08/10/18 23:15:28 u6Y7ZtAB
> Larrabeeの勝因はここにあるかもな。
もう勝ったことになってるよw

278:Socket774
08/10/18 23:21:44 ytSBAqMG
>>264
既存のコンパイラをある程度流用出来るのは分かるけど、
Larrabee側でシステムコール呼んだらCPU側で実行されるってどうやるんだろ?

システムコールの引数がポインタだと、
①Larrabee側のコードもCPU側のコードも同じメモリ空間を共有するか
②システムコールごとに決まったサイズ(たいていは構造体)のデータをコピーするかしないと...

①だと変数にアクセスする度にPCIバス通して通信するわけだし
②だとWin32での実装が大変そうだ。

279:,,・´∀`・,,)っ-○◎●
08/10/18 23:24:17 3i9EJ3i8
公称1TFLOPSとかあるのに、GPGPUとして使ってみるとCPUの良くて数倍程度の性能しか
出せてないのは、実効性能が低いからでは?
キャッシュが小さかったり、演算の小回りが利かなかったり。



280:,,・´∀`・,,)っ-○◎●
08/10/18 23:26:28 3i9EJ3i8
>>278
> Larrabee側でシステムコール呼んだらCPU側で実行されるってどうやるんだろ?

っていうかシステムコールをホスト側で処理する必要あるんだっけ?
Larrabee側にもOSを持っててPC上のOSとはメモリ空間は独立なのに

281:Socket774
08/10/19 02:57:01 +w69zuzc
URLリンク(fah-web.stanford.edu)
さて、何倍でしょう。

282:レトリック君
08/10/19 03:05:40 bSIbs2Cr
>>278
やり方は色々考えられるだろうけれども、
実際にIntelがどうするについては参考文献を読んでから書来たいところ。
読んでいる時間あればだけれども…orz。
パット思いつきで書けばthrouputneckが懸念されるのはread/write システムコールだけ。
でもさ、並列化のセオリーで言えばIOって思いっきりcriticalなんだよねw
>>279
数コア程度のCPUの性能分析と同列に考えない方が良いよ。

283:,,・´∀`・,,)っ-○◎●
08/10/19 03:07:58 cnb0JIoy
モデルの大きさが違うんじゃなかったっけ?
キャッシュ(Cellの場合LS)の容量に合わせた小さいモデルを選択してるだけで
それをもって性能比較とするのはどうかなと

だって、PCと同じ大きさのモデルをシミュレーションするのは
性能以前に「無理」なんだろ?


284:Socket774
08/10/19 07:03:49 pCG8Muu0
モデルの大きさはCPU>CELL>GPUということだけど、定量的な情報が無い。
クライアントがバージョンアップするたび扱えるモデルも大きくなっているとも言ってる。

285:Socket774
08/10/19 08:11:33 r0tXXKIM
今のcore2duo2GHzと母板のその他機能がワンチップで省電力になるのはいつごろだい?

286:Socket774
08/10/19 15:28:58 2HT/SDCh
5年後位のCPUのハイエンドって今のよりどれ位性能アップしてるの?

287:Socket774
08/10/19 19:03:02 vfzJSlhJ
>>280
論文の6.1節
"Two current limitations are
that application system call porting is not supported and the
current driver architecture requires application recompilation."

それから
"Additionally, execution of some
C/C++ standard library functions called from Larrabee application
binaries must be shared with the host operating system.
Specifically file I/O functions such as read/write/open/close, etc.,
are proxied from the Larrabee application binary back to a service
that executes such functions remotely on the host OS."

とのことなので気になってます。

>>282
read/writeもそうだし、スレッド間の協調のためのAPIもホスト側で実行するなら...
この論文には詳しい実装手法は載ってませんでした。
他に論文orドキュメント知ってたら教えてくらはい。

288:,,・´∀`・,,)っ-○◎●
08/10/19 19:05:01 cnb0JIoy
来年のICC11にひょっとしたらLarrabee開発ツールも載っかるかもしれないのでそれまで待ちましょう

289:Socket774
08/10/20 07:24:09 prDv+JC8
>>275に新たにE8400+440GTXを加えて

E8400 3.0GHz : 215.744s
同CPU+430GT : 95.398s
同CPU+440GTX : 88.941s

Load->処理->saveのうちLoad,Saveはどの結果でも同じと仮定し
処理のみの時間を出してみると

x+y=88.941sec
x+1.139y=95.398sec
x+c=215.744sec

x:laod+save時間 y:440gtxの処理時間 z:cpuの処理時間 1.139=1025/900(440SP/430SP)

x=42.488sec
y=46.453sec
z=173.256sec
となり

GPUとCPUでは約3.7倍となる

CPUはシングルスレッドで12gflops、440は65.6gflops
GPUの実行性能としては、マズマズかと

実行中はこんな感じ
URLリンク(www.nicovideo.jp)

290:レトリック君
08/10/20 22:50:05 c6B+e61k
>>287
残念ながら詳しい文献は持っていないよ。関係者のブログ
Intel Graphics Jobs - Graphics - The Computer Science Agora
URLリンク(i2cs.cs.uiuc.edu)
の近くにある8月19日のslide
architecture reading group slides -- 19 aug 2008.key
URLリンク(i2cs.cs.uiuc.edu)
の11枚目辺りを見てもIOに関しては
. GPU variant: stdlib I/O proxied by host processor
としか触れられていない。これは多分PCIExpress add-in card形態のものの場合だと思うけど、
PCIカード内のLarabbeeからNorthやSouthにぶら下がったI/Oを(Host CPUと調停しながら)
アクセスする手段は(第三世代になっても)無い?(←知らぬ)か何かにより、Open MP compilerで
compile&linkしたexecutableのhost CPU用binary側にI/Oを代理実行して賄ってもらうん
じゃないかとそれをproxyと書いているんジャマイカと、コレはモレの予想だけれどもさ。

ちなみにthread同期に関しては同じく11枚目に
on-chip thread synchronization and communication
と書かれていて、これはLarrabee内のcore間の同期でPCIは経由しないものの筈。
逆にLarrabeeとhost CPU間のPCI経由同期もあるはずで、OpenMP compierは
2種類のbinaryを含むececutable内でこの2階層の同期を取り扱えるような
codeを生成するのではないかと、コレも予想だけれれどもさw
ご苦労さんなこったぜ

291:Socket774
08/10/20 22:53:06 hafoWKI3
とうとうGPUでprintfデバッグができる時代が来るのかw

292:Socket774
08/10/20 23:10:58 prDv+JC8
仮にS3がChrome400にExponentialの技術を使ってるとしたら
10年に及ぶ、随分と長い伏線だな

293:287
08/10/21 00:26:01 mj+qHKTV
>>290
おぉ、サンクスコ。

>PCIカード内のLarabbeeからNorthやSouthにぶら下がったI/Oを(Host CPUと調停しながら) ...
というか、いわゆるカーネルモードのプログラムは全てCPU側で処理するのでは?
つまり、in/out命令のレベルで調停するのではなく、
read()/write()システムコールの処理を一括してホスト側で処理するのではないかと。
(もちろんLarrabeeを動作させるうえで必要な最小限のカーネルというかファームウェアが特権命令をLarrabee上で提供することはあると思うけど)


また、論文のコピペした部分 ”『現在の』ドライバ設計ではアプリケーションの再コンパイルを要する”とあるので
将来的には再コンパイルは不要となるのではないかと漏れは予想してます。
だとすると、やはりLarrabee上で発行されたint命令を
必要に応じてホスト側のint命令として処理するコードがドライバに組み込まれるのではないかと。


>OpenMP compierは 2種類のbinaryを含むececutable内で
>この2階層の同期を取り扱えるような codeを生成する
OpenMPで自動並列化するときにCPUの演算資源とLarrabeeの演算資源を同時に活用できるってこと?
クレイジーだね!


294:MACオタ
08/10/21 05:40:21 CIoXnd95
中文版EngadgetがIDF Taipeiで仕入れたLarrabee情報を掲載しているす。
URLリンク(cn.engadget.com)
 ・コア数: 最大32
 ・動作クロック: 最大2GHz
 ・製造プロセス: 45nm~32nm
 ・今年11月にプロトタイプ登場?

コア数と動作クロックに関してわ、
コア数と動作クロックより最大ピーク性能わ、
 倍精度: 2 [GHz] x 8 [並列] x 2 [積和] x 32 [コア] = 1 [TFlops]
 単精度: 2 [GHz] x 16 [並列] x 2 [積和] x 32 [コア] = 2 [TFlops]
基本的な性能上のターゲットわ、"TFlops on Chip"ということの様す。

295:レトリック君
08/10/21 20:47:23 FLpnRXeu
>>293
> >OpenMP compierは 2種類のbinaryを含むececutable内で
> >この2階層の同期を取り扱えるような codeを生成する
> OpenMPで自動並列化するときにCPUの演算資源とLarrabeeの演算資源を同時に活用できるってこと?
> クレイジーだね!
OpenMPは演算性能やlatencyに大きな非対称性のあるthreadが混在すると
基本的にloadをbalanceさせ易くないし、PCI経由の同期はそれなりに遅く密接な
同期の間に挟まない方が性能的に有利なので、並列regionに突入するチームを
host CPUとLarabee内のthreadで混成するところまでは、さすがにやらないのでは
ないかと想像して□。
しかし、特定のH/W threadやcoreを固定的に割り付けるaffinity APIをpthreadに拡張し、
OpenMP APIはその上に乗っかるわけだし、host<->Larrabee間のmessage/data passing
protocolは非同期APIもサポートするからCUDAのようにGPUがご多忙中の裏でhost CPU
も一仕事させられる上で必用な仕組みは備わっている。
それがOpenMPのチームを編成するthreadの割付指定拡張の様な??ものなのか、
あるいはCtのみのサポートなのかは今のところ想像の域を出ない。
Ctは非常にダイナミックなのできっと何か仕掛けてくると思う。LLVMの様な仮想命令と
optimizationまで取り入れられる。○○とは役者が違う、もう参ったよって感じ。
しかし、モレは何を2chでマジレスしているのやら…

296:287
08/10/21 22:40:09 mj+qHKTV
>しかし、モレは何を2chでマジレスしているのやら…
いやいや勉強になるわ。

>CUDAのようにGPUがご多忙中の裏でhost CPU も一仕事させられる上で必用な仕組みは備わっている。
うーん、これはこれでCELLみたいにスーパーハカー的なプログラミング作法を要求しそうでやだなぁ。
あっても良いけど、いつの間にか○○しながら××することが性能出す上で当然みたいなことにならないといいね。


>Ctは非常にダイナミックなのできっと何か仕掛けてくると思う。
>LLVMの様な仮想命令とoptimizationまで取り入れられる。
Ctでコーディングしたら、コードの自己書き換えを伴った実行時最適化が掛かるってことでおk?

>>294
サンクスコ。
各x86コアが2GHz動作するってことかな?

297:Socket774
08/10/21 22:41:04 n0ZU/45N
>>289
CPU<-->GPU間が遅くて連携は難しいとか言われてたが
Chrome400程度のローエンドでこれほどなら
AMDのFusionとかの構想も結構期待できるのか?

それともChrome400が特殊なのかね?
Exponential?

298:レトリック君
08/10/21 23:55:47 xkV0DQUZ
>>296
> >LLVMの様な仮想命令とoptimizationまで取り入れられる。
> Ctでコーディングしたら、コードの自己書き換えを伴った実行時最適化が掛かるってことでおk?

印刷物は会社に置いてきちまったけれども、それでOKだと思う。
抽象IA命令だったっけな、これをruntimeに最適化しながら
具体的なIA-32、IA-64、Larrabeeなどの最適化Nativeが生成されて行くと
いうような事が確か文献に。
最近モレの周りではこういう研究もプチ流行の気配なんだ。ニヤリ

299:,,・´∀`・,,)っ
08/10/22 01:01:34 yn2f9k6s
自己書き換えっていうか動的生成のほうが正しい
文字通りの自己書き換えは(既存コードシーケンスの上書き)は、
ページ属性操作が煩雑かつトロくさくて最近はあまり流行らない
XDビットの兼ね合いもあるし。

バイトコードを動的に並べてExecutable属性つけてそこに飛ばすほうが速い


300:Socket774
08/10/22 02:52:45 72ds95ht
「粘着力はヤモリの足の10倍」、はんだ代替に使える導電性接着剤を米大学が開発
URLリンク(eetimes.jp)

なかなか興味深いですね。
アーキテクチャ関係ないけど。

301:Socket774
08/10/22 17:13:40 QGUEJiks
【1Peta-FLOPS】GPGPUについて語ろう【実用間近】
スレリンク(avi板)

302:Socket774
08/10/22 23:54:49 /t9vpjfq
消費電力は電圧の2乗・周波数に比例するって言うけど
性能も周波数に比例するから、アイドル時に電圧下がるなら
速く処理が終わる高クロックのがワットパフォーマンスは良くなんじゃない?

だとしたらPentium4は何が悪かったの?
周波数を上げても消費電力も性能も同じだけ上がるだけだけど
その周波数を上げるのに電圧を上げなくちゃいけなかったってだけ?

303:Socket774
08/10/23 00:21:58 zxkBdXPG
>>302
見通しではリーク電流を順調に減らせるはずだったけどそうはいかなかった。
それでもTDPと共にクロックを上げ続けたおかげで冷却が物理的に間に合わなくなった。

304:Socket774
08/10/23 00:35:49 svKUApOq
>>295
> Ctは非常にダイナミックなのできっと何か仕掛けてくると思う。LLVMの様な仮想命令と
> optimizationまで取り入れられる。○○とは役者が違う、もう参ったよって感じ。

おれの知ってるCtはOpenMPなC++コードを吐くコンパイラだったのだが、
いつのまにそんな高機能になったの?
ソースプリーズ

305:レトリック君
08/10/23 01:16:27 cidyWJKe
>>304
GhuloumのTechnology Jurnal 2007やWhitepaper。
forward scalingの章辺り以降VIP、VCGの記述の辺り。
今では英語のwikiからもintelのCtのサイトからリンクがたどれる。という以前に、
URLリンク(www.google.co.jp)
など…

306:レトリック君
08/10/23 01:26:41 cidyWJKe
ググるんだったらこっちの方がええんかな…
URLリンク(www.google.co.jp)
すぐに実用的製品に至るかはワカランが、appleの件もあるので

307:287
08/10/23 02:27:45 Ig/uBMS+
>>298
>具体的なIA-32、IA-64、Larrabeeなどの最適化Nativeが生成されて行くというような事が確か文献に。
ふむふむ。
インタプリタでは間接分岐を工夫しないと性能に影響が出るって論文で読んだけど、
インオーダーのLarrabeeなら、それほど影響は出ないかもね。
URLリンク(citeseerx.ist.psu.edu)


>最近モレの周りではこういう研究もプチ流行の気配なんだ。ニヤリ
kwsk!!

>>299
>自己書き換えっていうか動的生成のほうが正しい
なるほど。
しかし、これだけだとLLVMって言うよりJVMのJITっぽいよね。


308:,,・´∀`・,,)っ-○◎●
08/10/23 02:50:46 le5WL46E
やることはJVMのJITそのものだよ。
単純な演算の繰り返しなんで、コンパイル時間より実行時間のほうが多いからJITでも十分。
分岐パターンが一意に決まらない複雑な演算もやらされるJavaよりもある意味では有利。

たとえば、このアプローチが有効なのは
URLリンク(homepage1.nifty.com)
にもあるような量子化の定数を実行時に決めるやつ

GPUでやるような並列コンピューティングの場合、条件分岐の評価を最初の1回目だけあとは
同じパターンを延々繰り返しなんてのが多いからこういう最適化はかなり役に立つ。

JavaScriptエンジンも最近の実装ではJITを使った高速なものがある。
YARV(Rubyの別実装)でもXbyakを使ってx86ネイティブコードを動的生成することが試みられている。

309:287
08/10/23 03:38:21 Ig/uBMS+
Xbyak面白れぇ!使ってみよw

>単純な演算の繰り返しなんで、コンパイル時間より実行時間のほうが多いからJITでも十分。
逆に汎用言語の処理系ではLLVMみたく最適化の結果をファイルに書き戻す処理は流行りそうに思うけど。どうかな?

>JavaScriptエンジンも最近の実装ではJITを使った高速なものがある。
キモ過ぎるな、おいw
ブラウザの上でJITとか走った日にゃ、超高速ブラクラとか遭遇しそうでry)

>YARV(Rubyの別実装)でもXbyakを使ってx86ネイティブコードを動的生成することが試みられている。
ほぅ。さすがssdさんはそんなことまでやってたのか。
VM型インタプリタだから中間言語の仮想命令を一つずつネイティブ命令に置き換える実装?
それとも各仮想命令間をまたぐスーパー命令を動的に定義してくれんのかな?

YARVって確かネイティブスレッド対応だし、YARVのソースをLarrabeeコンパイラに掛けたらそのまま並列化出来そうだよね。


310:Socket774
08/10/23 19:18:18 LbWZWVyh
>>302
ロード時の電力が半端じゃないだろ。
少なくとも初期のPentium 4はアイドル時はPenII以降のデスクトップでは最も消費電力が低い部類です。

311:Socket774
08/10/23 19:48:27 wWDSOmen
>>308
> JavaScriptエンジンも最近の実装ではJITを使った高速なものがある。

唐沢俊一のトリビアなみだなwww

Lars Bakで調べると吉

312:Socket774
08/10/23 20:12:48 wWDSOmen
>>308
> やることはJVMのJITそのものだよ。

ちゃんと調べてから書けば、幼稚なことは書かずにすむ

URLリンク(portal.acm.org)


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