【发布时间】:2014-03-11 11:08:47
【问题描述】:
当我尝试将值分配给 x_dev、y_dev 和 pearson 时,我在 for 循环中出现了这个错误。据我所知,它们都应该是可修改的。谁能看到我哪里出错了?
class LoopBody
{
double *const x_data;
double *const y_data;
double const x_mean;
double const y_mean;
double x_dev;
double y_dev;
double pearson;
public:
LoopBody(double *x, double *y, double xmean, double ymean, double xdev, double ydev, double pear)
: x_data(x), y_data(y), x_mean(xmean), y_mean(ymean), x_dev(xdev), y_dev(ydev), pearson(pear) {}
void operator() (const blocked_range<size_t> &r) const {
for(size_t i = r.begin(); i != r.end(); i++)
{
double x_temp = x_data[i] - x_mean;
double y_temp = y_data[i] - y_mean;
x_dev += x_temp * x_temp;
y_dev += y_temp * y_temp;
pearson += x_temp * y_temp;
}
}
};
按照@Bathsheba 的建议,我已经克服了这些问题。然而,当运行 parallel_for 时,操作符会运行,但永远不会进入 for 循环。
这就是我所说的parallel_for:
parallel_for(blocked_range<size_t>(0,n), LoopBody(x, y, x_mean, y_mean, x_dev, y_dev, pearson), auto_partitioner());
【问题讨论】: