![]()
令和元年 秋期 基本情報技術者 午後 問02
問02 5問選択スレッドを使用した並列実行に関する次の記述を読んで,設問1〜3に答えよ。 プログラム中の並列実行が可能な部分を取り出し,その部分を分割して複数のスレッドで 並列に実行する方法(以下,スレッド並列法という)がある。マルチプロセッサシステムでは, スレッド並列法を適用することによって,プログラムの実行時間を短縮できることがある。 プログラムにおいて,スレッド並列法を適用しないで実行したときの実行時間を, スレッド並列法を適用したときの実行時間で割った値を,プログラム実行時間の高速化率という。 プログラムをスレッド並列法を適用しないで実行したときの,プログラム全体の実行時間に対する, 並列実行可能な部分の実行時間の割合を r ( 0 ≦ r ≦ 1 )とする。 スレッドの個数を n ( n ≧ 1 )にして, プログラムにスレッド並列法を適用すると,マルチプロセッサシステムでは, プログラム実行時間の高速化率 E は,次の式で求められる。 ここで,各スレッドはそれぞれ異なるプロセッサに割り当てられるものとし, プログラムの実行に使用する全てのプロセッサの性能は同じとする。
この式は,並列実行可能な部分のプログラム実行時間がスレッド並列法の適用によって
プログラム中に並列実行が可能な部分をもつプログラム A に対してスレッドの個数を 2 にしてスレッド並列法を 適用すると,高速化率は ![]() r が ![]()
a に関する解答群 ![]() b に関する解答群
配列の操作を行う繰返しの処理において,図1,図2のように繰返しの範囲を分割して, スレッド並列法を適用することを考える。 このとき,操作の内容によって,正しい結果が得られる場合と得られない場合があるので, 十分に検討することが必要である。 正しい結果が得られる場合の例を,図1に示す。 図1に示すプログラム1は,制御変数 i の取る範囲を分けることによって繰返し範囲を分割した繰返しの処理を, それぞれ異なるスレッドで実行できる。 なお,図1,図2において,実線の四角はプログラム,破線の四角は繰返しの処理, 破線の四角から出る二つの矢印は分割を示す。
![]() 図1 正しい結果が得られる場合の例 正しい結果が得られない場合の二つの例を,図2に示す。 プログラム2の繰返しの処理を,スレッド 2-1 とスレッド 2-2 の二つに分割すると, c ことがあるので,スレッド並列法を適用しない場合の実行結果と 等しくなることを保証できない。したがって,プログラム2に対しては, 繰返しの範囲の分割によるスレッド並列法を適用できない。 また,プログラム3の繰返しの処理を,スレッド 3-1 とスレッド 3-2 の二つに分割すると, d ことがあるので,スレッド並列法を適用しない場合の実行結果と等しくなることを保証できない。 したがって,プログラム3に対しても,繰返しの範囲の分割によるスレッド並列法を適用できない。
![]() 図2 正しい結果が得られない場合の二つの例 c に関する解答群 イ a[51] の値をスレッド 2-1 で更新するより先にスレッド 2-2 で参照する ウ a[51] の値をスレッド 2-1 で参照するより先にスレッド 2-2 で更新する エ a[51] の値をスレッド 2-1 で参照するより先にスレッド 2-2 で参照する d に関する解答群 イ a[51] の値をスレッド 3-1 で更新するより先にスレッド 3-2 で参照する ウ a[51] の値をスレッド 3-1 で参照するより先にスレッド 3-2 で更新する エ a[51] の値をスレッド 3-1 で参照するより先にスレッド 3-2 で参照する
図4に示す配列 ip であれば,スレッド並列法を適用できる。 図4中の に入れる正しい答えを,解答群の中から選べ。 なお,図3において,実線の四角はプログラム,破線の四角は繰返しの処理, 破線の四角から出る二つの矢印は分割を示す。
![]() 図3 プログラム4へのスレッド並列法の適用
![]() 図4 スレッド並列法を適用できる配列 ip e に関する解答群 ![]()
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||