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


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

【C++】高速化手法【SSE】



1 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 02:55:36 ]
C++やインラインアセンブラ、SSEなどによる高速化の手法
について語りましょう。

204 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:11:32 ]
>>191
cygwin上のgccで試してみたけど、padding入らないよ

205 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:59:38 ]
>>204
CPUによるが
struct foo {
char a;
double b;
};
でパディングが入らなかったら例外起きるだろうが。

206 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:41:55 ]
起こんねーよ、CPUによるが。

207 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:55:43 ]
struct {char a, b, c;}だったらパディングなくても例外起きないよ。
コンパイラがまともなら。

208 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/01/12(月) 17:32:33 ]
アラインメント制約の厳しいプロセッサなら、例外が起きないようにコンパイラが勝手にパディングするんじゃないかな。


しかしミスアラインメントのデータに対するロード・ストアの扱いは各CPUアーキ毎に方針が違ってて面白いな
x86のSSE以降は、ミスアラインメントを許すが遅い命令と、許さないが高速な命令の2通りを用意。
対して、POWER/CellのSIMDは下位ビットを無視してロードし、プログラマが勝手にPermuteしてくれっていう扱い。

209 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:31:15 ]
下位ビットを無視してくれるのはわざわざAND取ってアライメントする必要がないから楽でいいよな。

210 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:38:09 ]
中を作る側もデコーダが軽くなるからウマー


211 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:17:59 ]
>>205
> >>204
> CPUによるが
> struct foo {
> char a;
> double b;
> };
> でパディングが入らなかったら例外起きるだろうが。

なぜ勝手にdoubleが入ってるんだww
誰もそんな場合の話はしていない。
団子にこんな基本的なことで嘘つき呼ばわりされたが嘘じゃないってことで

>>185
> struct{char value;} array[0x100];

212 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:46:59 ]
ところでパディングの入らない環境ってどんな環境だろ?
PC用で32bitプロセッサじゃ大抵入ると思うが。
sizeof(struct{char value;})==4
見たいにね。



213 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 02:10:47 ]
struct{char value;} array[0x100];
printf("%d\n", sizeof(array));
=> 256
gcc-4.3.2ではこうなったけど、パディングってそもそも何だ?無効領域?

214 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 02:48:14 ]
>>212
Crayだとchar=short=int=32bitとかが普通らしい。
PC用じゃないけど。

215 名前:デフォルトの名無しさん mailto:age [2009/01/13(火) 17:31:55 ]
>>213
ゴメン
sizeof(struct{char value;})じゃ1だね。
sizeof(struct{char v1;short v2})じゃ4になったから試さずに
書いちゃった。メンバーが同じサイズなら配列化されるっぽいね。

216 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 19:04:45 ]
1つの構造体中でサイズ違いのアクセスが発生するかどうかによって変わるのじゃない。
連続の同一単位アクセスだけなら必要ないし、むしろ最適化にも邪魔だと思うんだよね?

struct{char a;} arrayo[10];
struct{char a; char b;} arrayp[10];
struct{char a; char b; char c;} arrayq[10];
struct{char a; int b;} arrayr[10]; /* inserted */
struct{int a; char b;} arrays[10]; /* interted */

217 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/01/13(火) 21:09:54 ]
俺的に配列は__declspec(align(32))がデフォです

218 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:34:41 ]
32?
16じゃないのか?

219 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/01/13(火) 23:06:38 ]
AVX化を視野に入れてるから

220 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 08:14:08 ]
Alphaには16bitレジスタなかったよん






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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