1. (i) (j) (k)
設 Q processor core 使 N/Q 個 nodes 能平行計算
設 FP num 為單精度32 bit
傳輸效率:10Gbps iff 0.1 ns/bit
1台機器:
(1) N nodes 須計算
(2) transfer 不花時間
T_1(N) = N/Q * A ns
2台機器
(1) 每台機器有 N/2 nodes 須計算
(2) 共 N^2/2 FP nums 須 transfer
T_2(N) = (N/2*Q) * A + (N^2/2)/Q * 32 * 0.1 ns
p 台機器
(1) 每台機器有 N/p nodes 須計算
(2) 共 ((p-1)/p)*N^2 FP nums 須 transfer
(每台有N/p FP nums 須傳輸至另外的p-1台機器上的各N/p nodes 上,
且共有p組須傳輸)
T_p(N) = (N/p*Q) * A + ((p-1)/p)*N^2/Q * 32 * 0.1 ns
8. (a)
typedef struct {
semaphore barrier(0);
semaphore mutex_count(1);
int count;
} barrier;
void barrier_wait (barrier *b, int n) {
wait(b->mutex_count);
b->count++;
if (b->count == n) signal(b->barrier);
signal(b->mutex_count);
wait(b->barrier);
wait(b->mutex_count);
b->count