iOS+Metal+コンピュートシェーダー で配列を処理する際のGPU上の処理の実行単位を調べてました。GPUでは並列で処理を行うため、どういった単位で処理を進めるのか、を本記事では説明します。 1. 並列処理の単位 GPUは並列でのデータ処理が得意です。 得意ではあるものの、例えば写真の明るさやコントラストの変換処理を行う場合、1枚の写真を構成する数十万を超える画素すべてについて、同時並行に処理をするような能力はありません。 では、どの単位で並列に処理をするかというと、画像であればその画素の配列を細分化して、部分部分で並列処理をすすめます。イメージとしては下図の一番右側 SIMD Group という(緑色、橙色の)単位です。 Grid ※写真1枚に相当 Thread Groups SIMD Groups 処理対象の配列全体が Grid で、それを分割したのがThread Groups で
![iOS でのGPUプログラムの並列処理の単位 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/34c8680a7b6af3aa0bb7fffbd1a8fbef9cd54425/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9aU9TJTIwJUUzJTgxJUE3JUUzJTgxJUFFR1BVJUUzJTgzJTk3JUUzJTgzJUFEJUUzJTgyJUIwJUUzJTgzJUE5JUUzJTgzJUEwJUUzJTgxJUFFJUU0JUI4JUE2JUU1JTg4JTk3JUU1JTg3JUE2JUU3JTkwJTg2JUUzJTgxJUFFJUU1JThEJTk4JUU0JUJEJThEJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1iNWQ1ZDIwMTkzYWU2OTI0ZWZjMGFlYmMwNGFjZDFlZQ%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBwaWMxOGYxNGs1MCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MzE3NzM3YzQ4NDg3OWFhZTViMDdkY2JlYjZhZTJjN2I%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D6972584b4ef8b3a949b7b718e883fdf0)