マルチプロセッサによる並列処理で得られる高速化率(単一プロセッサのときと比べた倍率)Eを,次の式によって評価する。
r=0.9のアプリケーションの高速化率がr=0.3のものの3倍となるのは,プロセッサが何台のときか。
E = 1/(1-r+r/n)
ここで,
n:プロセッサの台数(1≦n)
r:対象とする処理のうち,並列化が可能な部分の割合(0≦r≦1)
とし,並列化に伴うオーバーヘッドは考慮しないものとする。
正答4
解説
正解は4です。
並列化できる部分の割合rと台数nから高速化率を求める式は、アムダールの法則に基づいています。
r=0.9とr=0.3の高速化率をnで表し、前者が後者の3倍になるnを求めます。
【計算】
r=0.9の高速化率は、1÷(0.1+0.9/n)です。
r=0.3の高速化率は、1÷(0.7+0.3/n)です。
前者が後者の3倍なので、1÷(0.1+0.9/n)=3÷(0.7+0.3/n)です。
分母を払うと、0.7+0.3/n=3×(0.1+0.9/n)=0.3+2.7/nです。
整理すると、0.4=2.4/nになります。
よって、n=2.4÷0.4=6台です。
検算すると、n=6のときr=0.9は1÷0.25=4、r=0.3は1÷0.75≒1.33で、ちょうど3倍です。
【選択肢別解説】
1:× n=3では、r=0.9が1÷0.4=2.5、r=0.3が1÷0.8=1.25です。
比は2倍で、3倍に届きません。
2:× n=4では、r=0.9が1÷0.325≒3.08、r=0.3が1÷0.775≒1.29です。
比は約2.4倍で、3倍に届きません。
3:× n=5では、r=0.9が1÷0.28≒3.57、r=0.3が1÷0.76≒1.32です。
比は約2.7倍で、まだ3倍に届きません。
4:○ n=6では、r=0.9の高速化率が4、r=0.3が約1.33となり、ちょうど3倍になります。
【ポイント】
アムダールの法則では、並列化できない部分(1−r)が高速化の上限を決めます。
台数を無限に増やしても高速化率は1÷(1−r)を超えないことも、あわせて覚えておきましょう。