MPI程序关机笔记本电脑

时间:2014-12-24 10:06:46

标签: ubuntu parallel-processing mpi openmpi perfect-numbers

我正在使用ff:

  • 旧双核笔记本电脑
  • Ubuntu 14.04
  • 的openmpi

    int main() {
    
    int n = 34000000;
    int count = 0;
    
    MPI::Init();
    int size = MPI::COMM_WORLD.Get_size();
    int rank = MPI::COMM_WORLD.Get_rank();
    
    for(int i=rank+2; i<=n; i+= size) {
        if (isPerfect(i)) {
            count++;
        }
    }
    
    if (rank == 0) {
        for (int i=1; i<size; i++) {
            MPI::Status status;
            MPI::COMM_WORLD.Recv(&n, 1, MPI::INT, MPI::ANY_SOURCE, 0, status);
            count += n;
        }
        cout << count << " perfect #s" << n;
    } else {
        MPI::COMM_WORLD.Send(&count, 1, MPI::INT, 0, 0);
    }
    
    
    MPI::Finalize();
    
    return 0;
    

    }

    #include<math.h>
    
    bool isDivisible(int n, int d) {
        return n % d == 0;
    }
    
    
    bool isPerfect(int x) {
        int sum = 1;
        int max = ceil(sqrt(x));
    
        for(int i=2; i<max; i++) {
            if (isDivisible(x, i))
                sum += i + (x/i);
    
            if (max*max == x)
                sum += x;
        }
    
        return sum == x;
    }
    

我使用mpirun运行程序。 mpirun -np 2 ./a.out 较大的n值会使2 CPU 100%忙碌,几分钟后我的笔记本电脑就会关机。

我的程序中有没有问题w / c导致关机?如何了解问题?

感谢

1 个答案:

答案 0 :(得分:0)

我的代码没有任何问题我自己测试一下。也许你的笔记本电脑由于过热而关机。