自動 HANASU ツール「唄詠」について、高速化すべく作業中。

手法としてはよくある方法で、UTAU のツールを複数同時起動するというもの(いわゆるマルチスレッドレンダリング)。

で、実際のところ、どのくらい速くなるのか。数人のテスターの方に協力して頂いた結果が以下。

マルチスレッドレンダリング

表の見方だが、CPU の「コア」は物理コア数、「スレ」はスレッド数。Intel 系はハイパースレッディング(SMT)を実装していることがあり、物理コア数の 2 倍のスレッドを同時に走らせることができる。

「Temp」はテンポラリフォルダがあるデバイスの種類。ここが「HDD」なら、ハードディスク上にテンポラリフォルダがある。

測定結果の「半スレ」「全スレ」はそれぞれ、UTAU ツールを 1 つだけ起動して音声合成した場合と比べて何倍のスピードになったかを記している。「半スレ」であれば、CPU が同時に走らせられるスレッド数の半分の数だけ UTAU ツールを起動している(CPU のスレッドが 8 なら 4 個起動、小数点以下切り捨て)。「全スレ」はスレッド数と同じだけ起動(CPU のスレッドが 8 なら 8 個起動)。

結果を見ると、やはりマルチスレッドレンダリングは速い。例えば、Core i7-2670QM は最大 5 倍近い速度で合成できている。

テンポラリフォルダのアクセスによるボトルネックを心配していたが、結果を見る限り、そこはあまりボトルネックにはなっていないようだ。UTAU ツールは結果をディスクに出力するので、現在の唄詠はそれをテンポラリフォルダに出力させるようにしている。テンポラリフォルダのアクセス速度が遅いとマルチスレッドレンダリングしても効果が無いかと思ったが、遅い HDD でも効果が出ている。

ハイパースレッディングによってスレッド数を倍にしている場合、物理コアと違ってスレッドを処理する能力はあまり上がらない。なので、半コアと全コアを比較すると処理速度はさほど向上していない(逆に下がる場合もある)。デフォルト設定を半コアにするか全コアにするかは悩ましいところだ。

なお、この測定に限らないが、マルチスレッドの効果測定は、他のプロセスも多く動いている中では、不確定要素が多い。あくまでも目安となる。

それでもなるべく妥当な結果になるように、テスターの方には同じ測定を 5 回ずつ行って頂き、20% トリム平均(要は極端な上下を除き、中間 3 回の結果の平均)で結果を算出している。

ご協力頂いた皆様、ありがとうございました。

また、これからテストにご協力いただけるという方がいらっしゃいましたら、SHINTAまでご連絡下さい。