はじめに PyTorchのCUDAプログラミングに絞って並列処理を見てみる。なお、CPU側の並列処理は別資料に記載済みである。ここでは、 C++の拡張仕様であるCUDAの基礎知識 カーネルレベルの並列処理 add関数の実装 im2col関数の実装 ストリームレベルの並列処理 DistributedDataParallelの呼び出し処理の実装 について説明する。 おことわり PyTorchでは、ATen配下で演算処理を行っている。しかし、その前身であるTorchの資産を引き継いでいるため、THC(TorcH Cuda)のTensorからATen/nativeに書き換え中である。古いTHCTensor部分は参考資料として引用しておくが、言及はしない。また、この書き換え作業は1年以上継続中でありゆっくりと進んでいる。あと一年以上はかかるのではと思う。 BLAS(行列演算)やcudnn(深層学習演
![(ソースコードメモ)PyTorchでのCUDA側並列処理 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/a1a67f0ab7bfa937a8500cca7233d182250b57b2/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JTI4JUUzJTgyJUJEJUUzJTgzJUJDJUUzJTgyJUI5JUUzJTgyJUIzJUUzJTgzJUJDJUUzJTgzJTg5JUUzJTgzJUExJUUzJTgzJUEyJTI5UHlUb3JjaCVFMyU4MSVBNyVFMyU4MSVBRUNVREElRTUlODElQjQlRTQlQjglQTYlRTUlODglOTclRTUlODclQTYlRTclOTAlODYmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTczYTE3MTY4ZmRlZjk2OGEwYWYxNWU0NGE0OThjZmM3%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBzYWthaWEmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTUyMmZkMThhZGUzNTYxMzFkNjE3ZDBlMjNjMDMyYjgw%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3Df2ea9e28d0f9c7b31170da03b94531e4)