КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Возможность оптимизации простейшего алгоритмаЕсли принять производительность графического процессора при исполнении «чистого» генератора Mersenne Twister (без моделирования диффузии нейтронов) за 100 %, то получается, что алгоритм моделирования из п. 3.2.3 при 4096 вычислительных потоках снижает её до 17 % (18/108×100 % = 17 %). Возможно, что на самом деле ресурсы GPU задействованы ещё в меньшей степени. Главной причиной является то, что · Как только нейтрон выходит из пластины, связанный с ним вычислительный поток заканчивает свою работу. В результате, параллельные вычислительные потоки завершаются не одновременно, так что время работы GPU фактически совпадает со временем обработки нейтронов, находящихся внутри пластины наиболее долго. В конце расчёта бόльшая часть вычислительных потоков бездействует, что и приводит к неэффективному использованию ресурсов GPU. Для оптимизации алгоритма необходимо задействовать все запускаемые вычислительные потоки от начала расчёта и до конца. Это требование, очевидно, является общим для всех алгоритмов на графических процессорах. В нашем примере оно может быть исполнено следующим образом. · После выхода очередного нейтрона из пластины вычислительный поток не прекращает свою работу, а переходит к рассмотрению нового нейтрона, только что входящего в пластину. При этом: à координата нейтрона устанавливается равной нулю; à косинус отклонения траектории нейтрона m устанавливается равным 1; à алгоритм, показанный на рис. 3.3, возвращается к п. 3. · Для сохранения результатов обработки всех нейтронов каждый вычислительный поток потребует трёх дополнительных регистров GPU, в которые будет записывать суммарный окончательный вес отразившихся нейтронов и суммарный вес нейтронов, прошедших пластину, а также количество рассмотренных нейтронов. Предложенная модификация алгоритма позволяет: · задействовать все доступные параллельные вычислительные потоки до самого конца моделирования; · синхронизировать обращения всех потоков к регистрам процессора и к видеопамяти. Результаты моделирования диффузии нейтронов по модифицированному алгоритму (текст нового вычислительного ядра приведён в Приложении) показаны на рис. 3.6. Рис. 3.6. Производительность GPU без простаивания вычислительных потоков Видно, что задействование всех вычислительных потоков в течение всего времени моделирования действительно позволило резко увеличить производительность графического процессора. Теперь при 4096 вычислительных потоках преимущество GPU над центральным процессором составило 127 раз, что практически совпадает количеством его параллельных скалярных процессоров (128). Как показывает график на рис. 3.6., преимущество GPU над CPU существенно зависит от количества исполняемых вычислительных потоков, при увеличении их количества оно возрастает в несколько раз. Видно также, что преимущество в 128 раз, равное количеству скалярных процессоров в составе GPU (по сравнению с одним CPU) не является пределом и, вероятно, даже не близко к нему (например, в нашей реализации молекулярной динамики [6] преимущество достигало 600 раз). Это означает, что графический процессор эффективно оптимизирует вычисления с использованием конвейерной обработки данных, причём для её максимального задействования необходимо запускать на каждом мультипроцессоре больше вычислительных потоков, чем их было в рассмотренном примере (то есть больше, чем 128).
|