Page 38 - 6571
P. 38

кожен  блок  даних  обробляється  у  своєму  незалежному  потоці
                  (рис. 5.2).
                        На сучасних CPU, накладні витрати на створення потоків на-
                  стільки значні, що постійно необхідно балансувати між кількістю

                  потоків  та  продуктивністю  системи,  тому  блоки  даних  повинні
                  бути досить великими для досягнення оптимальної продуктивно-
                  сті. Зазвичай, на практиці це декілька потоків і кожному прихо-

                  диться опрацьовувати великий об’єм даних.



















                                    Рисунок 5.2 – SPMD додавання векторів


                        Тому  стрімкого  розвитку  набуло  використання  графічних
                  процесорів (GPU – Graphic Processing Unit). При реалізації бага-
                  топоточності за допомогою GPU, накладні витрати на створення

                  потоків  незначні,  тому  можна  створювати  один  потік  на  кожну
                  ітерацію в циклі.
                        У підтримці паралелізму на рівні CPU та GPU існують певні
                  відмінності, які полягають в наступному:

                        1. На рівні CPU для реалізації паралелізму використовується
                  апаратна  підтримка  атомарних  операцій.  Атомарні  операції  до-
                  зволяють  зчитувати  і  записувати  дані  без  втручання  зі  сторони

                  іншого потоку.
                        2. GPU у свою чергу розглядається як спеціалізований обчис-
                  лювальний  пристрій,  що  є  сопроцесором  до  CPU,  володіє  влас-
                  ною  пам’яттю  та  володіє  можливістю  паралельного  виконання

                  великої кількості окремих потоків. Деякі GPU підтримують зага-
                  льносистемні атомарні операції, але із втратою у продуктивності.
                  Зазвичай код, який вимагає глобальної синхронізації не дуже до-

                  бре підходить для обробки на GPU.





                                                              37
   33   34   35   36   37   38   39   40   41   42   43