[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 10/27 07:58 / Filesize : 141 KB / Number-of Response : 567
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

MMX SSE 3D NOW!のプログラミング



1 名前:デフォルトの名無しさん [04/05/28 22:00]
どうぞ

296 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 13:51:06 ]
>>295
どうもありがとうございます。
シフト処理を入れたら上手く配置できて、
二倍近く速度が出るようになりました。

297 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 17:21:13 ]
>295
どーでもいいけど、
mov mm0, [esi]
mov mm1, [edi]
じゃね?

298 名前:・∀・)っ-○◎● mailto:sage [2007/04/04(水) 21:13:55 ]
っていうかmovdじゃね

299 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 02:13:45 ]
movq な。

300 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 02:18:01 ]
あ、この場合movqでなくてmovdになるか…。

301 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 04:15:49 ]
つまり団子は普通に名無しで潜伏してる

302 名前:・∀・)っ-○◎● mailto:sage [2007/04/06(金) 21:41:06 ]
イミフ

303 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 14:50:25 ]
ttp://www.cutt.co.jp/book/4-87783-169-1.html

こんな本が出てるね。初学者にはありがたいかも。
SSSE3やSSE4の解説は載ってないっぽいけど、仕方ないか・・・。

304 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:06:23 ]
上下で都合2マソ取ろうっての?ボッタクリ過ぎだろ。
x86アセンブラ入門+IntelのPDFで十分。



305 名前:・∀・)っ-○◎● mailto:sage [2007/05/27(日) 16:37:14 ]
>>303
要らん

操作画面の横でPDF表示する為のサブディスプレイを2万で買ったほうが有意義

306 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:53:13 ]
ひでぇ商売だ

307 名前:・∀・)っ-○◎● mailto:sage [2007/05/27(日) 16:59:20 ]
著者の情報調べてみた
ttp://www.vector.co.jp/vpack/browse/person/an001828.html

最近の作品さっぱり無いな

308 名前:デフォルトの名無しさん [2007/05/27(日) 17:41:16 ]
mmxって廃止なの?
代わりに何をつかえばいいの?

309 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 17:44:22 ]
>>303
不要。
最近のコンパイラは、SSEを自動的に使ってくれる。
むしろ、その最適化にやさしいコードを書いた方がよい。
手動で最適化したところで、大抵数パーセントも上がらない。


310 名前:・∀・)っ-○◎● mailto:sage [2007/05/27(日) 18:29:03 ]
SIMD Intrinsicsの解説やってる実践的な本のほうが欲しいな。
それもIntelで十分か。
どうせならAltiVecとかCellのSPUとかも扱って移植性とパフォーマンスを両立する方法とかね。

311 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:26:02 ]
>>310
Intrinsicsの解説自体はコンパイラのドキュメント読めば十分理解できるだろ。
むしろ実践的なアルゴリズムをいかにSIMDに落とし込むかという話のほうが読み応えないか?

312 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 18:33:00 ]
>>309
アセンブラでSSE使うことが不要というのは言いすぎだと思う。
まあ、結果としてこの本が不要という結論にはなるだろうが。

313 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:27:06 ]
>>310
移植とかは、COINSにお任せしておけば良いのでは

314 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:50:18 ]
金融SE、プログラマにこの辺やOpenMPのHPC系技術をおぼえてほしいんだがな。
誰もわからんからユーザーの俺がプログラミング。どういうこっちゃ。



315 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:59:53 ]
金融で、そんなにシングルスレッド性能がいるの??


316 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 01:07:04 ]
金融の一部の分野は大量データの高速計算や
複雑な計算を瞬時に行う必要がある。

317 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 07:57:11 ]
へー、どんな計算?

318 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 16:21:28 ]
>>316
こういう奴ってさも物事を大げさに書きたがるが、具体的な例や数字は
一つも書かないから結局何を言っているのかさっぱりわからないんだよな。

319 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 19:24:02 ]
>>318
こういう想像力の無い奴に物事を説明するのって疲れるんだよな

320 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 19:56:50 ]
想像力……www

321 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 20:09:35 ]
>>318
デリバのプライシングとか、ALMでのVaR計算とかなんだが詳しく書いても
多分分らんと思うが。

322 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 20:29:00 ]
知らないことを想像しろと言われても、ヒントもなしでは結構難しいと思うのだが。

323 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 20:31:13 ]
リロードしてなかったorz

