我使用ff:
- 旧双核笔记本电脑
- Ubuntu 14.04
打开mpi
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 是否有问题导致关机?如何获得解决问题的想法?
谢谢