2

私は Qt5 を使用してプログラムを書いていますQVector <float>が、data()ポインタを 32 バイトに揃えて を割り当てる必要があります。

Qtライブラリ自体を変更せずにこれを行うことができる方法はありますか?

私のコードは次のようになります。

QVector <float> vec;
vec.resize(n);
float *wricker_ptr = wricker.data(); // this should be 32-byte aligned
for (int i=0; i<n; i++)
{
    wricker_ptr[i] = /* some computed value */;
}

Intel の C++ コンパイラを使用しています。

4

1 に答える 1

4

2 つの解決策が思い浮かびます。

  1. 忘れてくださいstd::vector。適切なアロケーターを使用してください。QVectorのデータ ペイロードはalignof(T).¹で割り当てられます
  2. QVector<__m256i>32 バイトのアラインメントは SIMD 処理のにおいがするので、または類似のものを使用できますreinterpret_cast

¹ 完全に正しいわけではありません。http://thread.gmane.org/gmane.comp.lib.qt.devel/22326/focus=22596を参照してください。

于 2015-08-20T10:35:29.927 に答える