324 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 20:37:36 ]
>321
それは具体的な「業務内容」であって、具体的な「例」でも「数字」でも無いと思うんだ。
ここが金融系の板ならそれで通じるかもしれんが、ここはム板だから。
例えば必要精度何桁でどんな数式を秒間何万件処理する必要があるとか、そういうこと。
専門用語でお茶を濁す事は具体例では無い。



325 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 20:52:19 ]
>>324
たとえば百万件のデータから求める解を得るためにニュートン法等を数種類、複数回駆使ししたり
モンテカルロシミューレーションで数十万回の試行を行ったりといったこと。

これらはスレッド単位の高速化とマルチスレッドでの高速化により絶大な効果が得られる。
しかし高速化の技術を知るエンジニアは極めて少ないのが実情。

ってとこ。

326 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 21:51:55 ]
モンテカルロ法でSIMD使って絶大な効果ってどんだけ単純なシミューレションだよ。
マルチコア、マルチCPU環境等でマルチスレッドなら同意できるが、
中途半端にSIMD使っても結局速くなった気がするだけ。

がちがちにコーディングする暇があるなら速くなるかもしれないけど
そんなことで工数がホイホイ増えるくらいなら計算機にお金使ったほうがマシ。

327 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 22:00:56 ]
>>326
高速化するために数学的手法を駆使したMCなんだが
MCがすべて単純な繰り返しと思っているレベルの頭脳では話にならん。


328 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 22:27:38 ]
>327
お前プログラマじゃないだろ?
具体例の無い説明といい、「xxを駆使」とかいかにも営業が使いそうな言い回しといい、胡散臭すぎる。

329 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 22:35:50 ]
>>328
流れを読め。

オレ=>>314
これからこの話題につながってるんだが。

また別にお前に依頼してる訳ではないから具体的に書く必要性もない。


330 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:43:09 ]
以下、「お前こそ」禁止。

331 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:14:39 ]
うーむ、よくみりゃ誤字ってたな。

>>327
MCが単純って書いた覚えはないよ。
金融工学の問題ってSIMDがクリティカルに利いてくるような
単純な代数計算なのかって話。

332 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:43:42 ]
たとえばExceで用意されているNormdistといった確率分布関数のようなものは
商用ライブラリーを購入する手があるが、処理スピードと精度のトレードオフの調整が利かない。

これをCで組むと四則演算+EXPの多用となる。普通にプログラミングするとかなり遅いがSIMDを使うと大幅に
高速化する。SIMDにEXPがあると良いのだが。


333 名前:・∀・)っ-○◎● mailto:sage [2007/06/01(金) 00:59:18 ]
その辺はニュートン法使ったりテーラー展開したり。
Intelが数学用ライブラリ出してなかった?

x87のアレはどうせマクロ命令なので。
ちなみにdivpsとかで得られる商は近似値で精度低い。

334 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:06:33 ]
標準関数よりニュートンのほうが早いってことあるのか?
ニュートンは方程式を解くのに多用するが初期値問題があるしな。

MKLのEXPは使い方によるだろうが、メモリにデータを貯める必要があるときは高速だろうが
そうでないとメモリアクセスの遅さがネックになってあまり役立たない。



335 名前:・∀・)っ-○◎● mailto:sage [2007/06/01(金) 01:12:44 ]
SIMDで組み直せば標準関数のスループット越えることなんてざらにあるよ。
あくまでSIMD使うからこそ意味があるんだけど。

336 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:24:31 ]
へ-そうなんだ。
とすれば試してみる価値あるな。

expのニュートンは簡単そうだし。。。
初期値どうするかな

337 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:33:41 ]
金融の問題って収束が遅いモンテカルロでどうにかなるのか。

338 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:37:50 ]
使わないですめばそれにこしたことはない。
解析的に求める方法がなければモンテカルロを使うしかない。
という理由で使われる。

339 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 09:24:19 ]
結局金融には直接関係ない部分の話になっちゃったね。

340 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:29:40 ]

>>335
よく考えたら f(x)=exp(x)で f'(x)=exp(x)だからexpをニュートンで求めるのは無理だな。
 
テーラー展開でやってみたんだが
・テーラー展開式 exp(x)=肺^n/n!
・階乗部分をすべて初期値設定
0!:n0=1
1!:n1=1
2!:n2=2
・・・
x:入力値
expsse:求める値

