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% ビジーになり、数分後にラップトップがシャットダウンします。
プログラムに問題があり、シャットダウンが発生しますか? 問題のアイデアを得る方法は?
ありがとう