我对 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;
}
我已经测量了初始化部分的时间,它需要 13 毫秒,这对于我的科学应用程序来说太大了(整个算法在 22 毫秒内运行,这意味着初始化需要总时间的 1/2)。请记住,对于同一个向量,初始化部分将重复多次。
如您所见,向量的大小未除以 4。有没有办法用 SSE 加速初始化?你能建议怎么做吗?我需要使用数组还是 SSE 也可以与向量一起使用?
拜托,既然我需要你的帮助,让我们都避免a)“你是如何测量时间的”或b)“过早的优化是万恶之源”这对你来说都是合理的,但是a)测量的时间是正确的b ) 我同意,但我别无选择。我不想将代码与 OpenMP 并行化,因此 SSE 是唯一的后备方案。
谢谢你的帮助