【发布时间】:2012-02-22 12:37:54
【问题描述】:
我正在求解 3 个不同的线性方程系统,其中每个系统都取决于前一个系统的结果。它们都共享一些系数,然后与之前的结果一起定义新系统(当然第一个由它自己定义的除外)。
代码有点像这样:
vector<double>point(n);//initialized to values
vector<double>A(n*n,0);
vector<double>b(n,0);
double coefficient;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
coefficient=myCoeff(point[i],point[j]);
//A[i+j*n] and b[j] initialized using coefficient
}
}
vector<double>x(n) //initialized as solution of A\b
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
coefficient=myCoeff(point[i],point[j]);
//A[i+j*n] and b[j] initialized using coefficient and x
}
}
//x=A\b
//and so on for the third system
分析代码显示 80% 的时间用于调用 myCoeff。优化 myCoeff 超出了我的兴趣。
我有两个选择: -将系数写入文件一次并读取两次 - 使用 parallel_for 而不是外部 for 循环。
是否可以将这两个选项结合起来? 欢迎任何其他建议,如果您需要有关我可以提供的代码的更多详细信息。
【问题讨论】:
标签: c++ optimization parallel-processing