x=_mm_mul_pd(x,x);
expsse=_mm_add_pd((expsse, _mm_div_pd(x, n0));
x=_mm_mul_pd(x,x);
expsse=_mm_add_pd((expsse, _mm_div_pd(x, n1));
x=_mm_mul_pd(x,x);
expsse=_mm_add_pd((expsse, _mm_div_pd(x, n2));
・・・

こんな感じ。for分使わずn=20までやって精度9桁くらいだったかな。
しかし処理時間は非常に遅かった。
時間がなかったのであまり詳しく調べなかったがコーディングに問題あるかな?


341 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:32:46 ]
Visual C++ 2005 で ssse3 の intrinsics が使えるようだ

342 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 06:08:53 ]
いつのまにSSSE3まで使えるようになったのか
インラインアセンブラのニーモニックは使えるが


343 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 14:01:57 ]
>342
お前が>333でネタ振ったんだから責任もって>340のフォローしろや

344 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 19:50:20 ]
レイテンシのチェインがある mulpd→divpd→addpd
対象データが複数あるなら複数インターリーブするとスループットが稼げます。



345 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 20:33:01 ]
>>344
その理論で行けばSPEのスカラも多くはスループット1クロックで処理出来るんだがな。
つーかx86にその理論を適用するにはレジスタが足(ry

346 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 20:34:12 ]
レジスタリネーム

347 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 20:39:13 ]
XORでゼロクリアしたり(Core 2からSIMDレジスタにも適用)
データ移動(部分データ移動は不可)するとレジスタリネームのヒントになる

SIMDレジスタは内部的に80程度はあるからそこそこいけるんでない?


Cellの演算ユニットはIntelアーキのそれの倍のレイテンシがかかる。
SPEのスカラが性能でないのは、そもそもベクタ化すら出来ないデータを
並列処理でレイテンシ隠蔽するには限界があるから。


348 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:00:36 ]
演算器が先にストールする。

349 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:06:06 ]
連投失礼。
レジスタリネームとかって言ってる人のコードの書き方に興味がある。
よっぽどコンパクトな演算じゃない限り演算結果をレジスタから追い出さなきゃいけないと思うんだが。

350 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:36:42 ]
問題は十分な精度が得られないことだと思う

速度を上げることはそんなに難しくない

定数除算を逆数との乗算に置き換える

a4*x^4 +a3*x^3 +a2*x^2 +a1*x + a0

(((a4*x+a3)*x+a2)*x+a1)*x+a0

tmp=a[N]
for(i=N-1;i>=0;i--) tmp=tmp*x+a[i]

(初期化部分は省略)
LOOP:
mulpd xmm4, xmm0
mulpd xmm5, xmm1
mulpd xmm6, xmm2
mulpd xmm7, xmm3
addpd xmm4, [esi]
addpd xmm5, [esi]
addpd xmm6, [esi]
addpd xmm7, [esi]
add esi, 16
sub ecx, 1
jnz LOOP

351 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 21:50:00 ]
いや除算は近似値命令だから乗算に置き換えるだけである程度
精度確保できるんじゃないの?

Intelはx87倍精度は内部的に80ビット精度に展開して処理してるけど
SSEは精度度外視してたような。
精度が必要ならx87のほうがいいかもしれない

352 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:11:04 ]
近似値なのはrcpps,rsqrtps命令で、
divpsは近似値じゃないんじゃない?

353 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 22:21:41 ]
いや近似値。内部的に逆数近似値と乗算してるだけ。

354 名前:・∀・)っ-○◎● mailto:sage [2007/06/05(火) 22:22:19 ]
ちなみに本物の除算は何十クロックもかかりますから。



355 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:28:36 ]
>>353
そのソースは?
rcppsのレイテンシとmulpsのレイテンシを足しても
divpsのレイテンシよりずっと短いよ。
インテルの命令セットマニュアルには
rcpps,rsqrtpsの説明には近似値であると明記してあるけど、
divpsには近似値なんて書いてないよ。

356 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:32:08 ]
x87を比較対象にしてるでしょ。
そら80bitなら何十クロックもかかるわな。

357 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:08:46 ]
>>350
スマン、教えてほしい
(アセンブラは苦手なだが)多項式近似のパタンは和算→乗算の繰り返しでやるしかないという認識なのだが
乗算を先に4つやって、あとから和算4つ行うって計算は可能なのか?

358 名前:>>357 mailto:sage [2007/06/05(火) 23:13:47 ]
>>344
> 対象データが複数あるなら複数インターリーブするとスループットが稼げます。


359 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:31:26 ]
>>358
そういう手があるのか
サンクス


360 名前:・∀・)っ-○◎● mailto:sage [2007/06/06(水) 00:30:48 ]
>>340>>350の式が一致してない気がするの気のせい?


