1

私は、 parallel -for-loopsがどのように機能するかという考えに頭を悩ませようとしています.

私が疑問に思っているのは、次のように動作する場合、内部にパラレルフォーロップを含むパラレルフォーロップがあるかどうかです(便宜上、n=5 とし、「to」はアップを意味します)。まで (<=)):

ここに私が考えているコードがあります:

parallel for j=1 to n{
    parallel for i=1 to j-1{
       Do-something
    }
}

そして、これは私が傾いているスレッドの動作ですが、正しいかどうか誰かに確認してもらいたいです:

Time           Action
 0       Thread0 creates Thread1
 1       Thread0 creates Thread2, T1 -> T3
 2       T0 -> T4, T1 -> T5

これで、外側の外観のすべてのスレッドが作成されました。そしていよいよインナー。ここで、subXY はスレッド x のスレッド番号 y を意味します。

time           Action
 3       T0 -> SubT0t0, T1 -> subT1t0, T2-> SubT2t0....  

             //All threads have created a subthread t0 so 5 more threads created.

 4       T0 -> subT1t1, subT0t0 -> subT2t1, T1->subT2t2, subT1t0->subT3t1...

             //All the subthreads created more threads AND the 'Older' threads 
             //created subthreads under other 'Older' threads. 11 more created.

 5       T0 -> subT5t2, subT0t0 -> subT5t3, T1 -> subT5t4, subT5t5

             //All threads have been created.
 6       Execute command Do-something

これは私が考えていることの最良の説明ではないかもしれませんが、私が思いつくことができる最高のものです.

これは正しいです?それとも、外側のループ スレッドは、自分自身に接続されたスレッドを作成するだけでしょうか? たとえば、T1 は subT1XX スレッドのみを作成しますか?

また、時間 5 で何もしないスレッドは、その間にコマンドを実行しますか?

誰かが私を助けることができれば、それは私を非常に助けます.

4

0 に答える 0