3n+1 問題: 並列化

長くなったんで別エントリで。単体CPUでは弾さんのところを見ると最速に達したっぽいんで、複数CPUでの並列化を考えてみる。といっても単純で、k のループを単純に分割する。

    MPI_Init など並列計算オマジナイ
    nprocs = プロセッサ数
    myrank = 自分のプロセッサ番号

    for(k=myrank;k<n;k+=nprocs)
    {
   ...
    }
    通信して各プロセッサが持っている g の最大値のうちで最大のものを表示

小さいkのテーブルの計算が無駄に重複するが、n が大きいと無視できると思われる。各プロセッサの計算時間が不均一になるが、多分±数10%に収まると思う。いま手元に並列機がないんで試せないけど。