- 1 名前:デフォルトの名無しさん [04/05/28 22:00]
- どうぞ
- 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のアラインメントの扱いが楽なのはちょっといいと思った
- 422 名前:・∀・)っ-<コ:彡- mailto:sage [2007/09/04(火) 07:15:10 ]
- SSE4.1でXMM-汎用レジスタ間のデータ出し入れが簡単になるからシフトやローテートは我慢。
- 423 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 23:49:14 ]
- >>422
もー出てるなら我慢できるけどさ、まだ出てないじゃん。
- 424 名前:・∀・)っ-<コ:彡- mailto:sage [2007/09/06(木) 00:47:16 ]
- それ言っちゃうとBulldozerはおろかBarcelonaすら出てないが
- 425 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 17:12:17 ]
- MMXのpmull, pmulhはどういう使い方が想定されているのでしょうか?
なんか使いにくそうに思えるのですが……。
- 426 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 19:17:59 ]
- >>425
pmull : 16 bit で済む時 pmulh : 小数部 16 bit の固定小数点乗算したい時
- 427 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/20(土) 01:26:21 ]
- xbyakを魔改造するか
- 428 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:36:46 ]
- IA-32 SIMDリファレンスブック<下>
www.cutt.co.jp/book/4-87783-170-7.html SSSE3まで SSE4はない
- 429 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:52:02 ]
- だから高いって。
- 430 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:49:44 ]
- ぼったくりでそれか。マジいらん。
- 431 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/25(木) 01:55:23 ]
- SDK for 45nm Next Generation Intel Core 2 Processor Family and Intel SSE4
にSSE4.1/4.2のマニュアル一式とエミュレーションDLLがついてるからそれで十分。
- 432 名前:デフォルトの名無しさん [2007/10/27(土) 05:20:50 ]
- 総和を求めるなど、一つの変数が共通の場合、SSEを使って計算するCコードを教えてください
- 433 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/28(日) 02:23:19 ]
- 総和なら簡単じゃん
__declspec(align(16)) float a[100]; float dest; //SIMD化前 for (int i = 0; i < 100; i++) { sum += a[i]; } //SIMD化後 __m128i sumx = { 0.0f,0.0f,0.0f,0.0f }; for (int i = 0; i < 100; i++) { sumx = _mm_add_ps(sum, *(__m128*)&a[i*4])); } sumx = _mm_hadd_ps(sumx, sum); sumx = _mm_hadd_ps(sumx, sum); _mm_store_ss(sum, sumx);
- 434 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/28(日) 02:24:14 ]
- 訂正
//SIMD化後 __m128i sumx = { 0.0f,0.0f,0.0f,0.0f }; for (int i = 0; i < 100; i+=4) { sumx = _mm_add_ps(sumx, *(__m128*)&a[i])); } sumx = _mm_hadd_ps(sumx, sum); sumx = _mm_hadd_ps(sumx, sum); _mm_store_ss(sum, sumx);
- 435 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 21:29:38 ]
- movqに対応する組込み関数ってないん?
- 436 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 21:57:18 ]
- _mm_loadl_epi64
- 437 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 22:03:36 ]
- Σ(・ω・ノ)ノエッ
- 438 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 00:19:03 ]
- __m128i _mm_loadl_epi64(__m128i*)
__m128i _mm_move_epi64(__m128i) void _mm_storel_epi64(_m128i*, __m128i)
- 439 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 02:28:07 ]
- sse4のベンチ見てるとちょっと心配になってくるな。
- 440 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/11/01(木) 23:00:54 ]
- >>435
MMXのは無い。 __m64 mm0 = a[i]で既にロードに展開される。てか、コンパイラ任せ。
- 441 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:03:24 ]
- x86の話なんですが
64ビット整数のグローバル変数1つを操作する関数が 頻繁に呼ばれるプログラムを作っています。 アセンブラ見ると、32ビットずつ操作しているようなんですが これをMMXを使っていっぺんに操作するようにすれば、高速化しますか? 高速化するなら、MMX勉強してみようかなと思ってるのですが。
- 442 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:57:23 ]
- しません
- 443 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:59:23 ]
- andとかorとかビット演算だけなら可能性がないとも言えない。
- 444 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:10:28 ]
- >>441
double でやればー?
- 445 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/11/14(水) 23:38:44 ]
- 関数コールのインライン化のほうがまだ効果あるかもな
- 446 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 23:14:35 ]
- 2つの4byteのデータを先頭から任意の
ビット数一致しているかチェックするのに SSEって有効に使えそう?1ビットずつチェック とかアホ過ぎて uint32_t chk_bit(uint32_t master, uint32_t src, uint32_t bit){ この中どうしよう。 }
- 447 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/12/22(土) 23:53:57 ]
- 【この中】
return ((master ^ src) >> (32 - bit)) != 0;
- 448 名前:デフォルトの名無しさん mailto:age [2007/12/24(月) 00:16:33 ]
- xmmレジスタを128bit intとして使う場合,
あるbitが立っているかどうかを高速に調べる方法はありませんか? SSE4.1でptst命令が導入されますが,それまで待ってられません.
- 449 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 00:30:38 ]
- xmm0に調べたい値ががあるとすれば
movdqa xmm1, [pattern] movdqa xmm2, xmm0 pand xmm2, xmm1 pcmpeqb xmm2, xmm1 pmovskb eax, xmm0 test eax, eax でeaxが0以外ならビットが立ってる。
- 450 名前:ヽ>´∀`<,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 00:31:51 ]
- pmovmskbに訂正してくだしあ><
- 451 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:46:27 ]
- THX
やはりpmovmskbで移すしかありませんか... Nehalemまでは64bit int x 2でやっとくのが吉?
- 452 名前:デフォルトの名無しさん [2007/12/24(月) 11:21:12 ]
- ptestはPenrynじゃね?
- 453 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:14:13 ]
- LARGE_INTEGER otime, ntime;
〜略〜 double dt = (double)((ntime.QuadPart - otime.QuadPart) * (1000.0f / f.QuadPart)); をSSE使ってVC8のインラインアセンブラで書くとどうなりますか?
- 454 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:38:49 ]
- どう考えてもスカラ演算だよね
- 455 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:04:35 ]
- 64bit整数を64bit浮動小数点数に返還するSSE命令は
64bitモードにしかありません VCでは64bitモード用のプログラムにインラインアセンブラは使えません
- 456 名前:ヽ>´∀`<,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 20:30:13 ]
- *intrin.hのマニュアルを見ればいいと思うが
- 457 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:32:45 ]
- SSEで書く利点なくね?
- 458 名前:ヽ>´∀`<,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 20:37:16 ]
- 無いな
- 459 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:58:49 ]
- 書けても手間損
- 460 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:00:24 ]
- ファイヤーウォール作る時に
パケット解析するのにSSE使っても 手間になるだけ?
- 461 名前:ヽ>´∀`<,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 21:02:06 ]
- そろそろテンプレ作ったほうがいいんじゃないの。
SSEは大量のデータに同じ処理をかけるときにこそ効果を発揮するんであって 細かい所は従来のx86命令のほうがむしろ速い。
- 462 名前:ヽ>´∀`<,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 21:03:24 ]
- >>460
そういうのに向いてるって話は聞いたことがない。
- 463 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:55:34 ]
- 単一の64bitや128bit値を何回も計算するときは?
- 464 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:57:38 ]
- 汎用レジスタに納まらないサイズ弄るなら効果あるんじゃないの?
- 465 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/12/24(月) 22:04:42 ]
- アレはあくまで32ビット値を4つ同時に扱うものであって、多倍長扱うならむしろ64ビットモードで汎用レジスタベースでやったほうがいい。
- 466 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:15:44 ]
- ( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェー
- 467 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:49:27 ]
- PADDQとかの事だろうけどC2Dでもレイテンシ2だしね
実装はcarry selectあたりだろうか
- 468 名前:451 mailto:sage [2007/12/26(水) 11:18:07 ]
- >>452
遅レスだが ptestはSSE4.1で,PenrynはSSE4じゃなかった?
- 469 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:52:30 ]
- SSE4はSSE4.1とSSE4.2の両方を含む呼称(正確には、という事になった)
Penrynは4.1のみ Nehalemは4.1と4.2の両方 >>452で合ってるんじゃねーの?
- 470 名前:451 mailto:sage [2007/12/26(水) 13:20:32 ]
- >>469
どうもその様ですね,THX. ttp://pc.watch.impress.co.jp/docs/2007/0925/hot507.htm Penrynならそれほど待たなくて済むなぁ,どうしよう.
- 471 名前:451 mailto:sage [2007/12/26(水) 13:22:02 ]
- >それほど待たなくて済むなぁ
これは価格が手頃になるのを,って意味です
- 472 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 13:25:45 ]
- 64bit浮動小数点数の配列があったとき絶対値が最大の要素を
求めたいのですがSSE2を使って高速にできるでしょうか? 普段はVC++を使ってますがより高速化できるならアセンブラ もつかってみようかと考えてます。OSはVista(64bit)です。
- 473 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 13:54:20 ]
- >>472
x64用ののVC++だとデフォルトでSSE2を使うようになっている。 下のを cl /c /O2 /FAsc test.c でコンパイルして、test.cod を見てみるとまあまあのコードが生成されているぞ。 double maxabs(double array[], int size) { double ans = 0.0; for (int i=0; i<size; i++) ans = __max(ans, abs(array[i])); return ans; }
- 474 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:30:53 ]
- >>473
Cだと「for (int i=0;」のところでエラーになるので #include <cmath> #include <cstdlib> を付け加えてCPPファイルにしてコンパイルしてみました。 movsdx andpd comisd などが使われていますね。これがSSE2かな? でもこれが本当に高速なコードかどうかはわからないですね。 インテルでMKLというライブラリを出してますがこれはすごいですね。 試したのは行列計算の一部だけ(LU分解)ですが数値計算の本に載っている プログラムをVC++でコンパイルしたものより5倍ぐらい高速です。 数学レベルで新アルゴリズムを開発した可能性は低いので実装レベル の技術が高いと思うのです。 5倍の差は大きいのでSSEなどを勉強して何とか近づきたいのですが 大変かな?
- 475 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:38:45 ]
- dou you make correlated random number?
|

|