使依赖循环独立

时间:2015-06-18 11:19:00

标签: c for-loop parallel-processing gpu

是否有任何技术可以将依赖循环(我的意思是第k次迭代取决于前一次迭代结果的循环)转换为独立循环,使其成为并行化的候选者?这很重要,因为我有这样一个循环,我想将它迁移到GPU。如果它是一个帮助,循环是一个for循环,具有先验已知的迭代计数。

for (int n = 1; n <= nmax; n++) {
    t = nhVal;
    Nv = gfft(pow(real(ifft(tile(i, N, 1) * kv)), 2));
    a = E2 * v + QNv;
    Na = gfft(pow(real(ifft(tile(i, N, 1) * ka)), 2));
    b = E2 * v + QNa;
    Nb = gfft(pow(real(ifft(tile(i, N, 1) * kb)), 2));
    c = E2 * a + Q * (2 * Nb - Nv);
    Nc = gfft(pow(real(ifft(tile(i, N, 1) * kc)), 2));
    v = Ev + Nvf1 + 2 * (Na + Nb) * f2 + Ncf3;
    if (mod(n, 100) == 0)
        printf("n = %d\n", n);
    if (mod(n, nplt) == 0) {
        plotIdx++;
        u = real(ifft(v));
    }
}

0 个答案:

没有答案