1 名前:デフォルトの名無しさん [04/05/28 22:00] どうぞ
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から精度上げてくれ、 マイクロコードを用意するのはバカバカしい、ということ。
397 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:42:11 ] >>396 能書き垂れてるんだが 結局393と何が違うんだよ
398 名前:395 mailto:sage [2007/07/08(日) 08:28:15 ] >>397 違いは無い。ただ393だけ言われても392が納得しづらいだろう。 テーブルの要素数が 12bit->4096 24bit->1677万 だけ必要であると考えれば物理的に無理な事が納得出来る。
399 名前:・∀・)っ-○◎● mailto:sage [2007/07/08(日) 13:13:44 ] まあマイクロコード組み合わせればできなくも無いだろうけど クロック数かかる上に【近似】解じゃねぇ
400 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:20:07 ] >>389 この本買ってみたけど、リファレンスいうから命令全部載ってるのかと思ったら載ってなかった 手元にリファレンス的なものがあるといいなと思って買ったのに・・・詐欺だわー超高いし
401 名前:薄汚い派遣の国、日本 [2007/07/15(日) 21:35:53 ] 最近、職場で「出戻り寄生派遣」という言葉が囁かれています。 派遣契約を切られたにもかかわらず「次の派遣先でも切られてしまって生活できません」 などと 言って泣き落としで再契約した派遣のことです。 今月初め、半年前に切った派遣が出社してきてみんなびっくりしました。 影でコソコソ偉い人に泣きついて再契約したそうです。同じ部署の人には黙って・・・ そんなことまでして自宅の近くの派遣先にこだわって人間として恥ずかしくないのですか。 派遣でスキルアップ、派遣で収入アップとか言うなら一箇所にしがみつかず 複数の会社を渡り歩いてください。 ひとつの会社で派遣向けの単調な仕事をしていたらスキルアップなんてありえないでしょう。 身分不相応な商品のローンを払うために派遣だと当然足りない収入は親にも寄生して、 いつ切られるんじゃないかとビクビクしながら人事権のある人間とだけ仲良くし、 契約終了を通知されれば泣き落とし。悲惨な人生ですね。 氏んだほうがいいんじゃないですか。
402 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 19:33:12 ] >>400 download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Online_i.pdf これでええやん。 あとはビルトイン関数のヘッダ見ればだいたい書けるだろ。
403 名前:デフォルトの名無しさん [2007/07/21(土) 21:32:10 ] 【派遣ネガティブ根性チェック】 3つ以上、チェックがつけばアナタの性格はひん曲がっており、 ネガティブ負け組派遣人生を歩んでいます。 □派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする □仕様とは正社員から口伝されるものだ □口伝された仕様を意図どおり理解できなかったのは自分の責任だ □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは派遣の仕事ではない □派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ □派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい □奢ってくれる派遣先正社員を尊敬する □自分の月額金額を知らないのは当然だ、単金を聞いてはいけない □派遣先正社員より自分の生涯収入が低いのは当然だ □チビは派遣先にかわいがってもらいやすから派遣には有利だ
404 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 18:34:11 ] SSE2で、ベクトルの各要素ごとに独立なシフト量を設定してシフトを行うことは不可能 という理解で良いですか? a[0] <<= b[0] a[1] <<= b[1] a[2] <<= b[2] a[3] <<= b[3] みたいな事がやりたいんですが。
405 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:05:42 ] >>404 処理速度は劣るが、シフトの代わりに乗算で処理するとか。
406 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 23:47:27 ] 残念ながらそれだとスカラーよりも遅くなってしまいました。うーむ
407 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 09:54:29 ] そうか。面白そうな問題なので何とかして高速化したいなあ。
408 名前:・∀・)っ-○◎● mailto:sage [2007/07/29(日) 02:13:32 ] >>404 うん無理。AltiVecだとできるんだよねそれ。
409 名前:・∀・)っ-○◎● mailto:sage [2007/07/29(日) 02:26:32 ] 下位ビット落ちるけどこんなのはどう? cvttpi2ps→指数部操作→cvttps2pi
410 名前:341 mailto:sage [2007/08/25(土) 01:58:03 ] VC++ 2008のIntrinsicsは Intel SSSE3/SSE4.1/SSE4.2とAMD ABM/SSE4aに対応しているようだ
411 名前:・∀・)っ-○◎● mailto:sage [2007/08/25(土) 03:04:10 ] Intelでいうとsmmintrin.hって奴か。 なにSって。
412 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 11:25:57 ] 失礼します。 MMXのシフト系の命令って、ソースオペランドに直値、メモリ、MMレジスタのみですよね? 汎用レジスタ(eaxとか)を書いてもうまく動作しなかった気がするんですが、 VC6,VC8ともに、以下のコードがエラーにならず通ってしまいます。 psllq mm0 , eax 何か勘違いしてますか?
413 名前: ◆0uxK91AxII mailto:sage [2007/08/26(日) 13:46:03 ] >>412 disassembleしてみたまえ。
414 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 14:50:52 ] >>413 eaxって書いたところがmm0になってました。 インラインアセンブラのバグ? VC6のころからそうなのに VC8でも放置してるのはなんか理由があるのかな。
415 名前:・∀・)っ-○◎● mailto:sage [2007/08/26(日) 17:02:22 ] mm0もeaxも3ビット表現の 0 だもの。 汎用・FP/MM・XMMのレジスタ指定はopcodeで決まるから
416 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 17:31:27 ] >>415 逆アセしてmm0に見える理由がそれだとしても、アセンブラの文法 としてeaxって書くべきではないところに、そう書いてエラーにしない のはおかしいと思いませんか?
417 名前:・∀・)っ-○◎● mailto:sage [2007/08/26(日) 17:32:25 ] movd eax mm0と movd mm0, eax だとどうなるかな。opcodeで区別してるはずだが
418 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 17:44:31 ] その命令は見た目どおりに動くので、特にいうことはありません。
419 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 17:09:15 ] >>404 AMDが発表したSSE5で独立シフト量ができるようになるね。 SIMDのローテート命令まで追加されてる。 developer.amd.com/assets/sse5_43479_BDAPMU_3-00_8-27-07.pdf
420 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 04:12:12 ] もう32bit fpと整数はAltiVec互換にしてくれよ AltiVecからSSEに仕方なく移ったマカーな俺にはSSEは使いにくすぎる
421 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 04:17:13 ] でもload/storeのアラインメントの扱いが楽なのはちょっといいと思った