361 名前:・∀・)っ-○◎● mailto:sage [2007/06/06(水) 00:31:53 ]
>>355
すまんそうだったかも。
ただ仮数部全部厳密に求めるほど精度なかったと思う

362 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:34:38 ]
>>360
別物。テーラー展開とチェビシェフ系の違い。

363 名前:350 mailto:sage [2007/06/06(水) 01:01:20 ]
>>360
>>340のテーラー展開式とintrinsicsでの実装が一致していない

364 名前:340 mailto:sage [2007/06/06(水) 19:11:56 ]
>>344
回答ありがとう。
俺の知識ではいま一つ分らんが命令の並び順に工夫がいるということと
他のデータも同時に処理できたら同時に行うということかな。

>>363
確かに最初がまちがっとる。記述ミスなのできにしないでくだはれ。
ま、exp()だと近似式でやったほうが速そうだね。



365 名前:340 mailto:sage [2007/06/06(水) 19:15:18 ]
ところで金融システムをやる人たちはこの辺の技術を
ほとんど知らないのだけれど皆さんはどの分野でやられてるのでしょうか?

366 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 21:54:11 ]
信号処理とかゲームじゃないかな。
逆に聞きたいのは、金融の分野で応用効くの?
桁数が必要だろうし、スピードよりも可読性が求められそうじゃ無い?

367 名前:340 mailto:sage [2007/06/06(水) 23:23:51 ]
金融では最近一部グリッドが導入されだしたようだけど
HPC分野はほとんど未開拓な状態だと思う。
またSIMDとかMPIなどは外資パッケージソフトの一部では使われている。

SEへの「もっと計算を速くできないか」との要請に対し
自分の無知なことも知らず「莫大な金と時間がかかる」の一点張りで受け入れられないケースが多い。
このため多くのユーザーは高速化は無理なことと思っている。


という状況下、前にも挙げたようにリスク管理やデリバティブ関連などでは高速化へのニーズは高く、
この辺からHPC化が進んでいくと思う。
現時点では、すぐ欲しい計算結果も下手をすると数日かかるといったことが、あたりまえにおこなわれているから・・・

368 名前:・∀・)っ-○◎● mailto:sage [2007/06/06(水) 23:36:08 ]
っていうかmsdn2みたけど
VC++だと数学関数はSSE2対応ならSSE2版使ってくれるようになってるみたい?

純正の最適化ルーチンより速くしようと考えるのはぶっちゃけかなり無謀かと。

369 名前:340 mailto:sage [2007/06/06(水) 23:57:04 ]
exp()はそれほど問題になっていないからいいんだけど
問題は上に書いたことなんだ。

皆さん、金融システムやらないかい?


370 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:16:32 ]
仕事にする気はないが話題として興味はあるな。
重たいのはDBとかで、SIMD化するようなものでは無いイメージがある。

371 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:19:32 ]
そんなのアプリによるのでは?

372 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:23:59 ]
書き込みタイミングも全体パフォーマンスには注意が必要

373 名前:デフォルトの名無しさん [2007/06/18(月) 23:11:59 ]
【派遣ネガティブ根性チェック】

3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。

□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□昼食は必ず派遣先の社員と行くべきだ
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、かわいがってもらうことが大切だ
□チビは派遣先にかわいがってもらいやすから派遣には有利だ

374 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 00:18:26 ]
ねぇねぇこれSSE使ってかける?

int RSHash(string cr)
{
int b = 378551; //Ramdom Ranges I've chosen (can be modified)
int a = 63689;
int hash = 0; //Output hash
int i; //Temp number that scrolls through the string array

for(i = 0; i < cr.length(); i++) //Loop to convert each character
{
hash = hash * a + cr[i]; //Algorithm that hashs
a = a * b;
}

return (hash & 0x7FFFFFFF); //Returns the hashed string
}



375 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 00:43:56 ]
PMULUDQか。
2つの文字列を同時に処理するなら使えるかな?

376 名前:・∀・)っ-○◎● mailto:sage [2007/06/22(金) 00:54:28 ]
intは32ビットね?

MMX/SSE2の掛け算は16ビット×16ビットまでしかできないから
半端に使ってもかえって遅くなるような。

依存関係がきれいに解決できてpmaddwdが適用できれば速くはなりそうだが。

377 名前:・∀・)っ-○◎● mailto:sage [2007/06/22(金) 00:55:54 ]
>>375
ああそっちがあったかど忘れしてた

378 名前:・∀・)っ-○◎● mailto:sage [2007/06/22(金) 01:07:24 ]
ループの内側を2倍に引き伸ばすとこうか?

