私は C++ に比較的慣れておらず (科学アプリのパフォーマンスのために Java から移動しました)、SSE については何も知りません。それでも、次の非常に単純なコードを改善する必要があります。
int myMax=INT_MAX;
int size=18000003;
vector<int> nodeCost(size);
/* init part */
for (int k=0;k<size;k++){
nodeCost[k]=myMax;
}
初期化部分の時間を測定したところ、13ms かかりました。これは私の科学アプリには大きすぎます (アルゴリズム全体が 22ms で実行されるため、初期化には合計時間の 1/2 がかかります)。初期化部分は、同じベクトルに対して複数回繰り返されることに注意してください。
ご覧のとおり、ベクトルのサイズは 4 で割られていません。SSE で初期化を高速化する方法はありますか? どのように提案できますか?配列を使用する必要がありますか、それとも SSE をベクトルでも使用できますか?
どうか、あなたの助けが必要なので、a) 「どのように時間を測定しましたか」または b) 「時期尚早の最適化は諸悪の根源です」という質問はどちらも合理的ですが、a) 測定された時間は正しいです b ) 同意しますが、他に選択肢はありません。コードを OpenMP で並列化したくないので、SSE が唯一の代替手段です。
ご協力いただきありがとうございます