УДК 004.383.3
МЕТОД ОРГАНИЗАЦИИ ПАРАЛЛЕЛИЗМА ДАННЫХ В НЕЙРОПРОЦЕССОРАХ
В. А. Романчук
Предложен метод эффективной организации параллелизма данных в нейронных процессорах, за счет различной размерности подпотоков данных и перераспределения однотипных операций между сегментами кода, выполняемыми параллельно. Описан комбинированный оптимизационный подход к решению задачи одномерной оптимизации с учетом характеристики разрядности нейропроцессора, основанный на методах динамического программирования. Практические исследования показали, что за счет применения предложенного метода быстродействие программы увеличивается на 5...14% в зависимости от класса задачи и степени однородности операций.
Ключевые слова: параллелизм данных, нейронный процессор, упаковка данных, распараллеливание.
Существуют две парадигмы параллельного программирования: параллелизм данных и параллелизм задач. Наиболее эффективно - когда параллелизм задач сочетается с параллелизмом данных.
Параллелизм данных предполагает, что различные фрагменты такого массива могут обрабатываться на векторном процессоре или на разных процессорах параллельной вычислительной системы. Векторизация или распараллеливание в рамках данного подхода выполняются во время трансляции. В этом случае при разработке параллельного приложения от программиста требуется:
- задание опций векторной или параллельной оптимизации транслятору;
- задание директив параллельной компиляции;
- использование специализированных языков параллельных вычислений, библиотек подпрограмм, специально разработанных с учетом конкретной архитектуры компьютера и оптимизированных для этой архитектуры.
При программировании на основе параллелизма данных часто используются специализированные языки или надстройки над языками.
Реализация модели параллелизма данных требует поддержки параллелизма на уровне транслятора. Такую поддержку могут обеспечивать:
- препроцессоры, использующие существующие последовательные трансляторы и специализированные библиотеки, с реализациями параллельных алгоритмических конструкций;
- предтрансляторы, которые выполняют предварительный анализ логической структуры программы, проверку зависимостей и ограниченную параллельную оптимизацию;
- распараллеливающие трансляторы, которые выявляют параллелизм в исходном коде программы и выполняют его преобразование в параллельные конструкции.
Основные принципы параллелизма данных описаны в работах: L. L Boyer, G. S. Pawley, H. Singh, Ming-Hau Lee; Guangming Lu, F.J. Kurdahi, N. Bagherzadeh, E.M. Chaves Filho, W. Daniel Hillis, Guy L. Steele, V. Pan, J. Reif, W. Lim, H.T. Kong, C.E. Lieserson, L. Carver, L. Conway [6-13].
Сейчас на рынке появилось множество нейронных процессоров, которые работают согласно принципов коннекционизма и обеспечивают выполнение множества операций эмуляции нейронов. Для таких процессоров, где происходит множество однотипных преобразований без применения переходов и других, мешающих параллелизму операций, выгодно максимально использовать именно возможности параллелизма данных [22].
Параллелизму данных в GPU и нейронных процессорах посвящено множество работ: L. Bottou, S. O. Cyprien Noel, C. R. F. Niu, B. Retcht, S. J. Wright, Y. Jia, Caffe, E. C. B. P. Stephen Boyd, Neal Parikh, J. Eckstein, K. L. Xiaqing Li, Guangyan Zhang, W. Zheng [14-21].
При этом в приведенных работах показаны методы параллелизма данных, основанные на равномерном перераспределении операций с одинаковой разрядностью операндов, подобно технологии MMX для классических процессоров. При этом если исходная задача должна выполняться циклически, в режиме реального времени, то рационально минимизировать разрядность операций и перераспределять однотипные операции для обеспечения наименьшего простоя аппаратных ресурсов. Например, если имеется задача эмуляции искусственной нейросети, где входными данными являются наборы данных с разной разрядностью (пусть 10-10-20-2-20 бит), то нет смысла «выравнивать» разрядность операндов по максимальному значению, рациональнее «упаковать данные» в 64-битовый набор.
Целью исследования является разработка метода организации параллелизма данных в нейронных процессорах за счет решения задачи оптимизации (эффективной упаковки данных и результатов) для увеличения производительности нейрокомпьютерных программ.
В большинстве работ разделение на потоки данных происходит последовательно, то есть поток делится на равные подпотоки. Но, можно увеличить быстродействие за счет эффективного перераспределения однотипных операций между сегментами кода и изменения размерностей под-потоков данных. В работе предлагается комбинированный оптимизационный подход к решению задачи одномерной оптимизации с учетом характеристики разрядности нейропроцессора, основанный на методах динамического программирования.
Эффективность предлагаемого способа достигается за счет параллельного выполнения операций с малоразрядными операндами. В некоторых моделях нейропроцессоров существует возможность аппаратной упаковки данных.
Каждый класс подзадач Z(J) , представленный в виде искусственной нейронной сети ИНС обладает набором характеристик:
Пусть NetXR. - разрядность i -го входа ИНС
Netx = {netx1,....netyi,..., }, определяемая по его максимально возможному значению:
NetXR, = log2(max(netxi-)); NetwRj - разрядность i -го весового коэффициента ИНС W = [ww1,....wwi,..., wnw}, определяемая по его максимально возможному значению;
NetWR. = l°g2 (max(wxi));
NetYR. - разрядность i -го выхода ИНС Nety = [netyi,...netyi,...,netyn}, определяемая по его максимально возможному значению:
NetYR. = log2 (max(netyi));
H Pr - разрядность нейропроцессора.
Тогда, при выполнении эмуляции нейрона, в нейропроцессоре должно быть зарезервировано определенное количество бит, равное разрядности максимально возможной разрядности результата, которая определяется как сумма разрядностей входных данных и одного бита для переноса:
R = max(NetXR.) + max(NetWR) +1.
В этом случае, количество параллельных потоков данных Pt за счет упаковки данных определяется как:
„ H Pr
Pt =-Pr-.
max(NetXR},) + max(NetWR.) +1
Пример упаковки данных для нейропроцессора семейства NM640x показан на рис. 1.
Рис. 1. Пример упаковки данных
Для вещественных значений входных значений, весовых коэффициентов рассматривается отдельно сумма разрядностей целых и дробных частей.
Использование коэффициента Kmac при реализации описанного
способа организации обработки информации невозможно, так как его значение в большинстве случае превысит единицу. Поэтому, для оценки эффективности распараллеливания на данном этапе введем коэффициент, показывающий долю загруженности ядра нейропроцессора при выполнении u -й операции:
1 Pt '
Cуммарные показатели загруженности ядра нейропроцессора для фрагмента SOj :
T 1 I —
IPU
KRj =1 -j1
KRju =-
T
Для микронейропрограммы в целом:
p T 1
II
kr = 1 - ^=P .
R p * T
Описанный способ может быть использован для упрощения упаковки данных, но не обеспечивает возможность битового перераспределения операции, в связи с чем предлагается второй, более трудозатратный для программиста способ.
Цель организации обработки информации заключается в перераспределении множества операций и, соответственно, множества микрокоманд так, чтобы максимальное количество операций было выполнено за один такт за счет упаковки данных.
Для каждого кортежа операций SOj =< Оц,O^,- -,Ofnc > можно определить кортеж разрядностей вычислений для каждой j -й операции < Rj1, Rj2,...,Rjjnc > следующим образом:
R = NetXR + NetWR +1.
То есть необходимо перераспределить множество операций в кортежи операций так, что разность между разрядностью нейропроцессора и суммарной разрядностью вычислений была минимальна:
SOi =< On,Oi2,...,Oinc >= SOi1 È SOi2 È... È SOiT, SOj =< Oj1, Oij2,...,Ojinc >, j = 1T,
ijinc
( H P r - I Rijk ) ® min . k=1
где T - количество тактов нейропроцессора для реализации ИНС.
151
Каждая операция Ojk обладает целочисленной характеристикой разрядности вычисления, равной Rijk.
Тогда, кортеж операций SOу может быть выполнен за один такт
j
нейропроцессора, обеспечивая эмуляцию ijinc нейронов.
Задача упаковки данных в нейропрограмме может быть описана математически следующим образом:
_ T ijinc
"SOi, i = 1,p; I(Pr- IRijk) ® min. j=1 k=1
В этом случаем имеем NP-полную задачу оптимизации, по существу, сводимая к задаче целочисленного линейного программирования -задаче раскроя. В начале становления научных исследований в области снижения «расходов» в целевых функциях большинство из оптимизационных методов использовали линейные модели и методы линейного программирования. Основы данных методов были заложены в работах Л. В. Канторовича, В. А. Залгаллера и P. Gilmore, R. Gomory [4]. Также получили развитие точные методы, использующие методологию «ветвей и границ», описанные в работах И. В. Романовского, С. В. Канцева и S. Martello, D. Toth [5], а также их дальнейшие исследования, которые велись в области уменьшения объема перебора [1, 2]. Для решения этих задач часто используются простые однопроходные и многопроходные эвристики, а также метаэвристические алгоритмы, например генетический алгоритм или алгоритм поиска с запретами. В данной работе предлагается комбинированный оптимизационный подход к решению задачи одномерной оптимизации с учетом характеристики разрядности нейропроцессора, основанный на методах динамического программирования.
Введем понятие остатка разрядности, определяющего разность между характеристикой разрядности нейропроцессора и суммарной разрядностью вычислений для всех операций, уже входящих в кортеж
ijinc
Ost j = Pr - I Rijk . k=1
На первом шаге производится первичное заполнение всех кортежей по следующему правилу: в кортеж, имеющий наибольший остаток разрядности, помещается операция с наибольшей разрядностью вычисления (рис. 2) [15].
На втором шаге выполняется попарный обмен операциями в кортежах, если это приводит к уменьшению остатка в наиболее заполненном кортеже (рис. 3). При каждом обмене операциями выполняется сортировка всех кортежей по остатку, а также операций в кортеже от большей к меньшей [3].
фрагмент йО]
Рис. 2. Упаковка данных
80 п 8012
80 и1 80и2
80
п
80
и1
=>
80
12
80
и2
Рис. 3. Попарный обмен операциями между кортежами
Для уменьшения остатков раскроя на шаге 2 помимо попарного обмена деталями выполняется обмен тремя операциями в кортежах, если это приводит к уменьшению остатка в наиболее заполненном кортеже (рис. 4). Данное дополнение позволяет значительно уменьшить суммарный остаток, но увеличивает время выполнения алгоритма в зависимости от количества операций в условиях задачи [3].
Рис. 4. Тройной обмен операциями между кортежами
В этом случае
кяр =1 -
щте
РГ - I к =1 Рг
Суммарные показатели загруженности ядра нейропроцессора для фрагмента SOJ:
Т уте
I (Рг - I Щук)
% = 1 - у=1 к=1
Т * Рг
Для микронейропрограммы в целом:
Kr = 1 -
p T iujinc
II (Pr- I Riujk ) i=1 j=1 k=1
p * t * Pr
Следует отметить, что описанный математический аппарат эффективен только при малоразрядных входных, выходных данных и весовых коэффициентах. При малоразрядных только входных данных или весовых коэффициентах возникнут простои, что снизит эффективность организации обработки информации. Дальнейшее повышение эффективности обработки информации может быть достигнуто за счет семантического анализа
класса задач Z(J).
Практические исследования с использованием разработанных программных средств показали, что за счет применения предложенного метода быстродействие нейропроцессорной программы увеличивается на 514% в зависимости от класса задачи и степени однородности операций. Быстродействие увеличивается за счет «уплотнения» данных и результатов наиболее эффективным методом, что стало возможным, так как для нейронных процессоров имеем задачи с высокой степенью однородности операций.
Проведено экспериментальное исследование полученных научных и практических результатов, для чего была рассмотрены тестовые задачи эмуляции искусственных нейросетей (многослойный персептрон с 10-ю слоями и 1000-2000 нейронов в каждом слое (MLP2), многослойный персептрон с 50-ю слоями и 500-2000 нейронов в каждом слое (MLP3), ИНС адаптивно-резонансной теории ART (ART), сеть встречного распространения (CPN), сверточная сеть (CPN)) и задача управления гексаподом с высокой степенью операций, представленных в нейросетевом логическом базисе. Проведены математические расчеты и практические эксперименты для нейропроцессорных комплексов, включающих от одного до восьми нейропроцессорных устройств. Результаты экспериментального исследования доказывают достоверность, адекватность и эффективность полученных в результате исследования методов, моделей, алгоритмов и программных средств.
Для задачи эмуляции нейросети разработанный метод позволил уменьшить время работы программы в режиме эмуляции в среднем на 9,089%; снизить простои аппаратуры в среднем на 4,874%; повысить скорость обучения в среднем на 6,835%. Для задачи управления гексаподом ме-тод рациональной организации обработки информации позволил уменьшить время работы программы в среднем на 7,84%, снизить простои аппаратуры в среднем на 5,63%.
Таким образом, было показано, что для нейронных процессоров с высокой степенью однородностью операций эффективно использовать перераспределение операций для реализации параллелизма данных. В работе показан метод увеличения производительности нейрокомпьютерных программ за счет упаковки данных и результатов, то есть за счет рациональной организации потоковых вычислений. Проведены практические исследования и разработаны программные средства, которые позволили повысить быстродействие нейропроцессорной программы на 5-14% в зависимости от класса задачи и степени однородности операций.
Исследование выполнено в рамках государственного задания РФ № 2.9519.2017/8.9.
Список литературы
1. Крючковский В.В. Детерминизация модели многофакторного оценивания при различных видах неопределенности задания параметров / В.В. Крючковский, А.В. Усов // Труды Одесского политехнического университета. 2009. Вып. 2(32). С. 154-160.
2. Березовский Б.А., Барышников Ю.М., Бозенко В.И., Кемпнер Л.М. Многокритериальная оптимизация: математические аспекты. М.: Наука, 1989. 230 с.
3. Васин А.Ю., Задорожный В.Н. Решение производственной задачи одномерного раскроя материалов // Омский научный вестник. 2012. №2(110). С. 267-270.
4. Gilmore P.C., Gomory R.E. The Theory and Computation of Knapsack Functions // Operations Research. 14. P. 1045-1075.
5. S. Martello P. Toth. Knapsacks problems: algorithms and computer implementations. Chichester/England: John Wiley and sons Ltd, 1990. 238 p.
6. Boyer L.L., Pawley G.S. Molecular dynamics of clusters of particles interacting with pairwise forces using a massively parallel computer // Journal of Computational Physics. 78 (2). P. 405-423.
7. Singh H., Lee Ming-Hau, Lu Guangming, Kurdahi F.J., Bagherzadeh N., Filho E.M. Chaves. MorphoSys: an integrated reconfigurable system for data-parallel and computation-intensive applications // IEEE Transactions on Computers. 49 (5). P. 465-481.
8. Hillis W. Daniel and Steele, Guy L. Data Parallel Algorithms // Communications of the ACM. 29 (12). P. 1170-1183.
9. Orgarlizafiorr Koch, Lawrie. and Sameh // Eds. Academic Press. 1977. P. 113-127.
10. Configurable computing: the catalyst for high-performance architectures // International Conference on Application-Specific Systems, Architectures and Processors, Proceedings. Building and using a highly parallel programmable logic array. 24(1). P. 81-89.
11. Pan V., Reif J. Efficient parallel solution of linear systems // Tech. Rep. TR-02-85. 1985. P. 143-152.
12. Lim W. Fast algorithms for labeling connected components in 2-D array // Tech. Rep. 86.22.
13. Kong H.T., Lieserson C.E. Algorithms for VLSI processor arrays // In Infroducfiorf fo VLSI Systems. 1980. P. 271-292.
14. A Reconfigurable Multiprocessor IC for Rapid Prototyping of Algorithmic-Specific High-Speed DSP Data Paths // IEEE Journal of Solid-State Circuits 27(12). P. 1895-1904.
15. Bottou L. Large-scale machine learning with stochastic gradient descent // COMPSTAT. 2010. P. 177-186.
16. Bottou L. Stochastic gradient descent tricks // In Neural Networks: Tricks of the Trade. 2012. P. 421-436.
17. Cyprien S.O. Noel. Dogwild! Distributed hogwild for CPU and GPU // Distributed Machine Learning and Matrix Computations, NIPS 2014.
18. Niu C.R.F., Retcht B., Wright S.J. Hogwild! A lock free approach to parallelizing stochastic gradient descent // Neural Information Processing Systems. 2011.
19. Jia Y. Caffe: An open source convolutional architecture for fast feature embedding // Proceedings of the 22nd ACM international conference on Multimedia. 2014. P. 675-678.
20. Stephen E.C.B.P. Boyd, Neal Parikh, Eckstein J. Distributed optimization and statistical learning via the alternating direction method of multipliers. Foundations and Trends in Machine Learning. 2011. 3(1). P. 1-122.
21. Xiaqing K.L. Li, Guangyan Zhang, Zheng W. Deep learning and its parallelization // Big Data. 12. 2016.
22. Romanchuk V.A. The method of optimization of neuro-based concurrent operations in neurocomputers // IOP Conference Series: Materials Science and Engineering. Tomsk, Russia, 2017.
Романчук Виталий Александрович, канд. техн. наук, доцент, v.romanchukarsu. edu.ru, Россия, Рязань, Рязанский государственный университет имени С.А. Есенина
METHOD OF ORGANIZING PARALLELISM OF DATA IN NEUROPROCESSORS
V.A. Romanchuk
In this paper, the authors propose a technique for efficient data parallelism in neural processing units through different dimensional data subsets and redistribution of similar operations between code segments that are executed in parallel. The authors observe a combined approach to optimize a solution of the one-dimensional optimization problem. The authors also consider the category of the neural processor bit depth, based on dynamic programming methods. An empirical study confirmed that, the application of the offered method can significantly improve overall program instruction per second by 5... 14%, depending on a complexity class of decision problem and the degree of operation homogeneity.
Key words: data parallelism, neural processing unit (NPU), executable compression, parallelization.
Romanchuk Vitaliy Alexandrovich, candidate of technical science, docent, v. romanchukarsu. edu. ru, Russia, Ryazan, Ryazan State University
УДК 681.142.2
МОДЕЛИРОВАНИЕ МНОГОКРИТЕРИАЛЬНОГО АНАЛИЗА ВЫБОРА СТРУКТУРЫ НЕЙРОПРОЦЕССОРНОЙ СИСТЕМЫ
В.Н. Ручкин, Б.В. Костров, В. А. Романчук, Д.Р. Пикулин, Г.А. Солдатов
Производится моделирование многокритериального анализа НПС с целью реализации экспертной системы выбора наиболее рациональной ее структуры по заданной стратегии проектирования. Описываются алгоритмы двух различных моделей представления пользовательского интерфейса на основе предложенной авторами методики распараллеливания с целью анализа возможных нейропроцессорных структур. Разрабатывается программа реализации интерфейса на современном языке TypeScript, который является надмножеством языка JavaScript. Исследуются класс NeuralComputerSystemStructure, метод getStructureType и некоторые методы определения структур с целью описания характерных возможных структур НПС, которые выявляют нужный тип нейро-компьютерной сети в условиях неопределенности с использованием нечетких множеств посредством нейронных сетей.
Ключевые слова: интерфейс экспертной системы, анализ нейропроцессорных структур, язык TypeScript, надмножество языка JavaScript, принятие решений, класс NeuralComputerSystemStructure, метод getStructureType.
Введение. Одним из решений современной проблемы дальнейшего повышения производительности структуры нейропроцессорных систем (НПС) или цены/производительности является перенос интеллектуальных функций из аппаратного обеспечения в программное в виде функций компилятора. Такая концепция направлена на упрощение аппаратного обеспечения и извлечения как можно больше «скрытого параллелизма» на уровне команд, используя либо большую ширину «выдачи» команд (WIW - Wide Issue-Width) либо длинные (глубокие) конвейеры с большой задержкой (DPL - Deep Pipeline-Latency). С другой стороны, в современных микропроцессорах продолжается разработка и проектирование современных оригинальных методов распараллеливания с целью анализа и выбора наилучшей нейропроцессорной структуры по ряду критериев. Конечным результатом является разработка принципиально новых и хорошо распараллеливающихся алгоритмов с элементами «умной» (интеллектуальной) компиляции. Эти два подхода ускоряют развитие альтернативных повышению частоты способов увеличения быстродействия. По результатам
157