「基本5の補足(並列処理での速度向上例)」の版間の差分
提供: Eospedia
(ページの作成:「 ルールを組み合わせ方次第で並列処理できるところ増やして速度アップをはかることができます。しかし、ルール間ではフ...」) |
細 |
||
| 行1: | 行1: | ||
| − | + | ルールを組み合わせ方次第で並列処理できるところ増やして速度アップをはかることができます。<br> | |
| − | <br> | + | しかし、ルール間ではファイルのやり取りが行われるので、処理の短いルールを何度も呼んでしまうとこの部分の割合が多くなってしまいます。<br> |
| + | そこで1ファイルについて並列処理できない部分のルールはまとめて長く処理されるようにすると、そのルールを各ファイル毎で並列処理すればよいので速度を改善できます。 | ||
<table border="1"> | <table border="1"> | ||
| 行62: | 行63: | ||
<br> | <br> | ||
| − | (1)のコードでは最初の入力ファイルを.inとして、Firstで.routeを作り、Secondで出力ファイル. | + | (1)のコードでは最初の入力ファイルを.inとして、Firstで.routeを作り、Secondで出力ファイル.outを作っています。<br> |
| − | <br> | + | Second実行するためには.routeファイルを入力としているので、1ファイルについてFirst, Secondを並列で処理することはできません。<br> |
| + | また、Firstの処理後は.routeファイルをMainに渡し、そこからSecondに渡しているので、その分の時間が掛かっています。<br> | ||
| + | そこで、(2)のように1ファイルについて並列処理ができないルールはまとめてしまった方がファイルのやり取りなどの時間が削減できます。 | ||
2016年4月14日 (木) 03:10時点における最新版
ルールを組み合わせ方次第で並列処理できるところ増やして速度アップをはかることができます。
しかし、ルール間ではファイルのやり取りが行われるので、処理の短いルールを何度も呼んでしまうとこの部分の割合が多くなってしまいます。
そこで1ファイルについて並列処理できない部分のルールはまとめて長く処理されるようにすると、そのルールを各ファイル毎で並列処理すればよいので速度を改善できます。
| コード | 処理結果(ProM) | |
|---|---|---|
| (1) |
Rule Main
input '*.in'.all
output '*.out'.all
Flow
rule First
rule Second
End
Rule First
input '*.in'
output '{$I[1][1]}.route'
Action
awk '{ print $1*2 }' {$I[1]} > {$O[1]}
End
Rule Second
input '*.route'
output '{$I[1][1]}.out'
Action
awk '{ print $1+1 }' {$I[1]} > {$O[1]}
End
|
![]() |
| (2) |
Rule Main
input '*.in'.all
output '*.out'.all
Flow
rule FirstSecond
End
Rule FirstSecond
input '*.in'
output '{$I[1][1]}.out'
Action
awk '{ print $1*2 }' {$I[1]} > {$I[1][1]}.route
awk '{ print $1+1 }' {$I[1][1]}.route > {$O[1]}
End
|
