- 【C++】高速化手法【SSE】
974 :デフォルトの名無しさん[]:2015/05/20(水) 15:47:05.48 ID:Ndb25Eqw - 初めてきたが。
8ビット区切りで、同じ処理を一斉にやりたいということか? CPU拡張命令なんかは詳しくないが、そこがほんとにボトルネックになってるのか。 拘る意味があるのか。
| - 【C++】高速化手法【SSE】
977 :デフォルトの名無しさん[]:2015/05/20(水) 16:06:29.24 ID:Ndb25Eqw - ぐぐってみたが、これは2並列だが同様に3並列が出来ればいいって話か?
pmaddwd 積和演算をします. レジスタ 内容 mm0 [W3:W2:W1:W0] mm1 [W3':W2':W1':W0'] に対して pmaddwd mm0,mm1の後 mm0 [W3*W3'+W2*W2':W1*W1'+W0*W0'] http://homepage1.nifty.com/herumi/adv/adv10.html
| - 【C++】高速化手法【SSE】
979 :デフォルトの名無しさん[]:2015/05/20(水) 16:09:55.55 ID:Ndb25Eqw - 一つ余分だが、4並列の積和演算あったぞ。
SSE2 整数命令一覧 pmaddwd 積和演算 レジスタ 内容 xmm0 [W7, W6, W5, W4, W3, W2, W1,W0] xmm1 [W'7, W'6, W'5, W'4, W'3, W'2, W'2, W'0] xmm0 [W7*W'7+W6*W'6, W5*W'5+W4*W'4, W3*W'3+W2*W'2, W1*W'1+W0*W'0 ] http://diary.jdigital.be/toshi/asm/SSE2_IntOP.html
| - 【C++】高速化手法【SSE】
980 :デフォルトの名無しさん[]:2015/05/20(水) 16:20:21.00 ID:Ndb25Eqw - >>942だと、>>979の命令を使ってこれでいいんだろ?違うか?
xmm0 [0, 0, dr, sr, dg, sg, db, sb] xmm1 [0, 0, 255-a, a, 255-a, a, 255-a, a] pmaddwd(xmm0, xmm1)
| - 【C++】高速化手法【SSE】
985 :デフォルトの名無しさん[]:2015/05/20(水) 17:49:18.18 ID:Ndb25Eqw - なるべく個々のデータ取り出しはせずに演算だけを繰り返して
普段使うデータ自体をSSEレジスタにセットしたままでいいんじゃないか? 一回計算しただけで結果をすぐ使いたいなら前処理、後処理の手間が大きいが。
| - 【C++】高速化手法【SSE】
987 :デフォルトの名無しさん[]:2015/05/20(水) 18:07:58.70 ID:Ndb25Eqw - 普段使うメモリ上のデータのほうを並び替えて一命令でSSEレジスタに転送できるように格納しておく。
| - 【C++】高速化手法【SSE】
989 :デフォルトの名無しさん[]:2015/05/20(水) 18:23:10.27 ID:Ndb25Eqw - 一度もSSEを使った経験がない・・・実装済みで、動作するアルファブレンディングのコードってない?
SSEあり、なしでどれだけ違うのか自分の環境で計測してみたい。
| - 【C++】高速化手法【SSE】
991 :デフォルトの名無しさん[]:2015/05/20(水) 19:03:17.55 ID:Ndb25Eqw - サンクス
| - 【C++】高速化手法【SSE】
995 :デフォルトの名無しさん[]:2015/05/20(水) 21:09:31.50 ID:Ndb25Eqw - うちのPCでは、SSSE3が動作しないと判明。
_mm_maddubs_epi16 追加のストリーミング SIMD 拡張命令 SSSE3 3 () pmaddubsw を生成します。 https://msdn.microsoft.com/ja-jp/library/vstudio/bb514017(v=vs.110).aspx
|
|