- C、C++の最適化について語るスレ 3
973 :デフォルトの名無しさん[sage]:2014/03/16(日) 21:54:49.99 ID:G/OYWqJl - >>965の問題はICCだとこんな方法が使える?
http://www.isus.jp/article/compileroptimization/avx_part3/ >__assume() を使うことによりコンパイラーの最適化に有用な情報を伝えることが可能です。 >以下の例では変数 num1 が 8 の倍数である(具体的な値は問わない)と指示することで、 >b[0], b[0+num1], b[0-num1] が同じ 32 バイト境界のアドレスにあることがコンパイラーに伝わります。 >void foo(float *restrict a, float *b, int n, int num1){ > int i; > __assume_aligned(a, 32); > __assume_aligned(b, 32); > __assume(num1%8==0); > for (i=0; i<n; i++){ > a[i] += b[i]+b[i+num1]+b[i-num1]; > } >}
|