arrayfile gfor不起作用



我尝试运行一个gfor循环,但这只能运行一次...

有人可以帮助我吗?

gfor(seq j, gammaStep-1){
    vector<predicao> vals;
    countLoop = (int) sqc(j).scalar<float>();
    double localGamma = (countLoop+1)*incGamma;
    vector<rbf> rbfs = mountRbf(X1, Y1, localGamma);
    for (int i = 0; i < XT.size(); i++){
        double p = prediction(XT[i], rbfs, localGamma);
        predicao p1;
        p1.val = p;
        p1.err = abs(XT[i] - p);
        vals.push_back(p1);
    }
    double sumErr = 0;
    for (int i = 0; i < vals.size(); i++){
        sumErr += vals[i].err;
    }
    double media = sumErr / vals.size();
    double vary = 0;
    for (int i = 0; i < vals.size(); i++){
        vary += pow(vals[i].err - media, 2);
    }
    double dev = sqrt(vary);
    eM[countLoop] = media;
    eD[countLoop] = dev;
}

在处理结束时,仅计算了EM和ED的第一个位置...

在这里有几个点可能会有所帮助:

  1. 不要将 j 索引转换为标量。

  2. 删除诸如

    的就地蓄能器

    sumerr = vals [i] .err;

  3. gfor loop

  4. 中,仅使用AF ::阵列类型

,但主要问题是

的呼吁
 prediction(XT[i], rbfs, localGamma)

需要完全矢量化,以便它可以在平行循环中运行。
gfor 无法自动化一个任意功能。

另一方面,如果您只想划分另一个逻辑 - RMS错误的计算,则可以将调用的调用从循环中拉出,将结果加载到AF ::计算每个错误,最后将并行循环的外部总和进行。

相关内容

  • 没有找到相关文章

最新更新