はじめに 先日、ED法の解説記事を書きました。 並列処理と相性が良さそうであると述べておきながら、GPUを使用した実装をしていなかったので、CuPyを使用して並列処理の威力を確かめてみます。 GPUを使った重みの並列更新 一層あたり32*2細胞、4096層、入力サイズ28*28、バッチサイズ64で実行したところ、計算時間は forwardで 3.02 s ± 491 ms 同時更新可能なupdateでは1.10 ms ± 290 μs となりました(RTX3070)。 シーケンシャルなforwardと比較し約3,000倍の速度という、圧倒的な並列計算の力を感じます。 同じ設定でCPUで計算した場合のタイムは以下です(Ryzen7 5700X)。 forwardで 363 ms ± 90.3 ms updateで 3.26 s ± 38.2 ms forwardの結果は逆転していますね。 一