2013-02-22 25 views
0

我需要为某个项目编译一些代码,并且我收到了很多错误,这并不是因为代码写错了,但我认为在尝试编译之前我有一些变量需要替换。实际的代码是有点长,因为它是专为并行计算,但下面是没有parallelism.What一个更简单的版本是这样计划的目的,什么是输入变量:程序的用途

int main(int argc, char *argv[]) { 
    int n = ...; 
    float *x, *y; 
    x = new float[n+1]; 
    y = new float[n+1]; 

    ... // fill x, y 

    // do computation 
    float e = 0; 
    for (int i=1; i<n; ++i) { 
    x[i] += (y[i+1] + y[i-1])*.5; 
    e += y[i] * y[i]; 
    } 

    ... // output x, e 

    delete[] x, y; 
    return 0; 
} 
+1

不幸后,这将是非常困难的人来回答这样一个一般性的问题。如果你不知道该程序的目的,为什么你甚至试图编写它或编译它?解决任何问题的第一步是对你想要解决的问题有一些了解。但是,对于你所拥有的,我最好的建议是为'n'选择一个任意的小数字,为'x'和'y'的n + 1值选择一些任意的数字(比如从'1'到'n + 1'),添加一些代码输出'x'和'e',然后查看结果。 – Simon 2013-02-22 05:19:38

+0

你是否刚刚从教科书中剪下一个随机页面,并试图找出上下文?关闭问题 – 2013-02-22 05:24:38

+0

如果你不知道这段代码做了什么,你为什么需要它? – 2013-02-22 05:25:49

回答

1

确定。看来代码主要是例如或概念证明。我想并行是关于它特殊的“ForEach”功能,和一些数据网格...

我修改了网站上的样本之一(如果有人想要一个更可读的例子)。从Here

int main(int argc, char *argv[]) { 

    int Repeat = 100000;  // Will perform the computation 100,000 times. 

    Grid1 *Grd = new Grid1(0, Repeat+1); 
    DistArray X(Grd), Y(Grd); // Some data grid arrays (used for the computations) 


    // Set X and Y... 
    ForEach(int i, it, 
    X(i) = 0; 
    Y(i) = 1*i;) 


    Grid1IteratorSub it(1, Repeat, Grd); 

    float E = 0; // One of the return values 

    // Do the computations: 
    ForEach(int i, it, 
    X(i) += (Y(i+1) + Y(i-1))*.5; 
    E += sqr(Y(i));) 

    // Output the modified data: 
    cout << "X: " << X; 
    cout << "E: " << E; 

    return 0; 

} 

**编辑两者 看到Parallel For

+0

在sourceforge上有一个站点,名为parallel-for,其目的是试图将各种并行代码类型统一为一个更简单的版本。我为我的项目比较了gpu群集上的PVM和MPI的性能,并且该网站使用cuda和使用cuda的MPI都使用了示例代码。我需要确定这个代码的功能,这是集群软件的单一计算机版本,所以我可以告诉我是否可以通过对它们进行计时来比较它们。 – user2093696 2013-02-22 11:59:29

+0

啊,非常有趣...我一直很喜欢并行计算。 – Mitch 2013-02-22 21:43:57

+0

我在parallel-for上看到代码,非常有趣...令人伤心的是代码不太可读(需要更多描述性变量名称)。 – Mitch 2013-02-22 21:48:50

相关问题