以前はSIMD演算子を使用してコードの効率を改善していましたが、現在は解決できない新しいエラーに直面しています。このタスクでは、速度が最も重要です。
配列のサイズは、データがインポートされるまでわかりません。非常に小さい場合(100個の値)または大きい場合(1000万個の値)の場合があります。後者の場合、コードは正常に機能しますが、使用する配列値が130036未満の場合にエラーが発生します。
この問題の原因と解決方法を知っている人はいますか?
関連する(テスト済みの)コードを添付しました。これは、後でより複雑な関数で使用されます。エラーは「arg1List[i]=...」で発生します
#include <iostream>
#include <xmmintrin.h>
#include <emmintrin.h>
void main()
{
int j;
const int loop = 130036;
const int SIMDloop = (int)(loop/4);
__m128 *arg1List = new __m128[SIMDloop];
printf("sizeof(arg1List)= %d, alignof(Arg1List)= %d, pointer= %p", sizeof(arg1List), __alignof(arg1List), arg1List);
std::cout << std::endl;
for (int i = 0; i < SIMDloop; i++)
{
j = 4*i;
arg1List[i] = _mm_set_ps((j+1)/100.0f, (j+2)/100.0f, (j+3)/100.0f, (j+4)/100.0f);
}
}