プログラムを高速化するために_mm256_load_ps()イントリンシックを使用しようとしました。私が一度に8つの浮動小数点をロードし、それらをさらに計算に使用するために266bベクトルに格納することを意味します。_mm256_load_ps()を使用したときのエラーインテルイントリンシック
/* code snipet */
a_vec = _mm256_load_ps(&a[0])
b_vec = _mm256_load_ps(&b[0])
res = _mm256_addsub_ps(a,b)
/* code snipet */
また、私は私のメイクにこれらのフラグを使用:
CC=gcc
CFLAGS=-g -c -Wall -O5 -mavx -mfma -ffast-math
そして私は、私のプロセッサがAVX拡張をサポートしていることを確認作りました。しかし、私は私のコードをコンパイルするとき、私はこの警告を得続ける:
警告:私はUbuntuの12.04 LTSの64-ビットに
を使用しています:AVXベクトルリターンをAVXせずに有効にすると、ABI [-Wpsabi]PSを変更します
この32ビットコードはありますか?どのオペレーティングシステムをターゲットにしていますか?おそらくABIはAVXレジスタで値を返すことはできません。私は*あなたが私たちから隠した '/ * code snipet * /'部分に 'return'ステートメントがあると仮定します。 –
もう1つ追加するには...私は128bベクトルから256bベクトルへ私のコードを変換していますが、私はその問題があるかもしれないというアライメントを変更していません!!また、インプレースコードを作成してリターンはありません。 –
@ A.nechi AVXはSSEと比較してアラインメント要件を緩和しますが、 '_mm256_load_ps()'は明示的にアライメントされたロード( 'MOVAPS')です。 – EOF