hash = (hash * a * a * b) + (cr[i] * a * b) + cr[i+1];
a = a * b * b;

引き伸ばしていけば並列演算できそうなところは結構あるんだが、さて・・・
ああ頭いてぇ

379 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 01:46:48 ]
SSE入門したいのですが
みんなどこから手をつけはじめたのですか?

380 名前:341 mailto:sage [2007/06/22(金) 02:34:18 ]
使い方
intrin.hをインクルードすることでSSE3のintrinsicsまでは使える
SSSE3のintrinsicsは自前で各命令を定義することで使えようになる


#include <intrin.h>
/* MMX */
__MACHINEX86X_NOWIN64(__m64 _mm_abs_pi8(__m64))
__MACHINEX86X_NOWIN64(__m64 _mm_sign_pi8(__m64, __m64))
__MACHINEX86X_NOWIN64(__m64 _mm_alignr_pi8(__m64,__m64, int))

/* XMM */
__MACHINEX86X_NOIA64(__m128i _mm_abs_epi8(__m128i))
__MACHINEX86X_NOIA64(__m128i _mm_sign_epi8(__m128i, __m128i))
__MACHINEX86X_NOIA64(__m128i _mm_alignr_epi8(__m128i,__m128i, int))

問題点
palignr命令の3番目の引数が定数でもエラーにならない

381 名前:341 mailto:sage [2007/06/22(金) 02:38:44 ]
>>380の訂正
問題点
palignr命令の3番目の引数が 『定数でない場合に』 エラーにならない

382 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 15:15:51 ]
>>379
俺も最初はこんなのから始めて動作を確認していった。
(この書き方、aがポインタか配列かって区別がややこしいんだが)

#include<stdio.h>
int main()
{
int i,a[]={12,23,34,45};
__asm{
movdqu xmm0,a
paddd xmm0,xmm0
movdqu a,xmm0
}
for (i=0; i<4; i++) printf("%d\n",a[i]);
return 0;
}

383 名前:・∀・)っ-○◎● mailto:sage [2007/06/22(金) 23:23:53 ]
>>381
すまん意味不明。エラーにならないならどんなコード吐くの?

384 名前:341 mailto:sage [2007/06/23(土) 00:28:50 ]
定数の場合
0f 3a 0f c1 01 palignr mm0, mm1, 1

定数でない場合
0f 3a 0f c1 ac palignr mm0, mm1, DWORD PTR _i$[ebp]



385 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:10:46 ]
IA-32 SIMDリファレンス買ってみた。

図がいぱい載ってるぞw

386 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 09:40:42 ]
>>340
exp(x)=2^(y1+y2)と変換する(y1は整数部y2は少数部)
y2を多項式近似で求めると速くできる
10桁程度の精度でよければ7次で可能
>>465


387 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:38:59 ]
>exp(x)=2^(y1+y2)と変換する(y1は整数部y2は少数部)
それをやるならy1は整数、y2は-0.5<=y2<0.5と選んだ方がよさそうだね。


388 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:19:41 ]
>>387
そうだね。
ところでy1が正のときはビットシフトで行けるんだが
負の時はいい方法ないかね?

389 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 12:06:17 ]
IA-32SIMDリファレンスブック
こんな本が出てるね

390 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:24:55 ]
>>303-309

391 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 22:32:30 ]
書店でぱらっと見た感じではSSSE3まで紹介してるみたいだけど
これでどうやって下巻を書くつもりなんだろう

392 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:12:54 ]
誰かSSE2にrcppdとrsqrtpdがない理由を合理的に説明してください

393 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:20:39 ]
あえて近似解をDoubleで使う必要はないからだろう

394 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:16:16 ]
SSEのrcpps,rsqrtpsって
|相対誤差|≦ 1.5×2^-12
って書いてあるから、
仮数部12bitくらいの精度しかないって事だよね?



395 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:17:58 ]
rcppsからもってけるから。命令数も倍になるがな。
そして倍精度にそんなトランジスタ割けないというのが合理的理由だろう。

396 名前:395 mailto:sage [2007/07/08(日) 01:27:58 ]
あー失礼。トランジスタを割けないという主張は同じなんだが
仕組みとしてはテーブルを引いてるだけのはず。
だから24bitとか32bit分ものテーブルを用意出来るわけが無い。

倍精度を使うような人は精度重視なわけで、
divpdあるんだからどうしてもやりたいんだったらソフトウェアでrcppsから精度上げてくれ、
マイクロコードを用意するのはバカバカしい、ということ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<141KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef