Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 ·...

145
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ Институт информационных наук и технологий безопасности Кафедра комплексной защиты информации На правах рукописи Желтов Сергей Александрович Эффективные вычисления в архитектуре CUDA в приложениях информационной безопасности специальность 05.13.19 – Методы и системы защиты информации, информационная безопасность 05.13.17 Теоретические основы информатики ДИССЕРТАЦИЯ на соискание ученой степени кандидата технических наук Научный руководитель доктор технических наук Баранович Андрей Евгеньевич Москва 2014

Transcript of Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 ·...

Page 1: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ

Институт информационных наук и технологий безопасности

Кафедра комплексной защиты информации

На правах рукописи

Желтов Сергей Александрович

Эффективные вычисления в архитектуре CUDA

в приложениях информационной безопасности

специальность 05.13.19 – Методы и системы защиты информации,

информационная безопасность

05.13.17 – Теоретические основы информатики

ДИССЕРТАЦИЯ

на соискание ученой степени кандидата технических наук

Научный руководитель

доктор технических наук

Баранович Андрей Евгеньевич

Москва 2014

Page 2: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

2

Оглавление

Оглавление……………………………………………………………………… 2

Введение………………………………………………………………………… 4

Глава 1. Постановка задачи исследования…………………………………... 22

1.1. Вычислительные задачи информационной безопасности: краткий

обзор ....................................................................................................................... 22

1.2. Стойкость систем защиты и способы ее оценки ........................................ 27

1.3. Задачи факторизации целых чисел и дискретного

логарифмирования в конечном поле .................................................................. 30

Выводы ................................................................................................................... 32

Глава 2. Параллельные вычисления в архитектуре CUDA……………….... 33

2.1. Обзор параллельных вычислительных систем ........................................... 33

2.2. Обзор технологий GPGPU ............................................................................ 40

2.3. Архитектура CUDA ....................................................................................... 44

2.4. Обзор методов и способов организации параллельных

вычислений ............................................................................................................ 48

Выводы ................................................................................................................... 52

Глава 3. Алгоритмы решения задач факторизации и дискретного

логарифмирования……………………………………………………………... 54

3.1. Основные методы и алгоритмы факторизации целых чисел. Метод Ш.

Лемана .................................................................................................................... 54

3.2. Параллельный алгоритм Ш. Лемана, адаптированный к

вычислениям на GPGPU с архитектурой CUDA.

Асимптотические оценки сложности ................................................................. 57

3.3. Основные методы и алгоритмы дискретного

логарифмирования. ρ-метод Полларда ............................................................... 65

3.4. Параллельный алгоритм ρ-метода Полларда,

адаптированный к вычислениям на GPGPU с архитектурой CUDA .............. 70

Page 3: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

3

Выводы ................................................................................................................... 77

Глава 4. Компьютерное моделирование метода Лемана и ρ-метода Полларда 78

4.1. Экспериментальная апробация параллельного алгоритма Ш. Лемана .... 78

4.2. Экспериментальная апробация параллельного алгоритма

ρ-метода Полларда ................................................................................................ 81

4.3. Оценки эффективности использования параллельных вычислений в

архитектуре CUDA ............................................................................................... 86

4.4. Реализация арифметических операций с «длинными» числами на

устройствах GPGPU с архитектурой CUDA ...................................................... 96

Выводы ................................................................................................................. 101

Заключение……………………………………………………………………... 103

Список сокращений……………………………………………………………. 108

Список литературы…………………………………………………………….. 109

Приложение 1. Код программной реализации

последовательного алгоритма метода Шермана Лемана…………………... 122

Приложение 2. Код программной реализации параллельного алгоритма метода

Шермана Лемана……………………………………………………………….. 128

Приложение 3. Код программной реализации

последовательного алгоритма ρ-метода Полларда…………………………. 136

Приложение 4. Код программной реализации

параллельного алгоритма ρ-метода Полларда……………………………… 140

Приложение 5. Основные технические характеристики графических и

центральных процессоров…………………………………………………….. 145

Page 4: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

4

Введение

Актуальность исследования

Информация, циркулирующая в социальных системах, в настоящее время

стала критическим ресурсом как для социума в целом, так и отдельных его

представителей. Соответственно, обеспечение безопасности информации от

уже существующих и появляющихся новых угроз становится задачей первосте-

пенной важности.

Для создания полноценной системы защиты информации (ЗИ), обрабаты-

ваемой в коммерческих автоматизированных системах (АС), решается задача

разработки политики безопасности, при этом большое внимание уделяют раз-

работке формальных моделей разграничения доступа, защищенности операци-

онных систем и методам криптографической защиты информации. Основы ме-

тодологии создания таких механизмов заложены такими учеными (исследовате-

лями) как В. Галатенко, В. Герасименко, А. Грушо, П. Зегжда, К. Лендвер,

М. Ранум, А. Баранович и др. Не менее важными являются вопросы, касающие-

ся исследования и оценки технических возможностей потенциального наруши-

теля информационной безопасности (ИБ) АС.

На сегодняшний день в предметной области ИБ существует вполне опре-

деленный класс задач математического характера, сложность решения которых

лежит в основе безопасности целого ряда систем защиты коммерческих инфор-

мационно-коммуникационных технологий. К числу задач упомянутого класса

относятся задачи факторизации целых чисел и дискретного логарифмирования

во вполне определенной алгебраической структуре, например, конечном поле.

Для данных задач не известны алгоритмы решения с полиномиальной сложно-

стью.

Разработка новых эффективных способов решения указанного класса за-

дач и появление новых архитектур высокопроизводительных вычислительных

Page 5: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

5

устройств порождают новые угрозы безопасности информационных систем, ха-

рактеризуемые снижением фактических временных затрат на преодоление прак-

тической стойкости подсистемы защиты до неприемлемого уровня.

В качестве основных составляющих прироста мощности вычислительных

систем в настоящее время можно выделить:

рост производительности выделенных вычислительных устройств;

организацию массовых вычислений в совокупности устройств, в том чис-

ле и мобильных;

использование эффективных моделей вычислений на существующих

классах архитектур [9].

Применение существующих методик оценки возможностей потенциаль-

ного нарушителя не учитывают современные факторы, позволяющие достичь

значительного увеличения вычислительной мощности доступных технических

средств, что приводит к неадекватному отображению реальных условий функ-

ционирования объекта зашиты с точки зрения возможных противоправных дей-

ствий в его отношении. При этом могут неверно оцениваться и действительные

риски реализации новых угроз безопасности АС. Это приводит к необходимо-

сти своевременного пересмотра требований к средствам защиты в зависимости

от темпов роста основных показателей вычислительной техники и появления

принципиально новых технических решений. Риски реализации новых угроз

безопасности, связанные с вышеперечисленными обстоятельствами, можно

оценить:

с помощью теоретической оценки вычислительной сложности алгорит-

мов, адаптированных к определенной вычислительной архитектуре;

с помощью проведения вычислительных экспериментов, позволяющих

прагматически охарактеризовать ресурсы, необходимые и достаточные

для вскрытия механизма защиты конкретной информационной системы.

Оба способа взаимно дополняют друг друга и позволяют уточнить и дета-

лизировать риски безопасности, что в свою очередь дает возможность решить

Page 6: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

6

задачу безопасного функционирования АС в условиях интенсивного развития

информационных технологий (ИТ).

Последнее обстоятельство определяет необходимость наличия адекват-

ных механизмов оценки технических возможностей потенциального нарушите-

ля безопасности АС при появлении новых вычислительных архитектур и сис-

тем. Такие механизмы должны обеспечивать своевременность исследования

влияния новых вычислительных средств и способов вычислений на уровень за-

щищенности АС.

Одним из основных способов повышения скорости вычислений является

использование гетерогенных архитектур параллельных вычислений, при этом

существуют различные способы и средства их организации [23].

Исследование возможности применения распределенных параллельных

вычислений при решении задач ЗИ приводится в работах Бабенко Л. К., Сидо-

рова И. Д. и других [6, 7, 8]. Некоторым особняком стоят работы Барановича А.

Е., посвященные организации параллельных вычислений в распределенной по-

токовой (функционально-конвейерной) системе активной защиты информаци-

онной инфраструктуры. При этом, как правило, подразумевалось использование

многопроцессорных систем, т. е. объединенных коммуникационными каналами

вычислительных узлов на базе центральных процессоров.

К числу перспективных и интенсивно развивающихся направлений в этой

области в настоящее время относится параллельное программирование на ви-

деокартах с технологией GPGPU (General-purpose graphics processing units) [114,

115]. Графический процессор, в отличие от центрального, обладает меньшим

набором исполняемых команд (RISC), но большей производительностью. В по-

следние несколько лет графический процессор стали активно применять не

только для решения специализированных задач (обработка графической инфор-

мации), но и для вычислений общего назначения [124].

Технология GPGPU позволяет на одном вычислителе достигать доста-

точно высокого уровня параллелизма, при этом не будет значительных времен-

ных затрат на передачу данных между вычислительными узлами и синхрониза-

Page 7: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

7

цию результатов вычислений. Видеоадаптеры компании nVidia с архитектурой

CUDA (Compute Unified Device Architecture) занимают большую часть рынка

графических решений как в России, так и за рубежом [11, 116]. Относительная

низкая стоимость и удельное энергопотребление в сочетании с высокой удель-

ной производительностью графических процессоров позволяют говорить о воз-

можности массовых распределенных параллельных вычислений, которые дос-

тупны более широкому кругу потенциальных нарушителей, нежели специали-

зированные сетевые многопроцессорные системы.

Добавление вычислительных модулей на базе GPU (graphics processing

unit) позволяет существенно увеличить общую производительность суперком-

пьютеров с гетерогенной архитектурой. Модернизация, проведенная в 2011 го-

ду, вычислительного комплекса «Ломоносов» (Московский государственный

университет) позволила увеличить его производительность с 0,51 до 1,3 пета-

флопс [65]. Это стало возможно благодаря использованию, так называемой,

гибридной конфигурации «CPU + GPU», которая объединяет 1,554 тысяч гра-

фических процессоров nVidia Tesla Х2070 [61]. Для модернизации суперкомпь-

ютера «УРАН» в Институте математики и механики УрО РАН использовались

GPU nVidia Tesla М2050 и Tesla М2090. В результате пиковая производитель-

ность «УРАНа» увеличилась с 3 до 160 терафлопс, что позволило ему занять пя-

тую позицию в списке 50 наиболее мощных суперкомпьютеров СНГ на 2012

год [92].

Используя графические процессоры и распараллеливая алгоритмы, можно

повышать производительность не только суперкомпьютеров. Одними из пер-

вых поддержку GPGPU добавили в свои продукты разработчики различных

программ взлома и систем брутфорса паролей. Например, скорость подбора

MD5 – паролей на nVidia GTX580 составляет до 15800 миллионов комбинаций

в секунду, что позволяет найти средний по сложности пароль длиной восемь

символов всего за 9 минут [91].

Таким образом, для гетерогенных вычислительных систем на базе архи-

тектуры CUDA необходимо разработать новые подходы к оценке эффективно-

Page 8: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

8

сти реализации параллельных алгоритмов и методику практической апробации

новых вычислительных технологий в отношении их влияния на уровень техни-

ческих возможностей потенциального нарушителя и, как следствие, на уровень

защищенности АС.

Не менее важной с точки зрения защиты данных, циркулирующих в кор-

поративных сетях, является проблема утечки информации. В настоящее время

все чаще в качестве средства защиты от таких угроз используют системы пре-

дотвращения утечек конфиденциальной информации (DLP – Data Loss

Prevention) и технологию накопления статистических данных, проверки и

фильтрации сетевых пакетов по их содержимому (DPI – Deep Packet Inspection).

Данные механизмы обеспечения безопасности анализируют содержимое сете-

вых пакетов, которые покидают или входят в защищаемую сеть. Конкретные

системы рассчитаны на определенный размер сети и объем анализируемых

данных, задействуя при этом существенные вычислительные ресурсы [86]. При

резком и значительном увеличении объема данных, циркулирующих в защи-

щаемой сети средствами DLP и DPI, может возникнуть нехватка вычислитель-

ных мощностей, что повлечет увеличение времени реакции подсистемы защи-

ты, а следовательно, и снижение общего уровня защищенности информации.

Исследование эффективности использования GPGPU на базе архитектуры

CUDA в вычислительных задачах общего характера, позволит обобщить полу-

ченные результаты на случай реализации алгоритмов семантического анализа

сетевых пакетов, допускающих распараллеливание.

Все выше перечисленное обосновывает актуальность диссертационной

работы.

Объектом исследования является архитектура CUDA с реализованной

технологией общих вычислений в отношении возможности ее использования

для решения ряда задач, сложность решения которых определяет уровень за-

щищенности АС.

Предметом исследования являются угрозы информационной безопасно-

сти, возникающие (формирующиеся) в отношении АС, при задействовании

Page 9: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

9

средств параллельных вычислений GPGPU с архитектурой CUDA для преодоле-

ния механизмов их защиты.

Цель работы – оценка возможности реализации вполне определенных

угроз безопасности АС при использовании нарушителем гетерогенных систем с

графической платформой CUDA.

Тема, объект и предмет диссертационной работы соответствуют пунктам

5, 7 и 13 паспорта специальности 05.13.19 – «Методы и системы защиты ин-

формации, информационная безопасность»: методы и средства (комплексы

средств) информационного противодействия угрозам нарушения информацион-

ной безопасности в открытых компьютерных сетях, включая Интернет; анализ

рисков нарушения информационной безопасности и уязвимости процессов пе-

реработки информации в информационных системах любого вида и области

применения; принципы и решения (технические, математические, организаци-

онные и др.) по созданию новых и совершенствованию существующих средств

защиты информации и обеспечения информационной безопасности.

В отношении специальности 05.13.17 – «Теоретические основы информа-

тики» тематика диссертации соответствует следующим положениям пунктов

11, 15 и 16 её паспорта: «… разработка основ теории надежности и безопасно-

сти использования информационных технологий; исследования и разработка

требований к программно-техническим средствам современных телекоммуни-

кационных систем на базе вычислительной техники; общие принципы органи-

зации телекоммуникационных систем и оценки их эффективности».

Для достижения сформулированной цели диссертационного исследова-

ния были решены следующие задачи:

1) исследованы особенности организации параллельных вычислений при ис-

пользовании различных вычислительных средств;

2) проанализированы удельные показатели производительности, энергопо-

требления и стоимости графических и универсальных процессоров;

3) получена оценка эффективности организации параллельных вычислений в

гетерогенных вычислительных системах с архитектурой CUDA;

Page 10: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

10

4) адаптированы к архитектуре CUDA и программно реализованы алгорит-

мы метода Ш. Лемана решения задачи факторизации целых чисел и ρ-

метода Полларда решения задачи дискретного логарифмирования в ко-

нечном поле;

5) разработаны методики оценки параллельных алгоритмов и программ, реа-

лизуемых в архитектуре CUDA, и общей экспериментальной апробации

возможностей перспективных вычислительных систем на основе прове-

денного компьютерного моделирования решения задач адаптированными

алгоритмами, полученных оценок эффективности и анализа удельных по-

казателей гетерогенных систем на базе GPU вычислителей в отношении

угроз и рисков ИБ;

6) сформулированы рекомендации к системам обеспечения ИБ АС.

Методы исследования

В процессе проведении исследований использовались методы системного

анализа и теории чисел, алгебраических систем и конечных полей, теория

сложности дискретных алгоритмов, теория параллельных вычислений, теоре-

тические основы ИБ и математического моделирования.

Научная новизна работы характеризуется отсутствием:

‒ законченных результатов по исследованию эффективности использования

аппаратных ресурсов с архитектурой CUDA при решении вычислительных

задач, сложность решения которых обуславливает уровень защищенности

информационных систем;

‒ адаптированных алгоритмов и практических рекомендаций по оценке и со-

вершенствованию систем защиты АС (по открытым источникам).

Теоретическая значимость исследования состоит в разработке методики

оценки операционной сложности параллельных алгоритмов, реализуемых на ге-

терогенных архитектурах с вычислителями типа CPU и GPGPU с технологией

CUDA, которая может быть использована и при оценке алгоритмов, адаптиро-

ванных к системам распределенных массовых вычислений, и методики практи-

Page 11: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

11

ческой апробации вычислительных систем в отношении рисков реализации уг-

роз ИБ при их использовании.

Разработанный подход к оценке асимптотической сложности параллель-

ных алгоритмов и предложенные методики развивают ряд положений теории

сложности дискретных алгоритмов и методов моделирования систем защиты

АС.

Практическая значимость работы состоит в том, что разработанная

совокупность методик позволяет проводить обоснованный выбор рациональ-

ных вариантов механизмов защиты АС и обеспечить требуемый уровень ее

защищенности с учетом существующих сценариев развития технического про-

гресса.

В результате проведенных исследований автором лично получены сле-

дующие результаты:

параллельный алгоритм метода Ш. Лемана решения задачи факториза-

ции целых чисел, адаптированный к архитектуре CUDA;

параллельный алгоритм ρ-метода Дж. Полларда решения задачи дис-

кретного логарифмирования в конечном поле, адаптированный к архи-

тектуре CUDA;

программы, реализующие параллельные алгоритмы метода Ш. Лемана

решения задачи факторизации целых чисел и ρ-метода Дж. Полларда

решения задачи дискретного логарифмирования в конечном поле, адап-

тированные к архитектуре CUDA;

методика оценки операционной сложности параллельных алгоритмов,

реализуемых на гетерогенных архитектурах с вычислителями типа CPU

и GPGPU с технологией CUDA;

получена сравнительная оценка технологии CUDA с точки зрения эф-

фективности параллельных вычислений и получаемого при этом уско-

рения времени решения задач;

проанализированы основные удельные показатели эффективности, ха-

рактеризующие технологические решения CUDA: энергоэффективность,

Page 12: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

12

экономическая эффективность и удельное энергопотребление; исполь-

зованные показатели позволяют сравнивать вычислительные устройства

CUDA с традиционными технологиями последовательных вычислений;

методика практической апробации вычислительных систем в отношении

рисков реализации угроз ИБ при их использовании;

выработаны рекомендации и сформулированы требования по уточнению

уровня защищенности компонентов систем ИБ, основанных на сложно-

сти решения задач факторизации и дискретного логарифмирования в ко-

нечном поле при использовании гетерогенных вычислительных систем

на базе графических процессоров.

Достоверность и обоснованность полученных результатов обеспечива-

ются применением корректных исходных данных апробированного аппарата

исследований, проверкой непротиворечивости и адекватности промежуточных

и окончательных положений и выводов и подтверждаются экспериментальными

данными, полученными в ходе исследования при разработке программных реа-

лизаций алгоритмов.

Апробация работы

Основные результаты диссертации и отдельные ее положения в период

2010-2013 г.г. апробированы на:

II - IV международных конгрессах по интеллектуальным системам и ин-

формационным технологиям AIS-IT’2011, AIS-IT’2012, AIS-IT’2013, сек-

ция «Информационная безопасность»;

конференции «РусКрипто’2012», секция «Перспективные исследования в

области кибербезопасности»;

IV Международной научной конференции «Фундаментальные проблемы

системной безопасности и устойчивости», секция «Безопасность сложных

технических систем»;

расширенных заседаниях кафедр комплексной защиты информации, об-

щей информатики и фундаментальной и прикладной математики Инсти-

тута информационных наук и технологий безопасности (ИИНТБ) Россий-

Page 13: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

13

ского государственного гуманитарного университета (РГГУ);

объединенных методологических семинарах Центра системного анализа и

моделирования ИИНТБ РГГУ;

заседаниях кафедры компьютерной безопасности и математических мето-

дов управления (КБиММУ) Тверского государственного университета

(ТвГУ);

научно-технических семинарах математического факультета ТвГУ (2010-

2013 гг.).

Публикации

По материалам диссертации опубликовано 9 печатных работ, из них 4 - в

изданиях, рекомендованных ВАК Минобрнауки России. Программные реше-

ния, предложенные в работе, защищены двумя авторскими свидетельствами об

официальной государственной регистрации программы для ЭВМ №

2012612996: «Параллельный метод Шермана Лемана для архитектуры CUDA»

(зарегистрировано в Реестре программ для ЭВМ 27.03.2012 г.) и № 2012615259:

«Параллельный ρ-метод Полларда для архитектуры CUDA» (зарегистрировано

в Реестре программ для ЭВМ 9.06.2012 г.).

Внедрение работы

Полученные в процессе настоящего исследования результаты работы ис-

пользованы в исследованиях НИИ информационных технологий г. Тверь, вне-

дрены в учебный процесс и используются в разработанном на кафедре КБиММУ

ТвГУ курсе «Теоретико-числовые методы в криптографии», что подтверждено

соответствующими актами.

Структура и объем работы

Диссертация состоит из введения, четырех глав основного текста, заклю-

чения, списка сокращений, использованных источников и пяти приложений.

Список литературы включает 131 наименование. Объем основного текста 107

страниц. Общий объем работы 145 страниц. Диссертация содержит 21 рисунок и

15 таблиц. Разделы пронумерованы в пределах каждой главы. Номер раздела со-

стоит из номера главы и номера раздела, разделенных точкой. Нумерация таб-

Page 14: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

14

лиц и рисунков многоуровневая и включает номер главы, номер раздела и но-

мер рисунка (таблицы), разделенные точкой.

По результатам проведенных исследований можно сформулировать сле-

дующие выводы:

использование параллельных вычислений на базе технических решений

CUDA позволяет существенно снизить временные затраты на преодоле-

ние систем защиты. Архитектура CUDA относится к классу SIMT – Single

Instruction / Multiple Thread, который можно считать подклассом SIMD

(Single Instruction stream / Multiple Data stream) общепринятой классифи-

кации. Соответственно, наиболее целесообразно использовать данную ар-

хитектуру для реализации методов и алгоритмов с массовым параллелиз-

мом данных;

массовое распространение, низкая стоимость и удельное энергопотребле-

ние в сочетании с высокой удельной производительностью графических

процессоров с поддержкой CUDA делает их одним из самых доступных

средств для увеличения технических (вычислительных) возможностей

потенциального нарушителя ИБ АС;

обоснованную и достоверную оценку вычислительной стойкости систем

защиты можно получить лишь совместно, используя аппарат теории

сложности дискретных алгоритмов и аппарат компьютерного моделиро-

вания вычислительных процессов, реализующих методы (алгоритмы), эк-

вивалентные по сложности вскрытию систем защиты АС. Оценку стойко-

сти средств защиты необходимо проводить для каждого нового класса вы-

числительных устройств, новых архитектур и моделей вычислений;

результаты компьютерного моделирования решения задач факторизации

и дискретного логарифмирования на модифицированных параллельных

алгоритмах показали, что организация эффективных параллельных вы-

числений в архитектуре CUDA позволяет существенно снизить фактиче-

ские временные затраты на решение указанных задач;

полученные оценки свидетельствуют, что c учетом общего количества вы-

Page 15: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

15

числительных средств при использовании локальных предметно-

ориентированных компонентов вычислительных систем, в частности, спе-

циализированных решений nVidia (Quadro и Tesla), и «заоблочных» вы-

числений в скором времениможно прогнозировать до 108 управляемых

«облаком» вычислителей с производительностью более 1 ГГц (до 108 реги-

стровых операций на отдельном терминале). Соответственно, общее сни-

жение практической операционной стойкости систем защиты составит (с

учетом задействования гетерогенных вычислителей) от 1016

до 1019

раз на

консорциум [11]. Таким образом, в ближайшее время следует ожидать су-

щественного возрастания уровня угроз для коммерческих АС и угроз ки-

бербезопасности в отношении систем защиты информации, что позволяет

сформулировать общие рекомендации следующего плана:

‒ в интересах преодоления существующих систем защиты возможно и це-

лесообразно задействовать ресурсы GPU в гетерогенных GRID-системах;

‒ в интересах повышения уровня защищенности систем ИБ необходимо

учитывать возрастающие угрозы со стороны массового задействования

гетерогенных вычислителей на базе GPU, что, в свою очередь, требует

организации непрерывного мониторинга за рынком перспективных GPU

и соответствующей теоретико-экспериментальной апробации новых об-

разцов вычислителей по предложенным методикам

‒ для реализации систем DPI и DLP с механизмами семантического анали-

за, целесообразно задействовать аппарат параллельных вычислений на

графических платах с архитектурой CUDA с использованием соответст-

вующих адаптированных алгоритмов.

Положения диссертации, выносимые на защиту

оценки эффективности использования GPGPU при решении задач факто-

ризации и дискретного логарифмирования и рекомендации по совершен-

ствованию критериев защищенности АС;

параллельные алгоритмы метода Ш. Лемана решения задачи факториза-

Page 16: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

16

ции целых чисел и ρ-метода Полларда решения задачи дискретного лога-

рифмирования в конечном поле, адаптированные к архитектуре CUDA, и

их программные реализации;

методика оценки операционной сложности параллельных алгоритмов, реа-

лизуемых на гетерогенных архитектурах с вычислителями типа CPU и

GPGPU с технологией CUDA;

методика практической апробации вычислительных систем в отношении

рисков реализации угроз ИБ при их использовании.

Краткое содержание

Введение к работе содержит ее общую краткую характеристику, цели и

задачи исследования, положения, выносимые на защиту, обоснование актуаль-

ности, новизны и практической значимости, а также достоверности полученных

результатов.

В первой главе – «Постановка задачи исследования», в разделе 1.1 при-

водится описание предметной области исследования. Наряду с основными угро-

зами ИБ рассмотрены новые риски и угрозы, сформулированы важнейшие ха-

рактеристики модели нарушителя ИБ АС, защищаемых с помощью ассимет-

ричных систем защиты, практическая стойкость которых базируется на сложно-

сти решения таких задач, как факторизация целых чисел и дискретного лога-

рифмирования в конечном поле или группе точек эллиптической кривой [57,

59].

Отмечается, что для такого рода систем существенный рост общедоступ-

ных нарушителю вычислительных мощностей представляет угрозу ИБ АС. Ос-

новой определения угроз для конкретной информационной системы является

выявление потенциальных нарушителей, прогнозирование их возможностей,

намерений и тактики действий. Для рассматриваемых систем защиты одной из

важнейших характеристик модели нарушителя является уровень его техниче-

ской подготовленности (оснащенности). Определение вычислительных воз-

можностей потенциального нарушителя позволяет оценить степень его способ-

ности практической реализации угроз.

Page 17: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

17

В разделе 1.2 рассматриваются основные подходы к оценке практической

стойкости вполне определенных классов механизмов защиты [3]. Обосновыва-

ется сведение задач преодоления защиты информационных систем к вычисли-

тельным неполиномиальным задачам, в частности, к решению задачи фактори-

зации целых чисел [67]. Другой класс систем защиты опирается на сложность

решения одной из следующих задач [87]:

задачи дискретного логарифмирования (F – конечное поле [17]): для дан-

ных ,a b F найти x такой, что xb a ;

задачи Диффи-Хелмана: для a F , xb a и yc a найти xyd a ;

проблемы выбора Диффи-Хелмана: для a F , xb a , yc a и zd a тре-

буется определить, является ли z произведением z xy .

В разделе 1.3 приводятся формальные постановки задач факторизации

целых чисел и дискретного логарифмирования в конечном поле:

для заданного числа n N надо найти его разложение на простые множи-

тели ip N , такие что 1

i

l

i

i

n p

, i N ;

для заданных чисел , pa b F , где pF – кольцо вычетов по простому моду-

лю p , требуется найти px F , такой, что (mod )xa b p .

Вторая глава – «Параллельные вычисления в архитектуре CUDA» – по-

священа обзору известных архитектур параллельных вычислительных систем и

способов организации параллельных вычислений [28].

В разделе 2.1 приводится базовая классификация параллельных архитек-

тур [23, 52]: SISD (Single Instruction stream / Single Data stream), SIMD (Single

Instruction stream / Multiple Data stream), MISD (Multiple Instruction stream / Sin-

gle Data stream), MIMD (Multiple Instruction stream / Multiple Data stream). Изла-

гаются результаты краткого обзора наиболее известных реализаций российских

и зарубежных параллельных вычислительных систем [68, 79, 83, 95, 107].

Page 18: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

18

В разделе 2.2 рассмотрены различные варианты реализации технологии

GPGPU и особенности их использования для организации параллельных вычис-

лений на графических процессорах [44, 114, 125].

В разделе 2.3 представлена архитектура CUDA, особенности конфигура-

ции параметров ее программного ядра и виды графической памяти [16, 110].

Обоснован выбор технологических платформ на базе ускорителей компании

nVidia с данной архитектурой.

В разделе 2.4 сформулированы требования к архитектурным принципам

вычислительной среды параллельных вычислений и свойствам алгоритма, ха-

рактеризующим его способность к распараллеливанию [28, 30]. Вводятся крите-

рии интегральной эффективности организации параллельных вычислений: ус-

корение параллельной реализации относительно последовательной 1

k

Ta

T и эф-

фективность 1

k

a TE

k kT , где 1T - время решения некоторой вычислительной за-

дачи с помощью последовательной программы, выполняемой на одном процес-

соре (CPU), kT – время решения с помощью параллельной программы, выпол-

няемой на k процессорах [24, 25, 26].

В третьей главе – «Алгоритмы решения задач факторизации и дискрет-

ного логарифмирования» приводится формальное описание методов и алгорит-

мов решения исследуемых в диссертации задач. Разделы 3.1 и 3.2 посвящены

методу Ш. Лемана решения задачи факторизации целых чисел.

В разделе 3.1 приводится анализ известных алгоритмов факторизации с

точки зрения трудоемкости (времени) выполнения и возможности распаралле-

ливания (по данным) [47]. Обосновывается выбор метода Ш. Лемана решения

задачи факторизации для адаптации к параллельным вычислениям CUDA. Опи-

сываются основные идеи, используемые в методе Ш. Лемана, обосновывается

корректность и сходимость алгоритма [70, 18].

Раздел 3.2 посвящен формальному описанию параллельного алгоритма

Ш. Лемана, адаптированного к параллельным вычислениям на GPGPU с архи-

Page 19: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

19

тектурой CUDA [43]. Представлены теоретические оценки сложности парал-

лельного алгоритма, полученные согласно разработанной методики оценки опе-

рационной сложности параллельных алгоритмов, реализованных в гетероген-

ных архитектурах с вычислителями CPU и GPGPU CUDA [49]. Асимптотиче-

ская сложность параллельного алгоритма Ш. Лемана, адаптированного к архи-

тектуре CUDA, выполняемого на гетерогенной системе с достаточным количе-

ством GPU-вычислителей, составляет О(n), где n – факторизуемое число.

Разделы 3.3 и 3.4 посвящены ρ-методу Полларда решения задачи дис-

кретного логарифмирования в конечном поле [87]. В разделе 3.3 обосновывает-

ся выбор ρ-метода Полларда решения задачи дискретного логарифмирования

для адаптации к параллельным вычислениям CUDA, описываются его основные

особенности и преимущества перед другими алгоритмами решения вышеупо-

мянутой задачи. Раздел 3.4 посвящен формальному описанию параллельного

алгоритма ρ-метода Полларда, адаптированного к параллельным вычислениям

на GPGPU с архитектурой CUDA [46]. Асимптотическая сложность параллель-

ного алгоритма ρ-метода Полларда, адаптированного к архитектуре CUDA,

выполняемого на гетерогенной системе с достаточным количеством GPU-

вычислителей, составляет О(p), где p – простое число.

В четвертой главе – «Компьютерное моделирование методов Лемана и

ρ-метода Полларда» представлены результаты компьютерного моделирования

решения задач факторизации и дискретного логарифмирования в различных

условиях постановки, оценки эффективности параллельных вычислений на

GPU с архитектурой CUDA, сравнительного анализа удельных показателей

эффективности графических и центральных процессоров.

Раздел 4.1 содержит результаты экспериментальной апробации модифи-

цированного алгоритма, реализующего метод Ш. Лемана решения задачи фак-

торизации целых чисел. Приводятся результаты экспериментов по сравнитель-

ной оценке времени работы параллельной и последовательной реализаций ал-

горитма. Показаны и проиллюстрированы соответствующими графиками ре-

зультаты экспериментов по оценке временных затрат на решение задачи в раз-

Page 20: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

20

личных условиях ее постановки при использовании последовательного и па-

раллельного алгоритмов.

В разделе 4.2 изложены результаты экспериментальной апробации моди-

фицированного алгоритма, реализующего ρ-метод Полларда решения задачи

дискретного логарифмирования в конечном поле. Приводятся результаты экс-

периментов по сравнительной оценке времени работы параллельной и последо-

вательной реализаций алгоритма. Показаны и проиллюстрированы соответст-

вующими графиками результаты экспериментов по оценке временных затрат на

решение в различных условиях постановки при использовании последователь-

ного и параллельного алгоритмов.

В разделе 4.3 приводятся оценки эффективности использования парал-

лельных вычислений при решении задач факторизации и дискретного логариф-

мирования относительно последовательной реализации алгоритмов. Проанали-

зированы основные удельные показатели: энергоэффективность, экономическая

эффективность и удельное энергопотребление. Данные параметры позволяют

сравнивать вычислительные устройства с различными архитектурами и техни-

ческими характеристиками. Как обобщение результатов проведенного исследо-

вания, представлена методика практической апробации новых вычислительных

систем в отношении роста рисков реализации угроз ИБ при их использовании.

Вследствие того, что стандартные библиотеки программ CUDA на на-

стоящий момент не содержат средств для реализации операций с большими

числами, в разделе 4.4 предложен один из способов представления «длинных»

чисел и реализации арифметических операций над ними на вычислительных

устройствах гетерогенной архитектуры типа GPGPU CUDA [48]. Приводятся

результаты экспериментов по сравнительной оценке времени работы парал-

лельной и последовательной реализаций арифметических операций. Показаны

и проиллюстрированы соответствующими графиками результаты эксперимен-

тов по оценке временных затрат на решение задачи в различных условиях ее

постановки при использовании последовательного и параллельного алгорит-

мов.

Page 21: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

21

В заключении изложены основные результаты, полученные в диссерта-

ционной работе, и сформулированы задачи последующих исследований.

В приложениях приведены коды программных реализаций исследован-

ных алгоритмов и характеристики используемых технологических платформ.

Page 22: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

22

Глава 1. Постановка задачи исследования

1.1. Вычислительные задачи информационной безопасности:

краткий обзор

Согласно доктрине информационной безопасности Российской Федерации

[39], информационная безопасность (ИБ) является неотъемлемой частью на-

циональной безопасности государства. Информатизация российского общества,

идущая все большими темпами [89], с каждым годом увеличивает значение ин-

формационной безопасности в вопросе обеспечения общей безопасности госу-

дарства.

Под информационной безопасностью понимается защищенность инфор-

мации и поддерживающей инфраструктуры от случайных или преднамеренных

воздействий естественного или искусственного характера, чреватых нанесени-

ем ущерба владельцам или пользователям информации и поддерживающей ин-

фраструктуры. Сущность информационной безопасности основывается на трех

базовых принципах [36]:

целостность данных;

конфиденциальность информации;

доступность информации для всех авторизованных пользователей.

Под целостностью данных подразумевается достоверность и полнота ин-

формации и методов ее обработки, т. е. защита от сбоев, ведущих к потере ин-

формации, а также защита от неавторизованного создания или уничтожения

данных. Конфиденциальность трактуется как возможность доступа к информа-

ции только авторизованных пользователей. Доступность – есть обеспечение

свободного доступа к информации и связанными с ней активами авторизован-

ных пользователей по мере необходимости.

Page 23: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

23

Защита информации (ЗИ) – деятельность, направленная на предотвраще-

ние утечки защищаемой информации, несанкционированных и непреднамерен-

ных воздействий на защищаемую информацию. К основным видам ЗИ относят-

ся: правовая, физическая, техническая и криптографическая [3, 37]. С помощью

реализации совокупности мер по ЗИ обеспечивается информационная безопас-

ность.

ИБ является одним из важнейших аспектов интегральной безопасности,

на каком бы уровне не рассматривалась последняя — национальном, отрасле-

вом, корпоративном или персональном. При анализе проблематики, связанной с

информационной безопасностью, необходимо учитывать ее специфику, со-

стоящую в том, что ИБ есть составная часть предметной области информаци-

онно-коммуникационных технологий, динамика развития которой характеризу-

ется беспрецедентно высокими темпами роста. До недавнего времени рост ос-

новных показателей вычислительной техники характеризовался законом Мура

[50], т. е. декларируемый уровень мощности вычислительных устройств увели-

чивался в два раза за каждые два года. В настоящий момент многие эксперты в

области вычислительных технологий считают, что развитие отрасли идет опе-

режающими закон Мура темпами, т. е. увеличение происходит быстрее, чем за

два года, а именно за полтора. Однако уже сейчас (в ближайшем будущем)

можно считать, что персональные ЭВМ на базе архитектуры фон Неймана

практически достигли предела вычислительной мощности, который не может

быть преодолен из-за физических ограничений используемой технологии про-

изводства центральных процессоров. Согласно закону Мура, размеры элемен-

тов микросхемы к 2060 году (самый поздний срок прогноза) должны будут

стать размерами с одиночный атом. С другой стороны, все более широкое рас-

пространение средств вычислительной техники и коммуникации в рамках об-

щедоступных вычислительных сетей оказывают в современных условиях суще-

ственное влияние на общий порог совокупной вычислительной мощности госу-

дарства и социума. По данным Internet World Stats число пользователей сети

Интернет в 2011 году превысило 92 10 , что дает общее представление о реаль-

Page 24: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

24

ном количестве потенциально доступных вычислительных устройств массового

пользования [121].

К числу основных угроз ИБ относится утечка информации. Одним из

распространненых способов утечки данных за пределы корпоративной сети яв-

ляется передача информации по сетевому протоколу, на базе которого построе-

но сетевое взаимодействие. Для предотвращения угроз данного типа в послед-

нее время все больше используют системы предотвращения утечек конфиден-

циальной информации (DLP) и технологию накопления статистических дан-

ных, проверки и фильтрации сетевых пакетов по их содержимому (DPI).

Основные задачи DPI – это обнаружение и блокировка утечек данных. По

мимо этого, с помощью таких систем можно выявлять потенциально опасные

каналы коммуникаций, вести архив корпоративной электронной почты, распе-

чатываемых документов и других данных [58].

Системы DPI позволяют проводить глубокий анализ сетевых пакетов, в

результате которого можно накапливать статистические данные, проверять и

фильтровать сетевые пакеты по их содержимому [76].

Системы DPI и DLP являются специализированным програмным обеспе-

чением, которое требует соответствующих вычислительных ресурсов, мощно-

сти которого, напрямую зависят от объема данных и размера сети [52]. Для по-

давляюцего большинства коммерческих структур, имеющих локальные сети,

рассматриваемые системы защиты не доступны в силу дороговизны их техни-

ческого обеспечения (для случая серверного варианта программного обеспече-

ния). Установка же соответствующих компонент на конечные станции пользо-

вателей приводит к существенному снижению быстродействия персональных

компьютеров, что в свою очередь ограничивает возможности организации эф-

фективной работы конечных пользователей.

Однако, многие задачи в рамках рассмотренных систем можно выполнять

в параллельном режиме, используя мощности GPGPU. Для АС, функциони-

рующих в составе (или «на базе») сетей, оснащенных специализированным

серверным оборудованием, графические процессоры могут выступать в качест-

Page 25: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

25

ве резерва вычислительных ресурсов на случай резкого увеличения объема об-

рабатываемых данных, повышая тем самым отказоустойчивость системы защи-

ты. Для АС, не использующих серверное оборудование, использование графи-

ческих процессоров позволит сделать более доступными (с материальной точки

зрения) механизмы защиты, реализуемые в рамках DLP и DPI.

Один из функциональных механизмов, используемый в рассмотренных

системах – механизм лингвистического анализа, по результатам работы которо-

го осуществляется классификация информации по функциональной принад-

лежности (финансовая, производственная, технологическая, коммерческая,

маркетинговая), а внутри классов — категоризация ее по уровню доступа (для

свободного распространения, для ограниченного доступа, для служебного ис-

пользования, секретная, совершенно секретная и т. д.) [52]. Другими словами,

для поддержания функций защиты надо постоянно решать задачу тематической

текстовой классификации. В работах Пескишевой Т.А. и Котельникова Е.В.

[60,79,80] описаны параллельные системы автоматической текстовой класси-

фикации с возможностью обучения на базе многопроцессорных параллельных

систем.

В случае задействования GPGPU CUDA для решения эффективно распа-

раллеливаемых вычислительных задач общего характера (с учетом соответст-

вующей адаптации применяемых алгоритмов) можно предложить использова-

ние процессоров nVidia в качестве альтернативного оборудования для развер-

тывания систем DLP и DPI в корпоративных сетях ограниченного объема (с не-

большим числом конечных пользователей).

Наряду с основными угрозами информационной безопасности сущест-

венный рост вычислительных мощностей сверх определенного уровня также

представляет угрозу информации, обрабатываемой и хранимой средствами вы-

числительной техники, в частности, в отношении снижения уровня защищен-

ности ряда асимметричных систем защиты, практическая стойкость которых

базируется на сложности решения некоторых фундаментальных трудноразре-

шимых вычислительных задач (здесь и далее под трудноразрешимыми или вы-

Page 26: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

26

числительно сложными задачами подразумеваются задачи, для которых не из-

вестны алгоритмы их решения полиномиальной сложности на модели детерми-

нированной машины Тьюринга).

Основой определения угроз для конкретной информационной системы

является выявление потенциальных нарушителей, прогнозирование их возмож-

ностей, намерений и тактики действий.

К числу наиболее распространенных средств защиты информации в IT-

сфере относятся система RSA, открытая система PGP, DarkCryptTC, схема вы-

работки общего ключа Диффи-Хеллмана, схема электронной подписи Эль-

Гамаля и другие [13, 96, 99, 101].

Практическая (вычислительная) стойкость указанных систем базируется

на одной из следующих задач класса NP [87]:

факторизации целых чисел (RSA),

дискретного логарифмирования в конечном поле (схема выработки ключа

Диффи-Хеллмана, схема электронной подписи Эль-Гамаля, криптографи-

ческая система Мэсси-Омуры),

дискретного логарифмирования в группе точек эллиптической кривой

(протокол обмена ключей Диффи-Хеллмана, цифровая подпись Эль-

Гамаля, криптосистема Мэсси-Омуры с реализацией вычислений в группе

точек эллиптической кривой),

задачи «об укладке ранца» и ее модификации.

Для рассматриваемых систем защиты одной из важнейших характеристик

модели нарушителя является уровень технической подготовленности (осна-

щенности). Определение вычислительных возможностей потенциального на-

рушителя позволяет оценить степень его способности практической реализации

угроз.

В диссертации исследованы задачи факторизации целых чисел и дискрет-

ного логарифмирования в конечном поле в отношении возможности снижения

фактических временных затрат на их решение при использовании параллель-

Page 27: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

27

ных вычислений на графических процессорах nVidia с технологией GPGPU и

архитектурой CUDA.

1.2. Стойкость систем защиты и способы ее оценки

Проблема оценки стойкости (уровня защищенности) системы защиты

информации относится к числу весьма сложных и неоднозначных проблем.

Существуют два основных подхода к определению и оценке стойкости [3]:

теоретический (теоретико-информационная стойкость),

практический (вычислительная стойкость).

Теоретическая стойкость, совершенная и L-совершенная, как правило,

определяется с точки зрения математической теории информации, при этом от-

влекаются от реальных временных, материальных и других затрат на преодоле-

ние механизмов защиты [51]. Основоположником данного подхода считается К.

Шеннон, который сформулировал основные положения и результаты теории

стойкости [100]. На практике большинство используемых систем не являются

теоретически стойкими [12].

Вычислительная стойкость подразумевает невозможность взлома систе-

мы защиты наилучшим из возможных алгоритмов атаки, в силу неоправданно

высоких затрат используемых вычислительных ресурсов. В настоящее время

принято считать, что если для вскрытия требуется больше 802 операций, то

взлом становится слишком дорогостоящим и нецелесообразным [87]. В силу

невозможности определения понятия наилучшего алгоритма взлома ни одну

систему защиты информации нельзя считать вычислительно защищенной в

указанном выше смысле.

Стойкость большинства систем защиты информации, разработанных в

последние годы, как правило, оценивается на основании теории вычислитель-

ной сложности, а не на классической теории информации. Основное отличие

такой оценки заключается в том, что если в соответствии с теорией информа-

ции система является стойкой при отсутствии у противника возможности полу-

Page 28: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

28

чения необходимого количества информации для восстановления зашифрован-

ного сообщения, то в соответствии с теорией вычислительной сложности, даже

при наличии всей необходимой информации, противник не может восстановить

сообщение в заданный срок из-за большого объема вычислений.

Другой практический подход, связанный с вычислительной защищенно-

стью, состоит в том, чтобы свести вскрытие системы к решению хорошо изу-

ченных (как правило, математических) задач. В этом случае системы называют

доказуемо стойкими.

Решение задачи вскрытия криптосистемы RSA сводится, в частности, к

разложению на простые множители числа n, n N , 2n .

Теорема 1.2.1. ([67]) Задача факторизации числа n=pq ( ,n N p, q – про-

стые) и задача вычисления функции Эйлера ( )n полиномиально эквивалентны

◄.

Значение функции Эйлера ( )n , где n N , есть количество натуральных

чисел, меньших n и взаимно простых с n [2].

Теорема 1.2.2. ([67]) Задача вычисления секретного показателя

1(mod ( ))d e n , где 1 ( ),e n e N , сводится с полиномиальной сложно-

стью к задаче вычисления функции ( )n , n N ◄.

Факторизация самого числа n сразу дает возможность вычисления функ-

ции ( ) ( 1)( 1)n p q .

На сегодняшний день не известны методы разложения числа n N на

простые множители полиномиальной сложности. До начала 90-х годов XX века

самым быстрым из общих методов считался метод квадратичного решета. Его

операционная сложность составляет 12( , )nL c , где c – некоторая константа, за-

висящая от типа поля, например, от его характеристик и

1( (1)(ln ) (ln ln )( , )

O n n

nL e

. Наиболее приемлемым методом на сегодняшний

день является метод квадратичного решета в числовом поле, сложность которо-

го равна 13( , )nL c , где с – некоторая константа, не зависящая от разлагаемого

числа n.

Page 29: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

29

Вскрытие протокола генерации общего ключа Диффи-Хеллмана, схемы

электронной подписи Эль-Гамаля и криптосистемы Мэсси-Омуры сводятся к

одной из следующих задач [57, 87]:

проблеме дискретного логарифмирования (F – конечное поле): для дан-

ных ,a b F найти x такой, что xb a ;

задаче Диффи-Хелмана: для a F , xb a и yc a найти xyd a ;

проблеме выбора Диффи-Хелмана: для a F , xb a , yc a и zd a тре-

буется определить, является ли z произведением z xy .

Данные задачи являются эквивалентными по сложности решения.

Теорема 1.2.3. ([87]) В любой конечной абелевой группе G задача Диф-

фи-Хелмана не сложнее проблемы дискретного логарифмирования◄.

Теорема 1.2.4. ([87]) Проблема выбора Диффи-Хелмана в любой конеч-

ной группе G не сложнее задачи Диффи-Хелмана◄.

Вообще говоря, проблема выбора Диффи-Хелмана самая легкая из трех

описанных проблем, далее по сложности следует задача Диффи-Хелмана и за-

дача вычисления дискретного логарифма.

Стоит отметить, что сложность решения задачи дискретного логарифми-

рования сильно зависит от типа алгебраической структуры. Например, для

группы целых чисел относительно сложения по модулю целого числа n эта за-

дача тривиальна. Наибольшую сложность задача дискретного логарифмирова-

ния имеет в группе точек эллиптической кривой [15].

Наряду с разработкой новых эффективных методов и алгоритмов, общим

магистральным направлением снижения практических временных затрат на

решение указанных классов задач остается выбор эффективной модели вычис-

лений на существующих классах архитектур вычислительных систем, что тре-

бует соответствующей адаптации синтезируемых методов и алгоритмов к вы-

бранной модели вычислений [9]. В рамках классической модели вычислений А.

Тьюринга - Дж. Неймана основным направлением снижения временных затрат

Page 30: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

30

является распределение требуемого объема информационно-вычислительной

работы по совокупности параллельно работающих вычислителей.

Типичной задачей такого рода, помимо исследованных в работе, являют-

ся задачи тотального перебора. В первую очередь рост производительности вы-

числительных систем нарушителя порождает угрозы ИБ для парольных систем

защиты. Их стойкость обусловлена невозможностью эффективной реализации

метода грубой силы и недостаточностью вычислительных средств у потенци-

ального нарушителя. Использование параллельных вычислений на базе графи-

ческих процессоров nVidia может существенно повысить эффективность атак

методом полного перебора [61]. В настоящее время использование ресурсов

GPU с архитектурой CUDA для взлома паролей методом перебора делает уяз-

вимым практически любой пароль, состоящий из менее 12 символов.

1.3. Задачи факторизации целых чисел и дискретного

логарифмирования в конечном поле

Согласно основной теореме арифметики любое натуральное число, боль-

шее единицы, с точностью до перестановки сомножителей можно представить

единственным образом в виде:

1 2 3... ln p p p p ,

где ip – простые числа, 1l [2, 22].

В общем случае задачу факторизации целых чисел можно сформулиро-

вать следующим образом: для заданного числа n N надо найти его разложе-

ние на простые множители ip N такие, что 1

i

l

i

i

n p

, i N [71].

На сегодняшний день для рассматриваемой задачи не известны методы ее

решения полиномиальной сложности. Наиболее сложным вариантом задачи

факторизации целых чисел является случай, когда разлагаемое число имеет все-

го два нечетных взаимно простых сомножителя, т. е. n pq , где p,q – простые

Page 31: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

31

числа. В случае, если делителей n N больше двух, задача разложения решает-

ся рекурсивно: n раскладывается на два множителя, для каждого из которых

решается задача факторизации.

Формализовать задачу дискретного логарифмирования в конечном поле

можно следующим образом.

Пусть p – кольцо вычетов по простому модулю p [21, 27]. Для заданных

чисел , pa b требуется найти px

(mod )xa b p (1.4.1)

Целое число x, удовлетворяющее (1.4.1), называется дискретным лога-

рифмом числа b по основанию a [71].

Для практических приложений наиболее важна задача дискретного лога-

рифмирования в мультипликативных группах конечных полей. Пусть qF – ко-

нечное поле, nq p , n N , p – простое, qGF – мультипликативная группа qF

[62, 63, 73].

Задача дискретного логарифмирования в мультипликативной группе qGF

состоит в отыскании по данным a и b некоторого дискретного логарифма

qx GF по основанию qa GF . Если

qa GF имеет бесконечный порядок, то

дискретный логарифм любого элемента по основанию a определен однозначно.

В противном случае все дискретные логарифмы qx GF по основанию a можно

получить из некоторого такого дискретного логарифма 0x по формуле

0x x km , (1.4.2)

где m – порядок элемента qa GF , k . Группа pGF является циклической и

имеет порядок q-1, поэтому, если в качестве pa GF берется некоторый порож-

дающий элемент этой группы, то дискретный логарифм любого элемента по

основанию qa GF существует и определен однозначно по модулю q-1. Если

существует алгоритм (метод) нахождения логарифма по фиксированному осно-

ванию qg GF , которое является порождающим элементом мультипликативной

Page 32: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

32

группы, то можно находить и дискретные логарифмы по произвольному осно-

ванию. Для того чтобы найти дискретный логарифм qx GF элемента

qb GF

по основанию qa GF , достаточно вычислить дискретные логарифмы z и w

элементов a и b соответственно по основанию g и решить сравнение

(mod 1)xz w q (1.4.3)

относительно qx GF [21].

Выводы

В главе 1 кратко охарактеризована предметная область диссертационного

исследования. Детализированы основные подходы к оценке стойкости систем

защиты, рассмотрены основные угрозы и важнейшие характеристики модели

нарушителя информационной безопасности автоматизированных систем. Рас-

смотрен ряд новых угроз информационной безопасности, к числу наиболее ак-

туальных из которых отнесен существенный рост используемых нарушителем

вычислительных мощностей. Оценка технической оснащенности и объема вы-

числительных возможностей потенциального нарушителя позволяет оценить

уровень возможности реализации угроз для систем, стойкость средств защиты

которых опирается на сложность решения вполне определенных задач матема-

тики, в частности, задач факторизации и дискретного логарифмирования, фор-

мальные постановки которых приведены в разделе 1.3.

Page 33: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

33

Глава 2. Параллельные вычисления в архитектуре CUDA

2.1. Обзор параллельных вычислительных систем

В процессе развития суперкомпьютерных технологий идею повышения

производительности вычислительной системы за счет увеличения числа про-

цессоров использовали неоднократно. Первые промышленные образцы муль-

типроцессорных систем появились на базе векторно-конвейерных компьютеров

в середине 80-х годов.

В настоящее время существует множество различных вариантов органи-

зации параллельных вычислений [24], которые можно разбить на следующие

классы.

Массивно-параллельные системы (MPP) – состоят из однородных вы-

числительных узлов, включающих один или несколько процессоров и локаль-

ную память (прямой доступ к памяти других узлов не возможен). Узлы системы

связаны через некоторую коммутационную среду. Программирование осущест-

вляется в рамках модели передачи сообщений (например, MPI).

Кластерные системы – это дешевый вариант MPP. Такие системы со-

стоят из набора персональных компьютеров (рабочих станций) общего назна-

чения. Для связи вычислительных узлов используются стандартные сетевые

технологии. Программирование, как и в предыдущем классе, осуществляется в

рамках модели передачи сообщений, обычно MPI. Реализации систем данного

класса дешевле, но имеют врожденную задержку из-за использования стан-

дартных сетевых интерфейсов.

Grid (вычислительная сеть) – это объединение разнородных вычисли-

тельных ресурсов в сетях (например, Интернет). Этот класс реализует распре-

деленные вычисления. Вычисления производятся на удаленных друг от друга

устройствах, что порождает большие задержки при передаче данных между

устройствами.

Page 34: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

34

Параллельные векторные системы (PVP). Состоят из вычислительных

узлов, каждый из которых содержит несколько векторно-конвейерных процес-

соров. Узлы могут быть связаны коммутационной средой.

Симметричные мультипроцессорные системы (SMP) – это система из

нескольких однородных процессоров и массива общей памяти, к которой име-

ют доступ все процессоры. Хотя общая память и упрощает взаимодействие

процессоров системы, но, с другой стороны, ограничивает их количество в ре-

альных системах. Программирование осуществляется в рамках модели общей

памяти, как правило, это технология OpenMP.

Системы с неоднородным доступом к памяти (NUMA). Такая система

состоит из нескольких однородных базовых модулей, каждый из которых имеет

несколько процессоров и блок памяти. Модули объединены между собой. Не

смотря на физическое разделение памяти, логически она общедоступна. Про-

граммирование аналогично SMP-системам.

«Облачные» вычисления – вычисления, проводимые в готовой инфра-

структуре, к которой есть доступ через сеть. Инфраструктура может состоять из

тысяч, сотен тысяч вычислительных узлов, дисковых массивов. Все это соеди-

нено в единую сеть и функционирует как одна вычислительная машина. «Об-

лачные» вычисления представляют собой динамически масштабируемый спо-

соб доступа к внешним вычислительным ресурсам в виде сервиса, предостав-

ляемого посредством Интернета, при этом пользователю не требуется никаких

особых знаний об инфраструктуре «облака» или навыков управления «облач-

ной» технологией. В историческом контексте архитектура «облака» естествен-

ным образом развивает известную концепцию вычислительных центров кол-

лективного пользования (ВЦКП). ВЦКП состоит из центрального комплекса

обработки данных, где сосредоточены основные вычислительные и информа-

ционные ресурсы, терминалов конечных пользователей и каналов связи с аппа-

ратурой передачи данных. Принципы организации и функционирования таких

комплексов разработаны в трудах В.М. Глушкова, Э.А. Якубайтиса, А.Н. Мям-

лина, А.И. Никитина [32 – 35]. На данный момент большинство «облачных»

Page 35: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

35

инфраструктур развернуто на серверах центров обработки данных (data center),

используя технологии виртуализации, что фактически позволяет любому поль-

зовательскому приложению использовать вычислительные мощности, совер-

шенно не задумываясь о технологических аспектах.

Наряду с разбиением на классы параллельных систем, можно классифи-

цировать и параллельные архитектуры. Попытки такой классификации прини-

мались не однократно, наиболее известной является классификация М. Флинна,

предложенная в 1966 году [56]. Данная классификация базируется на понятии

потока, под которым понимается последовательность команд или данных, об-

рабатываемых процессором. По количеству потоков Флинн разделяет парал-

лельные архитектуры на четыре класса.

SISD (Single Instruction stream / Single Data stream) – одиночный поток

команд и одиночный поток данных. В машинах с такой архитектурой есть

только один поток команд, все команды обрабатываются последовательно и

каждая команда инициирует одну скалярную операцию.

SIMD (Single Instruction stream / Multiple Data stream) – одиночный поток

команд и множественный поток данных. В архитектурах данного типа, в отли-

чие от предыдущего, используются векторные команды. Благодаря этому мож-

но выполнять одну арифметическую операцию сразу над множеством данных, в

частности, над вектором. Вообще говоря, способ выполнения векторных опера-

ций не оговаривается.

MISD (Multiple Instruction stream / Single Data stream) – множественный

поток инструкций и одиночный поток данных. В данной архитектуре подразу-

мевается наличие нескольких процессоров, обрабатывающих один поток дан-

ных. Многие специалисты в области архитектуры вычислительных систем счи-

тают, что данный класс пуст.

MIMD (Multiple Instruction stream / Multiple Data stream) – множественный

поток команд и множественный поток данных. Архитектура этого класса под-

разумевает множество процессоров, обрабатывающих каждый свой поток дан-

ных.

Page 36: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

36

Приведенная классификация используется и в настоящее время, хотя она

и не лишена недостатков. Разбиение на классы, как и классификация парал-

лельных архитектур, достаточно условно. Реальные параллельные вычисли-

тельные системы могут быть отнесены к нескольким классам или представлять

их комбинацию.

В настоящее время наиболее известны следующие реализации парал-

лельных вычислительных систем. Семейство компьютеров CRAY 70-80 гг. ХХ

века. Последним представителем семейства является CRAY C90, созданный в

2002 году. Сама концепция является достаточно удачной, параллелизм прони-

зывает все компоненты системы. К недостаткам системы можно отнести необ-

ходимость векторизации программы и желательно полной векторизации, а это

не для всех алгоритмов возможно. Еще одним недостатком является наличие

конфликтов памяти. На практике производительность таких систем, и GRAY

C90 в частности, редко достигает 50% от пиковой производительности [24].

Программа ASCI министерства энергетики США включает несколько

реализованных систем [107]. ASCI White представляет собой систему IBM

RS/6000 SP с 512-ю симметричными мультипроцессорными (SMP) узлами. Ка-

ждый узел имеет 16 процессоров, система в целом – 8192 процессора. Опера-

тивная память системы – 4 TБ, емкость дискового пространства 180 TБ.

Все узлы системы являются симметричными мультипроцессорами IBM

RS/6000 POWER3 с 64-х разрядной архитектурой. Каждый узел автономен, об-

ладает собственной памятью, операционной системой, локальным диском и 16

процессорами.

Процессоры POWER3 являются суперскалярными 64-х разрядными

СБИС конвейерной организации с двумя устройствами по обработке команд с

плавающей запятой и тремя устройствами по обработке целочисленных ко-

манд, способными выполнять до восьми команд за тактовый цикл и до четырех

операций с плавающей запятой за такт. Тактовая частота каждого процессора –

375 MHz.

Page 37: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

37

Программное обеспечение ASCI White поддерживает смешанную модель

программирования – передача сообщений между узлами и многопотоковость

внутри SMP-узла.

Операционная система представляет собой версию UNIX – IBM AIX. AIX

поддерживает как 32-х, так и 64-х разрядные системы RS/6000.

Поддержка параллельного кода на ASCI White включает параллельные

библиотеки, отладчики (в частности, TotalView), профилировщики, утилиты

IBM и сервисные программы по анализу эффективности выполнения. Поддер-

живаются библиотеки MPI, OpenMP, потоки POSIX и транслятор директив

IBM. Имеется параллельный отладчик IBM.

В рамках программы BlueGene реализован один из мощнейших супер-

компьютеров. Характеристики этой реализации следующие:

32 стоек по 1024 двуядерных 32-битных процессора PowerPC 440 0.7 GHz

в каждой;

пиковая производительность – порядка 180 TFlops;

максимальная производительность на тесте LINPACK – 135 TFlops.

Один из самых известных в России проектов суперкомпьютеров является

серия МВС (Многопроцессорная Вычислительная Система), установленная в

Межведомственном Суперкомпьютерном Центре Российской Академии Наук.

В настоящее время наиболее мощными представителями данной серии являют-

ся суперкомпьютеры МВС-100К, MBC-15000ВМ [68].

Аппаратная конфигурация вычислительных узлов МВС-100К включает в

себя:

1275 вычислительных модуля на базе двух/четырех/шести ядерных про-

цессоров Intel Xeon;

кластер управляется технологией Infiniband;

пиковая производительность 227,94 TFlops.

В июне 2006 года MBC-15000ВМ занял 70 место в списке Top500 и стал

самым мощным российским суперкомпьютером.

Аппаратная конфигурация вычислительных узлов MBC-15000ВМ:

Page 38: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

38

574 двухпроцессорных узла на базе процессоров IBM PowerPC 970FX;

узлы, объединенные сетью Myrinet;

пиковая производительность 10,1 TFlops.

В настоящее время в рамках программы РИСП упомянутый комплекс

модифицирован в распределенную систему МВС-15000BMD, части которой ус-

тановлены во Владивостоке (СЦ ИАПУ ДВО РАН), Казани (КНЦ РАН), Моск-

ве (МСЦ РАН), Санкт-Петербурге (филиал МСЦ РАН) и Черноголовке (ИПХФ

РАН).

По состоянию на 2012 год МВС далеко не единственная реализация су-

перкомпьютеров в России. Наиболее мощные системы, входящие в ТОР-50 [93]

это:

научно-исследовательский вычислительный центр МГУ имени М. В. Ло-

моносова — компьютер «Ломоносов» — вычислительная мощность

872,50 TFlops;

РНЦ Курчатовский институт – вычислительная мощность 101,21 TFlops.

В рамках совместного проекта Института программных систем РАН и

компании «Т-Платформы» создана и развивается серия суперкомпьютеров

«СКИФ» (Суперкомпьютерная Инициатива Феникс) [79] – совместная разра-

ботка России и Белоруссии по развитию суперкомпьютеров.

В рамках программы «СКИФ» реализованы следующие суперкомпьюте-

ры [95].

Суперкомпьютер «СКИФ К-1000», созданный в 2004 году:

576 шестидесятичетырех разрядных процессоров AMD Opteron™;

пиковая производительность 2,5 TFlops.

Суперкомпьютер «СКИФ Урал», Южно-Уральского государственного

университета:

166 blade-лезвий T-Blade на базе 332 процессоров Intel Xeon Е 5472;

пиковая производительность 16 TFlops.

Page 39: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

39

На момент завершения строительства занял 4-ую позицию в рейтинге

Top50 самых мощных компьютеров России и стран СНГ и 282 место в рейтин-

ге Top500 самых мощных компьютеров мира [93, 131].

Нельзя обойти вниманием и семейство персональных суперкомпьютеров

(кластеров) «СКИФ-ТРИАДА» [83].

Семейство включает три базовых модели: модель 1 (ВМ5300), модель 2

(ВМ5300.01), модель 3 (ВМ5300.02) с пиковой производительностью до 100-

500 GFlops и кластерной архитектурой. Они функционируют под управлением

OC Linux и Windows Computer Cluster Server 2003, используют в качестве среды

параллельного программирования систему передачи сообщений MPI, языки

программирования С/С++, Fortran.

Как видно из приведенного обзора, большинство суперкомпьютеров реа-

лизовано в форме кластера, т. е. группы компьютеров, объединенных в локаль-

ную вычислительную сеть (ЛВС) и способных работать в качестве единого вы-

числительного ресурса. Такие реализации имеют относительно более низкую

стоимость в сравнении с другими типами параллельных вычислительных сис-

тем (за счет использования типовых аппаратных и программных решений).

Минусом является врожденная задержка, порождаемая передачей сообщений

между узлами кластера.

Все описанные системы реализованы на архитектуре CPU и позволяют

использовать практически любые шаблоны параллельных вычислений. Всем

таким суперкомпьютерным системам присущи недостатки, главный из которых

это стоимость, которая делает их не доступными для региональных универси-

тетов, исследовательских центров, лабораторий и тем более рядовых исследо-

вателей. Даже модели серии «СКИФ-ТРИАДА», позиционируемые как персо-

нальные, имеют стоимость минимальной 4-х узловой кластерной конфигурации

для моделей 1 и 2 – от 15-17 тысяч USD. Как правило, все системы реализованы

в единичных экземплярах, что приводит к ограниченному доступу к вычисли-

тельным ресурсам этих систем. Другим существенным недостатком суперком-

пьютерных систем является непрозрачный доступ пользователя к своим проек-

Page 40: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

40

там. Сегодня пользователю необходимо научиться работать с арсеналом про-

граммного обеспечения (программой удаленного доступа, командной строкой,

компилятором, планировщиком и т.д.), установленным на целевом суперком-

пьютере или кластере. Значительным недостатком является отсутствие масшта-

бируемости и аппаратная зависимость программных реализаций. Программы,

написанные для конкретного варианта параллельной вычислительной системы

не обязательно будут работать на следующих версиях этой системы и, тем бо-

лее, не будут выполняться на другом суперкомпьютере.

Хотя в последние годы программа создания суперкомпьютерных вычис-

лительных систем в России реализуется весьма активно, перечисленные про-

блемы их использования в ближайшей перспективе, по всей видимости, не бу-

дут решены в полном объеме.

Использование других технологий (квантовых компьютеров и других не-

стандартных направлений развития вычислительной техники) для эффективно-

го решения сложных задач пока не приносят хоть сколько значимых практиче-

ских результатов из-за отсутствия физической реализации устройств [42].

В настоящее время интенсивно развивается еще одна система параллель-

ных вычислений, основанная на архитектуре графического процессора (GPU),

которая фактически лишена недостатков, указанных выше. Это подтверждает и

тот факт, что большинство суперкомпьютеров в России и других странах осна-

щаются вычислительными модулями GPU [97]. Архитектура GPU является ме-

нее гибким, но гораздо более производительным вариантом для решения мно-

гих вычислительных задач.

2.2. Обзор технологий GPGPU

Долгое время основным и единственным устройством, выполняющим

операции (инструкции), был центральный процессор. Позже появились много-

ядерные процессоры и многопроцессорные системы, в которых вычислитель-

ных компонентов было несколько [38]. Это позволило машинам выполнять не-

Page 41: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

41

сколько задач одновременно, а общая (теоретическая) производительность сис-

темы поднялась ровно во столько раз, сколько ядер было установлено в маши-

не, чего нельзя сказать о фактической производительности многопроцессорных

компьютеров. Более того, оказалось, что производить и конструировать много-

ядерные процессоры слишком сложно и дорого. В каждом ядре необходимо

размещать полноценный процессор x86 или x64-архитектуры со своим кэшем,

конвейером команд, блоками SSE и прочими элементами. В силу этих и других

проблем, направление увеличения вычислительной мощности за счет роста ко-

личества ядер центрального процессора можно считать бесперспективным.

Графические процессоры лишены многих недостатков центрального про-

цессора. До недавнего времени видеоускорители рассматривались лишь как

специализированные устройства, предназначенные только для обработки гра-

фики. В начале 21 века появилась технология использования графического

процессора для общих вычислений (GPGPU).

GPGPU – технология использования графического процессора для вы-

полнения расчетов в приложениях общих вычислений. Это стало возможным

благодаря добавлению программируемых шейдерных блоков и более высокой

арифметической точности растровых контейнеров, что позволяет использовать

потоковые процессоры для не графических вычислений.

Хотя данная технология и имеет ограниченный круг применения, GPU-

устройства шагнули далеко вперед центрального процессора в плане наращи-

вания суммарной вычислительной мощности и общего количества ядер. В сущ-

ности, основная задача GPU сводится к математическим расчетам с помощью

простых алгоритмов, получающих на вход предсказуемые данные, и близка по

идеологии RISC архитектуре CPU.

На сегодняшний день технология GPGPU реализована несколькими про-

изводителями [115].

Khronos Group: OpenCL – язык программирования задач общего назначе-

ния, связанных с вычислениями на различных графических и центральных про-

цессорах.

Page 42: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

42

Microsoft: DirectCompute – интерфейс программирования приложений,

который входит в состав DirectX.

Advanced Micro Devices: AMD FireStream – технология GPGPU, позво-

ляющая реализовывать вычислительные алгоритмы, выполняемые на графиче-

ских процессорах ускорителей ATI.

Компания nVidia: CUDA – технология GPGPU, позволяющая реализовы-

вать на языке Си (или других языках программирования) вычислительные ал-

горитмы, выполняемые на графических процессорах ускорителей GeForce

восьмого поколения и старше.

OpenGL – распространенный стандарт интерфейса программирования

трехмерной графики [122]. Основным принципом работы OpenGL является по-

лучение наборов векторных графических примитивов в виде точек, линий и

многоугольников с последующей математической обработкой полученных

данных и построением растровой картинки на экране и/или в памяти. Вектор-

ные трансформации и растеризация выполняются графическим конвейером

(рис. 2.2.1).

В настоящее время OpenGL является одним из самых распространенных

средств для параллельного программирования GPU.

Microsoft DirectCompute впервые появился в составе DirectX11, для об-

ращения к ресурсам графического процессора использует API операционных

систем Microsoft Windows Vista, Windows7 и Windows 8.

Page 43: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

43

Рис. 2.2.1. Схема графического конвейера

В отличие от предыдущих парадигм программирования, GPU CUDA и

ATI Stream выполнены с учетом прямого доступа к аппаратным возможностям

видеокарт [108]. Входящие в состав ATI Stream компоненты можно разделить

на два уровня: верхний и нижний (рис. 2.2.2).

Рис. 2.2.2. Компоненты AMD Stream Computing

Нижний уровень нацелен, прежде всего, на разработчиков компиляторов

и средств программирования, позволяя взаимодействовать с графическим про-

цессором на низком уровне для достижения максимальной производительно-

Page 44: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

44

сти. Данный уровень включает в себя ассемблер для графического процессора,

менеджер памяти и средства взаимодействия с графической аппаратурой. На

верхнем уровне разработчику предоставляется вариант языка Cи с потоковыми

расширениями, учитывающими особенности конкретного графического про-

цессора.

Реализация технологии GPGPU CUDA от компании nVidia на сегодняш-

ний день является фаворитом в данной области. Другие технологии, в том чис-

ле и ATI Stream, пока не имеют такой развитой аппаратной и программной реа-

лизации, как у nVidia. Постоянный технический прогресс в развитии графиче-

ских чипов общего назначения, а также стремительное развитие nVidia CUDA

SDK позволяют считать компанию nVidia лидером в области высокопроизводи-

тельных вычислений с использованием GPGPU.

2.3. Архитектура CUDA

Современные графические процессоры представляют собой параллель-

ные архитектуры, упрощенная схема которых показана на рисунке 2.3.1. GPU

имеют собственную память, размер которой постоянно увеличивается на новых

моделях видеокарт. Также GPU содержит набор потоковых мультипроцессоров,

каждый из которых способен одновременно выполнять более 1000 нитей. Ко-

личество мультипроцессоров зависит от конкретной модели GPU. Каждый

мультипроцессор работает независимо от остальных.

Рис. 2.3.1. Упрощенная архитектура G80

SM SM SM SM SM SM

DRAM

Page 45: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

45

Современные GPU представляют собой массивно-параллельные вычис-

лительные устройства с высоким быстродействием и большим объемом памяти.

Главная проблема массового использования GPU заключалась в том, что

до недавнего времени не существовало стандартного интерфейса для програм-

мирования GPU. Разработчики использовали OpenGL или DirectX, но это было

неудобно. Библиотеку OpenGL может создать любая компания или просто

группа программистов. Программный продукт должен соответствовать специ-

фикации и удовлетворять набору тестов. В силу этого расширения OpenGL раз-

ных производителей часто не совместимы друг с другом. Минусом DirectX яв-

ляется его ориентированность на платформы семейства Windows. По этой и ря-

ду других причин nVidia занялась разработкой единого стандарта программи-

рования и к выходу графического ускорителя G80 представила технологию

CUDA, которая присутствует с тех пор во всех последующих сериях графиче-

ских чипов, на основе которых сконструированы семейства графических уско-

рителей GeForce, Quadro и Tesla.

CUDA – это архитектура параллельных вычислений на GPU компании

nVidia, поддерживающих технологию GPGPU вычислений общего назначения

[110]. В настоящее время существует CUDA SDK [16], позволяющий програм-

мистам реализовывать на языках программирования Си, Си++, Fortran и других

алгоритмы, выполнимые на графических процессорах nVidia, и включать спе-

циальные функции в текст программы на Cи. Первоначальная версия CUDA

SDK была представлена 15 февраля 2007 года. CUDA дает разработчику воз-

можность по своему усмотрению организовывать доступ к набору инструкций

графического ускорителя и управлять его памятью, организуя на нем сложные

параллельные вычисления.

В основе CUDA API лежит язык Си [90]. Графический процессор органи-

зует аппаратную многопоточность, что позволяет задействовать все ресурсы

графического процессора.

Согласно выше приведенной классификации, вычислительную архитек-

туру CUDA можно отнести к классу SIMD, но компания nVidia использует тер-

Page 46: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

46

мин SIMT – Single Instruction / Multiple Thread. В отличие от SIMD систем, где

входной поток данных, состоящий из однородных элементов, обрабатывается

одной инструкцией, SIMT-системы делят входные данные на множество мел-

ких подзадач, каждая из которых обрабатывается своей нитью. Нити исполня-

ются параллельно на вычислительных модулях, в качестве которых использует-

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

Мультипроцессор – это многоядерный SIMD-процессор, позволяющий в

каждый определенный момент времени выполнять на всех ядрах только одну

инструкцию, при этом каждый потоковый процессор выполняет эту инструк-

цию над собственными данными. Для выполнения на GPU задача разделяется

программистом на множество потоков (thread), которые объединяются в блоки

(block), а блоки, в свою очередь, объединяются в сетку (grid). Процедура, вы-

полняемая каждым из потоков, называется ядром (kernel). Вычислительные ре-

сурсы между потоками распределяются драйвером CUDA. Логически устрой-

ство можно представить как набор мультипроцессоров плюс драйвер CUDA.

Схематично выполнение CUDA программы показано на рисунке 2.3.2.

Термином хост (host) обозначается часть программы, исполняемая на CPU, а

устройство (device) – это видеокарта или другое вычислительное устройство,

поддерживающее CUDA.

Для идентификации потоков и блоков используются индексы, с помощью

которых программист определяет, с какой именно частью данных работает

конкретный поток. Для удобства индексация может быть одно- двух- или трех-

мерной. Максимальные индексы, которые могут использоваться для блока по-

токов – (512, 512, 64), при этом количество потоков в блоке не должно превы-

шать 512. Максимальные размеры сетки составляют (65535, 65535, 1), т. е. фак-

тически сеть потоков двумерна.

Page 47: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

47

Рис. 2.3.2. Блочно-сеточная организация выполнения CUDA программы

Исполняемой единицей CUDA-программы является warp. Размер warp

составляет 32 потока. Связано это с тем, что задержка (latency) при выполнении

одной инструкции на мультипроцессоре составляет 4 такта. Только в отноше-

нии warp можно говорить о параллельном выполнении потоков, никаких дру-

гих допущений делать нельзя. Однако это не означает, что warp-ы исполняются

на мультипроцессоре последовательно. Выполнение warp-ов может быть па-

раллельным, например, в том случае, когда один warp ожидает данные из гло-

бальной памяти, другие warp-ы могут в это время выполняться.

Взаимодействие между потоками может осуществляться только внутри

блока. Обмен данными осуществляется посредством разделяемой (shared) па-

Page 48: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

48

мяти, общей для всех потоков в блоке. Синхронизацию выполнения потоков

можно осуществить путем вызова специальных функций синхронизации.

Еще один ключевой момент архитектуры CUDA – легкая масштабируе-

мость. Единожды написанный код будет запускаться на всех устройствах, под-

держивающих CUDA. Для разработки и отладки кода для запуска на GPU мож-

но использовать обычные видеокарты, которые по стоимости доступны каждо-

му. А когда продукт готов – запускать его уже на мощных Tesla или кластерах,

построенных на архитектуре GPU, стоимость которых на порядок ниже, чем

стоимость известных вычислительных систем.

2.4. Обзор методов и способов организации параллельных

вычислений

В общем случае задачу параллельных вычислений можно сформулиро-

вать как создание ресурса параллелизма (распараллеливания алгоритмов) в

процессах решения задач и управление реализацией этого параллелизма с це-

лью достижения наибольшей эффективности использования многопроцессор-

ной техники.

Вообще говоря, не каждый алгоритм подвержен распараллеливанию, так

же как и не на каждой вычислительной системе можно организовать парал-

лельные вычисления [10].

Достижение параллелизма возможно только при выполнении следующих

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

[29]:

1) независимость функционирования отдельных устройств ЭВМ – данное

требование относится в равной степени ко всем основным компонентам

вычислительной системы: к устройствам ввода-вывода, обрабатывающим

процессорам и устройствам памяти;

2) избыточность элементов вычислительной системы – организация избы-

точности может осуществляться в следующих основных формах: исполь-

Page 49: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

49

зование специализированных устройств, таких как отдельные процессоры

для целочисленной и вещественной арифметики, устройства многоуров-

невой памяти (регистры, кэш), дублирование устройств ЭВМ путем ис-

пользования нескольких однотипных обрабатывающих процессоров или

нескольких устройств оперативной памяти.

Условно способы распараллеливания можно разделить на следующие:

директивы оптимизирующего компилятора;

специальные директивы, расширяющие возможности языка к параллели-

зации;

параллельные языки программирования;

коммуникационные средства или средства межпроцессорного интерфей-

са.

Способность алгоритма к распараллеливанию потенциально связана с од-

ним из двух (или одновременно с обоими) внутренних свойств, которые харак-

теризуются как параллелизм задач (message passing) и параллелизм данных

(data parallel).

Если алгоритм основан на параллелизме задач, вычислительная задача

разбивается на несколько относительно самостоятельных подзадач, каждая из

которых загружается в отдельный процессор. Каждая подзадача реализуется

независимо, но использует общие данные и (или) обменивается результатами

своей работы с другими подзадачами. Для реализации такого алгоритма на

многопроцессорной системе необходимо выявлять независимые подзадачи, ко-

торые могут выполняться параллельно. Часто это оказывается далеко не оче-

видной и весьма трудной задачей.

При наличии в алгоритме свойства параллелизма данных одна операция

может выполняться сразу над всеми элементами массива данных. В этом случае

различные фрагменты массива могут обрабатываться независимо на разных

процессорах. Для алгоритмов этого типа распределение данных между процес-

сорами обычно осуществляется до выполнения задачи на ЭВМ.

Page 50: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

50

С точки зрения типа параллелизма можно предложить следующую клас-

сификацию алгоритмов.

1) Алгоритмы, использующие параллелизм данных (Data Parallelism). Этот

тип параллелизма характерен для численных алгоритмов обработки дан-

ных, имеющих дело с большими массивами, представляемыми, например,

в виде векторов и матриц.

2) Алгоритмы с распределением данных (Data Partitioning). Это разновид-

ность параллелизма данных, при которой пространство данных может

быть разделено на непересекающиеся области, с каждой из которых свя-

заны независимые процессы, оперирующие каждый со своими данными.

Требуется лишь редкий обмен между этими процессами.

3) Релаксационные алгоритмы (Relaxed Algorithm). Алгоритм может быть

представлен в виде независимых процессов без синхронизации связи ме-

жду ними, но процессоры должны иметь доступ к общим данным.

4) Алгоритмы с синхронизацией итераций (Synchronous Iteration). Многие из

стандартных численных итерационных параллельных алгоритмов требу-

ют синхронизации в конце каждой итерации, заключающейся в том, что

разрешение на начало следующей итерации дается после того, как все

процессоры завершили предыдущую итерацию.

5) Самовоспроизводящиеся задачи (Replicated Workers). Для задач этого

класса создается и поддерживается центральный пул (хранилище) похо-

жих вычислительных задач. Параллельно реализуемые процессы осуще-

ствляют выбор задач из пула, выполнение требуемых вычислений и до-

бавление новых задач к пулу. Вычисления заканчиваются, когда пул пуст.

Эта технология характерна для исследований графа или дерева.

6) Конвейерные вычисления (Pipelined Computation). Этот тип вычислений

характерен для процессов, которые могут быть представлены в виде не-

которой регулярной структуры, например, в виде кольца или двумерной

сети. Каждый процесс, находящийся в узле этой структуры, реализует

определенную фазу вычислений.

Page 51: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

51

Рассмотренные в работе методы Ш. Лемана решения задачи факториза-

ции целых чисел и ρ-метод Полларда решения задачи дискретного логарифми-

рования в конечном поле обладают выраженным свойством параллелизма дан-

ных. Параллельные вычисления над разными наборами данных можно органи-

зовать уже на первом этапе алгоритма Лемана и частично на этапах два и три

после соответствующей модификации алгоритма. Одни и те же операции могут

выполняться в параллельном режиме над несколькими элементами из различ-

ных наборов , ,i i ix и в алгоритме ρ-метода Полларда.

В рассматриваемых алгоритмах различные наборы значений могут обра-

батываться независимо на разных вычислительных системах класса SIMD и, в

частности, архитектуре CUDA. Технически процесс распараллеливания осуще-

ствляется директивами открытого оптимизирующего компилятора NVCC (для

Windows систем) и специальными директивами, расширяющими возможности

языка Си к параллелизации.

Не зависимо от метода (способа) распараллеливания (организации парал-

лельных вычислений) решаемых задач, принципиальным моментом является

анализ эффективности используемого параллелизма и его адаптация под кон-

кретную вычислительную систему.

Обычно получают асимптотические оценки числа операций в терминах

О-символики или оценивают получаемое ускорение процесса вычислений (со-

кращения времени решения задачи), или получают оценку максимально воз-

можного ускорения процесса решения задачи конкретного типа (оценка эффек-

тивности параллельного способа решения задачи) [1, 25].

Для практических задач обеспечения ИБ наиболее важны последние два

критерия, позволяющие сделать выводы относительно защищенности систем,

вскрытие которых базируется на решении математических задач.

Любой вычислительный алгоритм может быть реализован в виде про-

граммы на некотором языке программирования, ориентированной на опреде-

ленную аппаратную архитектуру, т. е. алгоритму соответствует программа,

аналогично и программе соответствует алгоритм, который она реализует [24].

Page 52: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

52

Пусть 1T - время решения некоторой вычислительной задачи с помощью

последовательной программы, выполняемой на одном процессоре (CPU). kT -

время решения с помощью параллельной программы, выполняемой на k про-

цессорах. Тогда получаемое ускорение параллельной реализации относительно

последовательной определяется как 1

k

Ta

T . Ускорение, удовлетворяющее нера-

венству a k , называют менее чем линейным, в случае a k говорят, что уско-

рение превосходит линейное. Эффективность использования параллельных вы-

числений определяется как 1

k

a TE

k kT .

При линейном ускорении эффективность равна 1, если E<1, то ускорение

менее чем линейное, если E>1, то ускорение более чем линейное.

Ускорение являются относительной величиной, зависящей от количества

процессоров, размерности задачи и используемого алгоритма.

Согласно закону Амдала [69] есть теоретический предел для роста уско-

рения при увеличении числа вычислителей, используемых для решения задачи.

С другой стороны, в силу очень больших размерностей практических задач ИБ,

ускорение при использовании параллельных вычислений должно повышаться

при увеличении размерности задач факторизации и дискретного логарифмиро-

вания. Это объясняется тем, что предельно возможное ускорение определяется

не только параметрами вычислительной системы, но и свойствами задачи, т. е.

ее потенциальным параллелизмом.

Выводы

В главе II представлен краткий аналитический обзор основных техноло-

гий организации параллельных вычислений. Приведена одна из самых распро-

страненных, общепринятых их классификаций. Обзор наиболее известных рос-

сийских и зарубежных параллельных вычислительных систем показал, что в

настоящее время задействование, использование (добавление) модулей на базе

Page 53: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

53

графических процессоров является одним из самых эффективных способов и

перспективных направлений повышения их интегральной производительности.

В главе рассмотрены различные варианты реализации технологии GPGPU

и особенности их применения для организации параллельных вычислений.

Обоснован выбор технологии компании nVidia CUDA, являющейся фаворитом

в данной области. Исследуемую в работе вычислительную архитектуру CUDA

в общепринятой классификации (Флина) можно отнести к разряду SIMD, одна-

ко в современной уточненной классификации ее следует отнести к новому

классу параллельных вычислений – SIMT (Single Instruction Multiple Thread). В

SIMT поток входных данных делится на множество мелких подзадач, каждая из

которых выполняется (обрабатывается) своей нитью. Нити исполняются парал-

лельно на вычислительных модулях, в качестве которых используется набор

потоковых мультипроцессоров. Таким образом, использование вычислитель-

ных ресурсов GPU с архитектурой CUDA наиболее целесообразно при реализа-

ции алгоритмов с возможностью распараллеливания по данным.

В завершающем разделе главы II изложены основные способы организа-

ции параллельных вычислений и свойства алгоритма, характеризующие воз-

можность его распараллеливания в вычислительных системах определенного

класса. Сформулированы основные требования к архитектурным принципам

таких систем. Рассмотрены наиболее важные для практических задач информа-

ционной безопасности критерии оценки эффективности программной реализа-

ции параллельного алгоритма.

Page 54: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

54

Глава 3. Алгоритмы решения задач факторизации

и дискретного логарифмирования

3.1. Основные методы и алгоритмы факторизации целых чисел.

Метод Ш. Лемана

Проанализируем известные алгоритмы факторизации с точки зрения тру-

доемкости (времени) выполнения и возможности распараллеливания по дан-

ным, т. е. на принадлежность классу SIMD. Алгоритмы факторизации на эллип-

тических кривых рассматривать не будем, так как скорость их работы сильно

зависит от выбора кривой, а также скорости реализации вычислительных опе-

раций в группе точек эллиптической кривой [15], что само по себе требует от-

дельного анализа и численного моделирования. Для сравнения «скорости» ра-

боты алгоритмов рассмотрим последовательные реализации методов Ваулина,

Ферма, Полларда-Штрассена и Ш. Лемана [20, 70], выполненные на языке С++

с использованием библиотек QT 4.5 [90]. Результаты работы алгоритмов пред-

ставлены в таблицах 3.3.1 – 3.3.3. Более глубокий анализ алгоритмов показыва-

ет, что скорость работы конкретного метода достаточно сильно зависит от

«структуры» сомножителей разлагаемого числа n [47].

Алгоритмы Ферма и Ваулина хорошо справляются с факторизацией, если

делители p и q близки по значению (таблица 3.3.1 и 3.3.2 соответственно). При

достаточно больших значениях величины p q время работы значительно уве-

личивается, следовательно, данные алгоритмы эффективно применимы для

факторизации относительно малых n.

Время работы алгоритма Полларда-Штрассена сильно зависит от значе-

ния наименьшего делителя числа n, и он эффективно раскладывает числа с ма-

лым множителем p.

Page 55: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

55

Таблица 3.3.1.

n=pq Кол-во бит |p-q| Время рабо-

ты, мс

223550209643 38 97898 9

35785968397 36 2107836 348

17549235333121 44 15722496 2028

90900009999091 47 99080910 21016

19120211505964799 55 439084798 57408

1104298368313163 50 2146969418 359919

Таблица 3.3.2.

n=pq Кол-во бит |p-q| Время рабо-

ты, мс

223550209643 38 97898 5

35785968397 36 2107836 35

17549235333121 44 15722496 351

90900009999091 47 99080910 2176

19120211505964799 55 439084798 9016

1104298368313163 50 2146969418 29355

Таблица 3.3.3.

n=pq Кол-во бит Время рабо-

ты, мс

1845477246391631=87178291199*21169 51 66

4152214831517171=87178291199*47629 52 167

29088518889496733=87178291199*333667 55 2602

716544426043549=2147483647*333667 50 1116

1104298368313163=2147483647*514229 50 1894

1952258056134877= 2147483647*909091 51 4010

157114325805337=16769023*9369319 48 27761

19120211505964799=479001599*39916801 55 397854

При последовательной реализации метод Ш. Лемана показал себя наибо-

лее универсальным и наиболее быстрым по времени выполнения по сравнению

Page 56: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

56

с другими алгоритмами. С точки зрения операций алгоритма метод Ш. Лемана

наиболее соответствует классу SIMD, а, следовательно, может быть более эф-

фективно адаптирован и отображен на GPU-архитектуру CUDA.

Изначально метод был описан в 1974 году в работе «Факторизация боль-

ших чисел» [123] и был первым детерминированным алгоритмом факторизации

целых чисел, имеющим оценку сложности меньше, чем корень от величины

раскладываемого на множители числа.

В методе Ш. Лемана применяются идеи, заложенные в алгоритме Ферма,

т. е. при поиске делителей числа n используется равенство 2 2 4x y bn

для некоторого b .

Метод, предложенный Ш. Леманом, основывается на следующей теоре-

ме.

Теорема 3.1.1 [70] Пусть n pq составное число, являющееся произведе-

нием двух нечетных взаимно простых чисел, удовлетворяющих неравенствам

233 n p q n . Тогда найдутся натуральные числа x, y и 1b такие, что:

1) выполнено равенство 2 2 4x y bn при 3b n ,

2) выполнено неравенство 6

0 4 14

nx bn

b

◄.

Рассматриваемый алгоритм детерминированно раскладывает число n на

множители за 13( )O n арифметических операций. На вход алгоритма подают

число 2 1,n k k , n>8. На выходе получают делитель числа n или, если де-

литель не найден, делается вывод о простоте n. Такое заключение позволяет

сделать следующая теорема.

Теорема 3.1.2 [19]. Если алгоритм метода Ш. Лемана не нашел разложе-

ние числа n на два множителя p и q, то n – простое число ◄.

Для успешной адаптации алгоритма метода Лемана к архитектуре CUDA

надо проанализировать его операции на предмет разделения на два класса: вы-

полняемые на CPU и выполняемые на GPU [52]. Выполнять алгоритм целиком

на GPU заведомо нецелесообразно, так как без использования CPU не осущест-

Page 57: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

57

вить ввод-вывод данных для обработки GPU, а некоторые операции ветвления

удобней выполнять на CPU. Алгоритм состоит из нескольких этапов, поэтому

анализ операций и их разбиение на классы будем проводить для каждого этапа.

Для организации параллельных вычислений определим параметры ис-

пользуемого GPU-устройства и количество параллельных нитей.

С точки зрения программной реализации первый этап численного алго-

ритма, по сути, представляет собой множество чисел, требующих однотипных

вычислений, которые не зависимы по входным данным. То есть операции пер-

вого этапа обладают параллелизмом по данным и могут обрабатываться парал-

лельно, что идеально подходит для вычислений на GPGPU с архитектурой

CUDA. Вычисления второго и третьего этапов линейного алгоритма следует

объединить и выполнять в параллельном режиме за несколько шагов. Операции

последнего этапа последовательного алгоритма (проверка двойного неравенст-

ва) целесообразно выполнять на CPU, так как таких проверок достаточно мало,

а проверка ветвлений на GPU выполняется достаточно медленно.

3.2. Параллельный алгоритм Ш. Лемана, адаптированный к

вычислениям на GPGPU с архитектурой CUDA.

Асимптотические оценки сложности

Шаг 1. Проверить делимость числа n на все числа из множества

33,...,i n

, все операции этого шага попадают во второй класс и выпол-

няются параллельно для всех чисел i . Обозначим число вычислительных ни-

тей через s. Возможны две ситуации: h s или h s , где

33,...,ih n

– количество чисел. Для уменьшения количества опера-

ций можно использовать базу простых чисел из интервала 3[3; )n . Случай h s

тривиален – время выполнения первого шага сократится в s-раз. Если h s , по-

требуется организация нескольких этапов, на каждом из которых будет прове-

Page 58: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

58

ряться делимость числа n на очередные s экземпляров i . Количество таких по-

вторений может быть равно 1h

ls

. По завершении очередных s проверок

необходимо делать вывод о переходе к следующему шагу алгоритма или за-

вершении его работы. Время реализации первого этапа будет равно времени

выполнения l операций деления. При последовательном выполнении алгоритма

число проверок равнялось количеству операций деления, то есть 3 n

.

Шаг 2.

2.1. Для всех пар чисел (k,d) 31,2,...,k n

, 6

40,1,..., 1n

kd прове-

рить выполнение условия

2(4 )d kn d c , c . (3.2.1)

Пусть 2h – это количество пар (k,d), тогда при параллельной обработке на

s параллельных нитях, если 2h s , то время сокращается в s раз. При 2h s

требуется 22 1

hl

s

раз проверить условия (3.2.1).

2.2. Вычислить величины 2A kn d

и 2( 4 )B A kn , соответст-

вующие парам чисел (k,d).

2.3. Для значений A и B, для которых выполнилось условие (3.2.1), прове-

рить условие 2 2(mod( ))A B n .

Шаг 3. Для значений A и B, прошедших проверку пункта 2.3., проверить

выполнение условия 1 ( , )A B n n , если оно выполнено, то делитель найден.

Схема параллельной реализации модифицированного алгоритма изобра-

жена на рисунке 3.2.1.

Для получения теоретических оценок сложности параллельного

алгоритма, выполняемого на гетерогенной вычислительной системе с

графическими процессорами, будем придерживаться следующей методики

«оценки операционной сложности параллельных алгоритмов, реализованных в

гетерогенных архитектурах с вычислителями CPU и GPGPU CUDA» [49]

Page 59: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

59

Методика 3.2.1.

П. 1. Полагаем время выполнения элементарных команд и арифметических

операций на центральном и графическом (GPGPU CUDA) процессорах оди-

наковым.

П. 2. Полагаем сложность операций присваивания, ввода и вывода порядка

О(const) О(1).

П. 3. Сложность операции передачи данных из оперативной памяти в память

GPU вычислителя считаем равной О(const) О(1). Обратная операция имеет

оценку такого же порядка.

П. 4. Оценка одной параллельной нити, как и последовательных фрагментов

алгоритма, производится согласно правилам анализа программ (алгоритмов)

[5].

П. 5. Если количество параллельных нитей достаточно, то выполняем пункт 6.

Иначе оценка данного параллельного фрагмента составит ( max( ))iO l T , где

1h

ls

, s – количество нити, h – размерность распараллеливаемой зада-

чи, iT - оценка i-ой нити.

П. 6. Число операций алгоритма, выполняемых параллельно на k-экземплярах

нитей GPU-вычислителя, оценим как операционную сложность одной нити с

максимальным временем выполнения, т. е. (max( ))iO T , где iT - оценка i-ой

нити.

При этом будем считать, что выполнены ряд условий и ограничений

(допущений).

Во-первых, количество доступных вычислительных элементов GPU

(нитей) не менее чем необходимо для данной размерности задачи. Это означает,

что на графическом процессоре можно задать такую конфигурацию

программного ядра, при которой значение l=1, т. е. s<h. Во-вторых, не будем

учитывать временные затраты на передачу данных из памяти CPU в память

GPU. Без потерь общности можно считать, что объем доступной

оперативной/регистровой памяти GPU позволяет разместить все исходные

Page 60: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

60

данные, результат и необходимые промежуточные значения. Будем считать

сложность операции обращения к памяти графического процессора за О(1).

Данный аспект является одним из преимуществ параллельных вычислений на

GPU перед распределенными параллельными вычислениями, например, в

GRID-системах, облачных и других параллельных кластерах, в которых

временные затраты на передачу сообщений по каналам связи между

вычислительными узлами достаточно высоки и существенно влияют на общее

время решения задачи. В-третьих, время выполнения k штук однотипных

операций на графическом процессоре или, в терминологии CUDA, время

вычисления k параллельных нитей равно max( )iT , где iT – время выполнения i-

ой нити [45].

Для получения асимптотических оценок параллельного алгоритма Ш.

Лемана, адаптированного к архитектуре CUDA, формализуем его операции.

Вход: натуральное число n pq , p,q – простые числа

Выход: делитель числа n.

Step1 /*выполняется на CPU */

ввод n;

n_3:=powf(n,1/3); /* powf(n,1/3) – операция извлечения корня 3 степени*/

Step2 /*выполняется на GPU для всех a=3,4…n_3*/

if n mod a =0 then

p:=a;

go to Step5;

endif

Step3 /*выполняется на CPU */

n_6:=sqrt(n_3);

Step4 /*выполняется на GPU для всех k=1,4…n_3*/

g:=(n_6/(4*sqrt(k))+1; /* (1) */

/*цикл по кол-ву g */

Page 61: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

61

do d:=0 to g /* (2) */

t:=4*k*n;

t1:=sqrt(t);

a:=t1+d;

tmp:=a*a-t;

tmp1:=sqrt(tmp);

if (tmp mod 1 =0) then /* (3) */

if (tmp*tmp-tmp1*tmp1) mod 0 then /* (4) */

if gcd(tmp+tmp1,n)<n then /* (5) */

p:= tmp+tmp1

go to Step5

endif

if gcd(tmp-tmp1,n)<n then /* (6) */

p:= tmp-tmp1

go to Step5

endif

endif

endif

enddo

Step5 /*выполняется на CPU */

вывод p

Элементарными операциями будем считать сложение, вычитание,

умножение, деление, определенные на множестве целых чисел, и извлечение

квадратного корня из положительного целого числа. Сложность оперций

сложения и вычитания, реализованных на графическом процессоре, можно

оценить как O(t), где lgt n . Сложность операции умножения составит

2 2( ) (lg )O t O n . Данные оценки имеют стандартные алгоритмы «столбиком»

при распараллеливании вычислений на GPU, при этом числа (операнды)

хранятся в массивах, элементами которых являются отдельные разряды, т. е.

Page 62: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

62

цифры. Реализация операций сложения и умножения на GPGPU CUDA с

учетом специфики вычислительных средств описана в последнем разделе

четвертой главы.

Утверждение 3.2.1. Параллельный алгоритм Ш. Лемана, адаптированный

к архитектуре CUDA, выполняемый на гетерогенной системе с достаточным

количеством GPU-вычислителей, имеет асимптотическую оценку 26 lgO n n ,

где lgt n , n – факторизуемое число◄.

Доказательство. Согласно правилам оценки операционной сложности

алгоритма [4, 5], операции присваивания, ввода и вывода имеют сложность

порядка О(1). Для реализации первого шага (Step1) требуется операция ввода

сложности порядка О(1) и операция извлечения кубического корня. Последняя

реализована с помощью рекуррентных вычислений. На каждой итерации

выполняются два присваивания, два деления и два умножения. Оценка

сложности одной итерации составит О(1+1+2t2+2t

2)=O(t

2). Для вычисления

кубического корня с требуемой точностью необходимо сделать m (можно

считать, что величина m не зависист от t) итераций, следовательно, сложность

вычисления кубического корня равна

2 2

1

(1 1 2 2 )m

i

O t t

= 2

1

m

i

O t

= 2 2( ) ( )O mt O t . Согласно правилу сумм,

итоговая оценка первого этапа будет О(max(1, t2))=O(t

2).

Оценка второго шага (Step2) будет равна числу операций, необходимых

для выполнения одной параллельной ветви (нити, в терминологии CUDA). В

общем случае, разные ветви могут иметь различное время выполнения, а т. к.

синхронизация выполняется после завершения работы всех нитей, то оценка

второго этапа будет max( )iT , где iT – время выполнения i-ой нити. Временные

затраты отдельной нити равны времени вычисления остатка от деления – О(t2) и

времени операций присваивания – О(1) и перехода – О(1). Таким образом,

оценка времени работы i-ой нити равна iT =О(max(t2,1,1)=O(t

2), соответственно,

итоговая оценка второго этапа O(max( )iT )=O(t2).

Page 63: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

63

Оценка третьего шага (Step3), состоящего из операции извлечения

квадратного корня, составит O(t2).

Четвертый шаг (Step4) аналогично шагу два можно оценить как

максимальное время выполнения одной параллельной ветви. Если iT – время

выполнения i-ой нити, то max( )iT – оценка четвертого шага. В свою очередь,

время iT складывается из времени операций (1) и цикла (2). Для выполнения (1)

надо выполнить деление, сложность O(t2), извлечение квадратного корня –

O(t2), сложение – O(t) и присваивание – O(1). Таким образом, согласно правилу

сумм, имеем оценку O(t2).

Общее время выполнения цикла (2) равно сумме временных затрат

каждой итерации. Как видно из приведенного алгоритма, одна итерация

состоит из последовательных команд, сложность которых оценивается как

O(t2), операций присваивания – O(1) и операций ветвления. Время работы

оператора if состоит из времени выполнения условно исполняемых операторов

и вычисления логического условия. Оценка оператора (4) равна времени

выполнения операторов (5), (6) и вычислению логического условия, т. е.

времени двух операций умножения – O(t2+t

2)=O(t

2), вычитания – O(t) и

нахождения остатка от деления – O(t2), т. е. O(t

2). Сложность оператора (5)

равна сложности сложения O(t), присваивания – O(1), перехода – O(1) и

сложности вычисления логического условия, т. е. сложности сложения O(t),

нахождения НОД, сложность последнего составит 2(log )O n , если НОД

находить с помощью бинарного алгоритма Евклида [77], и проверке самого

логического условия – O(1). Таким образом, сложность оператора (5) равна

O(t+1+1+t+ 2log n +1)= ( )O t . Аналогичную оценку имеет и оператор (6).

Следовательно, для оператора (4) имеем оценку O(t2+ 2log n +n)= 2( )O t . Тогда

одну итерацию цикла можно оценить как O(t2). Оценка выполнения цикла – это

произведение сложности одной итерации на количество повторений

6

4ng

, т. е. O(gt2)= 6 2

4lgnO n = 26 lgO n n . В результате оценка для

Page 64: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

64

одной параллельной нити четвертого шага будет равна

iT = 2 2 2 26 6lg lg lgO t n n O n n n = 26 lgO n n . Соответственно, итоговая

оценка данного шага равна O(max( )iT )= 26 lgO n n .

Оценка заключительного этапа (Step5) равна О(1).

Согласно правилам анализа времени работы алгоритмов, общая оценка

операционной сходимости данной реализации алгоритма в терминах

арифметических операций и извлечения корня составит 26 lgO n n ◄.

Оценки и результаты, опубликованные в работе [45], после научной дис-

куссии были скорректированы и доработаны.

Рис. 3.2.1. Схема параллельной реализации модифицированного алгоритма Ш. Лемана

Page 65: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

65

3.3. Основные методы и алгоритмы дискретного

логарифмирования. ρ-метод Полларда

Все методы дискетного логарифмирования можно разделить на две кате-

гории: общие алгоритмы, применяемые в любой конечной абелевой группе, и

специальные, разработанные для специальных групп.

В настоящее время не известен алгоритм, который решает задачу за по-

линомиальное время. Существующие методы являются субэкспоненциальны-

ми, либо экспоненциальными [67, 87]. Алгоритмы первой группы имеют слож-

ность (log log log )( )dc p pO e , где c=const, 0 1d . Алгоритм Адлемана впервые упо-

минается в 1979 году, сложность log log log

( )c p p

O e , где с – некоторая константа, на

практике не достаточно эффективен [106]. Алгоритм COS разработан матема-

тиками Копперсмитом, Одлыжко, Шреппелем в 1986 году, c=1, d=1/2 [18]. С

помощью данного алгоритма и его модификаций успешно решена задача дис-

кретного логарифмирования для 5810p и 8510p , при 9010p эффективней

решета числового поля. Последний предложен Гордоном в 1993 году, имеет

оценку (log log log )( )dc p pO e , где

323с , 1

2d [112]. Существует много модифика-

ций решета числового поля. Отдельные шаги метода, например, поиск гладких

экспонент, можно выполнять в параллельном режиме, но подготовительный

этап достаточно трудоемкий.

Ко второй группе относится алгоритм Шенкса (большой – малый шаг),

который был предложен в 1971 году [130], сложность ( )O r , где r – порядок

группы, при этом объем необходимой памяти оценивается как ( )O r . Данный

метод имеет возможность распараллеливания, но он более подходит для реше-

ния задачи в группе точек эллиптической кривой. Анализ параллельных алго-

ритмов дискретного логарифмирования в указанной группе можно найти в ра-

ботах Сидорова И. Д. [84, 85]. Алгоритм Сильвера-Полига-Хеллмана опублико-

ван в 1978 году, известен так же как метод Гельфонда, требуется знать разло-

Page 66: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

66

жение на простые множители 1

1 i

k

i

i

p q

, трудоемкость составляет

1

(log )k

i i

i

O p q

, эффективен, если множители числа p-1 достаточно малы

[71]. ρ-метод Полларда имеет эвристическую оценку 12( )O p [126].

Классический вариант ρ-метода Полларда решения задачи дискретного

логарифмирования в конечном поле обладает выраженным свойством паралле-

лизма данных, так как одни и те же операции могут выполняться сразу над не-

сколькими элементами из различных наборов , ,i i ix [87]. В этом случае

различные значения могут обрабатываться независимо на разных вычислитель-

ных устройствах, что соответствует классу SIMD. Таким образом, ρ-метод Пол-

ларда может быть эффективно адаптирован и отображен на архитектуру графи-

ческих процессоров nVidia CUDA. При этом не требуется дополнительных

временных затрат на пересылку данных по сети в отличие от параллельного ρ-

метода Полларда [87], который рассчитан на распределенные вычисления в се-

ти и подразумевает пересылку большого объема сообщений каждым из задей-

ствованных компьютером на общий сервер, который должен их хранить, что

делает метод неэффективным.

Впервые ρ-метод Полларда решения задачи дискретного логарифмирова-

ния в кольце вычетов по простому модулю p был описан в работе [126]. Алго-

ритм осуществляет случайный поиск дискретных логарифмов [18, 87, 117].

Строится псевдослучайная последовательность, в которой находятся совпа-

дающие элементы, а затем на основании полученной величины вычисляется

искомый дискретный логарифм. Используемая для рекурсивных вычислений

функция является циклической, начиная с некоторого индекса (номера) элемен-

та псевдослучайной последовательности. Этот метод имеет экспоненциальную

оценку сложности. Он требует небольшого объема памяти для хранения дан-

ных и допускает организацию параллельных вычислений на нескольких этапах,

поэтому он предпочтительней для адаптации к архитектуре CUDA.

Page 67: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

67

Пусть pF – кольцо вычетов по простому модулю p, , pa b F , a – обра-

зующий элемент мультипликативной группы поля pF , x . Требуется решить

задачу дискретного логарифмирования [31, 66, 71]

modxa b p (3.3.1)

Сначала необходимо найти такие числа u и v , что

modu va b p (3.3.2)

На этом шаге алгоритм строит последовательность 0 1 2, , ,x x x до тех пор,

пока не найдется пара , : 2 , i ji j j i x x . Последовательность определена

следующим образом:

0 1x

2

1

1, 0 ,

3

1 2, ,

3 3

2, .

3

i i

i i i

i i

bx если x p

x x если p x p

ax если p x p

(3.3.3)

Также ix можно найти по формуле

modi i

ix a b p

,

где 0 0 , 0 0 ,

1

1, 0 ,

3

1 22 , ,

3 3

21, ;

3

i i

i i i

i i

если x p

если p x p

если p x p

(3.3.4)

1

11, 0 ,

3

1 22 , ,

3 3

2, .

3

i i

i i i

i i

если x p

если p x p

если p x p

(3.3.5)

Page 68: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

68

По ходу выполнения алгоритма не требуется хранить все числа, чтобы

найти пару совпадающих элементов. Алгоритм должен проходить через наборы

, ,i i ix , 0,1,2,i , генерируя каждый последующий из предыдущего до тех

пор, пока не будет найдено 2: i ii x x . Тогда верно сравнение (3.3.2), где

2 mod 1i iu p (3.3.6)

2 mod 1i iv p (3.3.7)

Для нахождения необходимой пары 2,i ix x потребуется O p арифме-

тических операций.

Следующий шаг алгоритма – это вычисление значения x . Если

0 mod 1v p , то алгоритм не выдает результата. В этом случае можно изме-

нить начальные значения и и выполнить алгоритм заново. Предположим,

что это неверно, то есть 0 mod 1v p . Найдем наибольший общий делитель

, 1d v p , используя расширенный алгоритм Евклида [66, 98]. В результате

получим , 1 ( 1)d v p v p . Возводя обе части (3.3.2) в степень , по-

лучаем:

( 1) modd

u v d p d xa b b b a p (3.3.8)

Отсюда

mod 1xd u p (3.3.9)

Это означает, что

mod 1 1xd u p p (3.3.10)

Соответственно

1u p

xd

(3.3.11)

Значение 0,d . Если значение величины d мало, то можно выполнить эф-

фективный поиск. Если d велико, то может понадобиться значительное время

для поиска.

Как показано в работе [126], функция ( )if x , заданная соотношением

(3.3.3), по своим свойствам аналогична псевдослучайным функциям, исследо-

Page 69: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

69

ванным в работах [118, 128]. Таким образом, для вычисления пары совпадаю-

щих значений функции ( )if x требуется вычислить p

элементов последова-

тельности { }ix .

Заметим, что для большинства случаев величина d = 1 или d = 2 [126,

117]. В общем случае будем считать, что d=O(1).

В классическом варианте алгоритма ρ-метода Полларда [18, 87, 117] при

значении i k на шаге 2 необходимо будет вычислить 2k наборов, используя

соотношения (3.3.3)-(3.3.5), а для всех значений 1,i k на шаге 2 необходимо

вычислить 22 4 6 2k k k таких наборов.

В силу параллелизма данных фактические временные затраты алгоритма

можно значительно сократить при параллельной организации вычислений на

шаге 2 при вычислении наборов , ,j j jx по формулам (3.3.3)-(3.3.5).

При этом алгоритм обладает параллелизмом задач. Последовательную

генерацию наборов , ,j j jx и нахождения совпадающих элементов можно

разбить на подзадачи нахождения наборов и проверки совпадения элементов

для индекса i . Это будут самостоятельные подзадачи алгоритма, каждую из ко-

торых можно выполнить на отдельном вычислительном элементе, используя

распределенные параллельные вычисления в сети с большим числом компью-

теров, при этом также можно использовать вычислительные мощности GPGPU,

организуя локальные параллельные вычисления. Каждая подзадача реализуется

независимо, но использует общие исходные данные, и после выполнения ре-

зультаты передают в основную часть программы, которая выполняется после-

довательно.

Page 70: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

70

3.4. Параллельный алгоритм ρ-метода Полларда,

адаптированный к вычислениям на GPGPU с архитектурой

CUDA

Рассмотрим каждый шаг алгоритма на возможность применения парал-

лельных вычислений и последующего сокращения временных затрат. Наиболее

удобным для распараллеливания является второй шаг. Его можно разбить на

независимые подзадачи, которые возможно выполнить в параллельном режиме.

За одну такую подзадачу возьмем задачу генерации наборов , ,i i ix и

2 2 2, ,i i ix по формулам (3.3.3) – (3.3.5) для фиксированного значения индекса

i . Так как алгоритм не требует хранения и использования значений, вычислен-

ных на предыдущих этапах шага 2 алгоритма, то нет необходимости обмена

данными между различными подзадачами, что также положительно скажется

на сокращении времени работы.

Обозначим через s количество параллельно выполняющихся подзадач.

Это число зависит от конкретного графического ускорителя и определяется на

начальном этапе работы программы.

Модифицированный для параллельной реализации на архитектуре CUDA

алгоритм ρ-метода Полларда будет выглядеть следующим образом.

Входные данные:

,a b , p – простое число.

Выход: x , такое, что modxa b p , если он существует.

Шаг 1: (выполняется на CPU)

определение значения s, задание начального параметра 1i ;

Шаг 2: (выполняется для значений , 1, 2, ,i i i i s параллельно на GPU)

задание начальных параметров 0 0 , 0 0 , 0 1x ;

генерация последовательности наборов , ,j j jx по соотношениям (3.3.3)-

(3.3.5), где 1,2j i , по правилу:

Page 71: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

71

если 1

03

ix p , то 1i i ,

1 1i i , 1i ix bx ;

если 1 2

3 3ip x p , то

1 2i i , 1 2i i , 2

1i ix x ;

если 2

3ip x p , то

1 1i i , 1i i ,

1i ix ax ;

положить 2 mod 1i iu p , 2 mod 1i iv p ;

Шаг 3: (выполняется на CPU)

сравнить полученные в результате шага 2 значения ix и 2ix для значений

, 1, 2, ,i i i i s :

если 2i ix x , то перейти к шагу 4;

если 2i ix x , то перейти к шагу 1 и положить i i s ;

Шаг 4: (выполняется на CPU)

если 0v , то алгоритм завершает работу;

если 0v , то вычислить НОД , 1 ( 1)d v p v p ;

Шаг 5: (выполняется на CPU)

вычислить x :

если 1d , то mod 1x u p ;

если 1d , то 1u p

xd

, 1,d .

Схема параллельной реализации модифицированного алгоритма ρ-метода

Полларда показана на рисунке 3.4.1.

Page 72: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

72

Рис. 3.4.1. Схема параллельной реализации модифицированного алгоритма

ρ-метода Полларда

Количество вычисляемых наборов на каждом последующем этапе шага 2

алгоритма увеличивается. В параллельной реализации все наборы начнут вы-

числяться одновременно и шаг 2 алгоритма закончит вычисления, когда будет

вычислен последний набор, этот набор будет обладать наибольшим индексом.

Так как все наборы вычисляются одновременно, то время выполнения шага 2

алгоритма будет равно времени генерации набора с наибольшим индексом. То-

гда время параллельного вычисления k наборов с индексами 1,2, ,k можно

принять равным времени, затраченному на генерацию набора с индексом k .

Это время будет равно времени, затраченному на генерацию 2k штук наборов.

В последовательной реализации на этом этапе шага 2 алгоритма необходимо

будет вычислить 2k k штук наборов. Таким образом, при использовании па-

Page 73: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

73

раллельных вычислений время работы алгоритма на шаге 2 для вычисления

k наборов с индексами 1,2, ,k сократится минимум в k раз.

Для получения асимптотических оценок параллельного ρ-метода Поллар-

да, адаптированного к архитектуре CUDA, формализуем его операции.

Вход: натуральное число a

натуральное число b

простое число p

Выход: число x удовлетворяющее modxa b p .

Step1 /*выполняется на CPU */

ввод a, b, p;

Step2 /*выполняется на GPU*/

p_1 := p/3; /*в программе к значению p обращаемся по адресу*/

p_2 := 2*p_1;

alfa := 0; alfa_i := 0; alfa_2i := 0;

betta := 0; betta_i := 0; betta_2i := 0;

x := 1; x_i := 0; x_2i := 0;

/*вычисление последовательности наборов*/

do j := 1 to 2*t /*t – индекс параллельной нити*/ /* (1) */

if (x>0) and (x<=p1) then

betta := betta+1;

betta := betta mod (p-1) /* остаток от деления */

x := x*b mod p;

else

if (x>p1) and (x<=p2) then

alfa := alfa*2 mod p-1;

betta := betta*2 mod p-1;

x := x*x mod p

else

alfa := alfa+1 mod p-1;

x := x*a mod p;

Page 74: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

74

endif

endif

/* присвоение значений x_i и x_2i */

if j = t then

x_i := x;

alpha_i := alpha;

beta_i := beta;

endif

if j = t * 2 then

x_2i := x;

alpha_2i := alpha;

beta_2i := beta;

endif

enddo

if (x_i=x_2i) then /* (2) */

u[t] := (alfa_2i – alfa_i) mod p-1;

v[t] := (betta_i – betta_2i) mod p-1;

else

u[t] := 0;

v[t] := 0;

endif

Step3 /*выполняется на CPU*/

do k := 1 to num_th /*num_th – кол-во параллельных потоков GPU*/

if (u[k] <> 0) and (v[k] <> 0) then /* (3) */

d := gcd(v[k],p-1) /* расширенный алгоритм Евклида,

d = n_u v + (p-1)m_u*/

if d =1 then /* x – вычисляется однозначно */ /* (4) */

x := u * n_u mod p-1;

else /*вычисляется последовательность x */

do omega := 1 to d

Page 75: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

75

x := (u * n_u + omega * (p-1)) / d

enddo

Step4

вывод x

Элементарными операциями будем считать сложение, вычитание, умно-

жение и деление в конечном поле pF . Сложность операций сложения и вычита-

ния, реализованных на графическом процессоре, можно оценить как O(t), где

lgt p . Сложность операций умножения и деления составит 2 2( ) (lg )O t O p .

Утверждение 3.4.1. Параллельный алгоритм ρ-метода Полларда с псев-

дослучайной функцией заданной соотношением (3.3.3) и адаптированный к ар-

хитектуре CUDA, выполняемый на гетерогенной системе с достаточным коли-

чеством GPU-вычислителей, имеет асимптотическую оценку 2logO p p ◄.

Доказательство. Согласно правилам оценки операционной сложности ал-

горитма [5], операции присваивания, ввода и вывода имеют сложность порядка

О(1). Для реализации первого шага (Step1) требуется три операции ввода

О(1+1+1)= О(1).

Оценка второго шага (Step2) будет равна числу операций, необходимых

для выполнения одной параллельной ветви (нити, в терминологии CUDA).

Инициализация данных требует 11 операций присваивания, общая сложность

которых O(1), одно умножение и деление, общая сложность O(1+ t2+ t

2)=O(t

2).

Общее время выполнения цикла (1) равно сумме временных затрат каждой ите-

рации. Количество шагов цикла необходимое для вычисления совпадающих

значений x, можно оценить как p

, т.е. как количество вычислений функции

(3.3.3) до совпадения ее значений. Как видно из приведенного алгоритма, одна

итерация состоит из последовательных команд, сложность которых равна оцен-

ке оператора if. Для выполнения последнего требуется вычислить два логиче-

ских условия и выполнить два условных оператора. Каждое логическое условие

состоит из конъюнкции и двух неравенств, следовательно, имеет оценку

O(1+1+1)=O(1). Сложность ветвления оценивается как самая трудоемкая ветвь,

Page 76: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

76

для выполнения которой надо три присваивания – O(1+1+1)=O(1), три умно-

жения – O(t2+ t

2+ t

2)=O(t

2) и три операции деления с остатком – O(t

2+ t

2+

t2)=O(t

2). Таким образом, сложность оператора if на втором шаге равна

O(1+1+1+ t2+ t

2)=O(t

2). Следовательно, оценка операций для реализации цикла

будет равна 2O p t . Выполнение оператора (2) заключается в вычислении

логического условия – O(1). Самая трудоемкая ветвь содержит два присваива-

ния – O(1+1)=O(1), две операции вычитания и вычисления двух остатков от

деления – O(1+1+t2+t

2)=O(t

2). Сложность следующих двух операторов if, вы-

числяющих значения x_i и x_2i, составит O(1+1+1+1)=O(1). Сложность всего

шага 2 – это максимальная оценка последовательных операторов, т. е.

2O p t .

Третий шаг алгоритма – цикл с p

итерациями, каждая из которых за-

ключается в последовательном выполнении операторов (3) и (4). Для выполне-

ния оператора (3) надо выполнить конъюнкцию – O(1), два условия –

O(1+1)=O(1) и расширенный алгоритм Евклида, асимптотическая оценка

сложности которого совпадает с оценкой НОД – O( 2log ( 1)p ). В итоге оценка

оператора (3) составит O(1+1+ 2log ( 1)p )=O( 2log p ). Оператор (4) содержит

одно условие – O(1) и две ветки команд. Для вычисления x в ветке «да», требу-

ется одно присваивание – O(1), одно умножение – O(t2) и одна операция вычис-

ления остатка – O(t2). Оценка ветки «нет» равна 2 2 2 2

1

1 ( )d

i

O t t t O dt

,

где d=O(1). Следовательно, 2 2 2 2

1

1 ( )d

i

O t t t O t

. Итоговая оценка шага

3 составит 2 2( log )O pt O p p .

На последнем шаге Step4 выполняется вывод – O(1).

Page 77: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

77

Согласно правилам анализа времени работы алгоритмов, общая оценка

операционной сходимости данной реализации алгоритма в терминах арифмети-

ческих операций составит 2 2( log )O pt O p p ◄.

Выводы

В главе приводится описание метода Ш. Лемана и ρ-метода Полларда

решения задач факторизации целых чисел и дискретного логарифмирования в

конечном поле, корректность и сходимость алгоритмов, а также обосновывает-

ся их выбор для решения рассматриваемых математических задач и адаптации

к параллельным вычислениям в архитектуре CUDA. Для получения теоретиче-

ских оценок сложности исследуемых алгоритмов разработана методика оценки

операционной сложности параллельных алгоритмов, реализованных в гетеро-

генных архитектурах с вычислителями CPU и GPGPU CUDA.

Предложенная методика позволяет:

определить возможность практической применимости параллельного ал-

горитма;

оценить требуемые вычислительные мощности (количество параллель-

ных графических процессоров) для решения конкретной задачи;

провести сравнительный анализ сложности различных параллельных ал-

горитмов, адаптированных к гетерогенным архитектурам на базе GPU-

ускорителей.

С использованием данной методики получены теоретические оценки

сложности параллельных алгоритмов, реализующих метод Ш. Лемана и ρ-

метод Полларда на гетерогенной системе с архитектурой CUDA при достаточ-

ном количестве GPU вычислителей, когда ресурс аппаратной части позволяет

сгенерировать необходимое для заданной размерности задачи количество па-

раллельных нитей.

Page 78: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

78

Глава 4. Компьютерное моделирование метода Лемана и ρ-

метода Полларда

4.1. Экспериментальная апробация параллельного алгоритма

Ш. Лемана

Для экспериментальной апробации параллельного метода Ш. Лемана ре-

шения задачи факторизации целых чисел он был программно реализован в

классическом варианте для последовательного исполнения на CPU на стан-

дартном языке Си и исполнялся на центральных процессорах различных мощ-

ностей [90]. Модифицированный к параллельным вычислениям метод Лемана

программно реализован на расширении языка Си для CUDA и исполнялся на

различных графических ускорителях компании nVidia [16, 82, 109, 125, 128].

Конфигурация сетки (GRID) для каждого GPU определялась экспериментально.

Основной целью вычислительного эксперимента была оценка фактиче-

ских временных затрат и эффективности алгоритмов при использовании парал-

лельных вычислений на GPGPU относительно последовательных на CPU.

Вспомогательной целью была оценка динамики изменения фактического вре-

мени решения задач при увеличении мощности графических вычислителей с

архитектурой CUDA.

Для проведения вычислительных экспериментов были задействованы

следующие технологические платформы CPU:

Intel Core i5

AMD Phenom (tm)-II

и GPU компании nVidia

GeForce GT 520M (48 ядер)

GeForce GT 240 (96 ядер)

GeForce GTX 560 (366 ядер)

Page 79: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

79

Численное моделирование проводилось на гетерогенных вычислительных

машинах под управлением операционной системы Windows 7. Технические ха-

рактеристики и спецификации используемых устройств приведены в приложе-

нии 5.

В таблице 4.1.1 приведены значения времени работы программы при по-

следовательной программной реализации на CPU, размерностью задачи будем

считать количество бит в двоичной записи факторизуемого числа n N .

Таблица 4.1.1

n=p*q Бит P q

время работы,

мл. с

Core i5,

2,3 ГГц

Phenom-II,

2,8 ГГц

14398018279 34 109849 131071 16,00 15,00

35785968397 36 2124679 16843 15,00 16,00

119155466461 37 131071 909091 31,00 16,00

223550209643 38 524287 426389 16,00 16,00

387626402399 39 426389 909091 15,00 15,00

4384820673049 42 109849 39916801 47,00 47,00

17549235333121 44 16769023 1046527 15,00 15,00

20526376661429 45 514229 39916801 46,00 31,00

62783218582529 46 131071 479001599 78,00 46,00

204241012796011 48 426389 479001599 94,00 47,00

716544426043549 50 2147483647 333667 100,00 63,00

Как видно из таблицы, при незначительном увеличении входных данных

с 34 до 48 бит время выполнения на процессоре Core i5 увеличилось почти в

шесть раз (5,875). Для процессора Phenom-II при тех же размерностях входных

данных прирост времени составил более чем в три раза (3,133).

Зависимость времени работы последовательной программы от размерно-

сти (количества бит) факторизуемого числа n представлена на графике (см. рис.

4.1.1).

Page 80: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

80

10,00

20,00

30,00

40,00

50,00

60,00

70,00

80,00

90,00

100,00

34 36 38 40 42 44 46 48 50

k, бит

t, м

л.с

Intel Core i5

AMD Phenom - II

Рис. 4.1.1. Зависимость времени работы программы для CPU от размерности числа n

В таблице 4.1.2 приведены значения времени работы программы при па-

раллельной реализации на GPU nVidia GeForce GT 520M, nVidia GeForce GT

240 и nVidia GeForce GTX 560 (на входных данных таблицы 4.1.1).

Таблица 4.1.2

n=p*q бит P q время работы, мл. с

GeForce

GT 520M

GeForce

GT 240

GeForce

GTX 560

14398018279 34 109849 131071 1,57 1,77 0,88

35785968397 36 2124679 16843 3,54 1,90 0,93

119155466461 37 131071 909091 2,10 2,03 1,15

223550209643 38 524287 426389 2,24 1,86 1,04

387626402399 39 426389 909091 2,44 2,76 1,29

4384820673049 42 109849 39916801 3,30 3,06 1,46

17549235333121 44 16769023 1046527 4,47 4,40 2,04

20526376661429 45 514229 39916801 4,64 4,86 1,88

62783218582529 46 131071 479001599 7,40 - -

204241012796011 48 426389 479001599 10,87 - -

716544426043549 50 2147483647 333667 16,27 - -

Проведенные эксперименты показали, что при росте размерности вход-

ных данных почти в полтора раза (с 34 до 48 бит) время решения задачи с ис-

пользованием GPU растет незначительно.

Зависимость времени работы параллельной программы от количества бит

факторизуемого числа n представлена на графиках (см. рис. 4.1.2 и рис. 4.1.3).

Page 81: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

81

0,00

2,00

4,00

6,00

8,00

10,00

12,00

14,00

16,00

18,00

34 36 38 40 42 44 46 48 50

k, битt,

мл

Рис. 4.1.2. Зависимость времени работы программы от размерности факторизуемого числа n

на nVidia GeForce GT 520M

0,00

1,00

2,00

3,00

4,00

5,00

6,00

34 36 38 40 42 44k, бит

t, м

л.с

GeForce GT 240

GeForce GTX 560

Рис. 4.1.3. Зависимость времени работы программы от размерности факторизуемого числа n

на nVidia GeForce GT 240 и nVidia GeForce GTX 560

Результаты проведенных экспериментов свидетельствуют, что использо-

вание параллельных вычислений на GPU с архитектурой CUDA позволяет сни-

зить фактические временные затраты до двух порядков.

4.2. Экспериментальная апробация параллельного алгоритма

ρ-метода Полларда

Для проведения вычисленных экспериментов ρ-метод Полларда решения

задачи дискретного логарифмирования в конечном поле был программно реа-

лизован в классическом варианте для последовательного исполнения на CPU на

Page 82: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

82

стандартном языке Си и выполнялся на центральных процессорах различных

мощностей [90]. Модифицированный к параллельным вычислениям ρ-метод

Полларда программно реализован на расширении языка Си для CUDA и вы-

полнялся на различных графических ускорителях компании nVidia. Конфигу-

рация сетки (GRID) для каждого GPU определялась экспериментально [16, 82,

109, 125, 128].

Основной задачей числового эксперимента была оценка снижения вре-

менных затрат и эффективности при параллельной реализации относительно

последовательной. Второй задачей была оценка темпов снижения фактических

временных затрат при увеличении мощности графических вычислителей с ар-

хитектурой CUDA.

Для проведения численных экспериментов были задействованы следую-

щие технологические платформы CPU:

Intel Core 2 Duo E7500

Intel Сore i5-2400

и GPU компании nVidia

GeForce GTX 560 (336 ядер)

GeForce 9600 (64 ядра)

Моделирование проводилось на гетерогенных вычислительных машинах под

управлением операционной системы Windows 7. Технические характеристики и

спецификации используемых устройств приведены в приложении 3.

В таблице 4.2.1 приведены значения времени работы программы при по-

следовательной программной реализации на центральных процессорах для раз-

личной размерности (количества бит) модуля p.

Зависимость времени работы последовательной программы от размерно-

сти модуля p представлена на графике (см. рис. 4.2.1). Как видно, с увеличени-

ем числа p время работы программы увеличивается на всех задействованных

центральных процессорах. При значениях числа p от 3 до 11 бит время работы

остается практически неизменным. Это связано с небольшим объемом вычис-

Page 83: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

83

лений в силу малой размерности задачи. Затем при значениях p от 12 бит до 30

бит количество требуемых операций существенно возрастает, и время работы

существенно увеличивается.

Таблица 4.2.1

модуль p p, бит время работы, с

Intel Core 2 Duo E7500 Intel Сore i5-2400

7 3 0,028000 0,016000

13 4 0,028000 0,014000

41 5 0,030000 0,016000

61 6 0,031000 0,016000

113 7 0,029000 0,015000

197 8 0,031000 0,016000

379 9 0,032000 0,015000

659 10 0,035000 0,016000

1153 11 0,031000 0,016000

2551 12 0,046000 0,019000

6961 13 0,047000 0,031000

11719 14 0,031000 0,031000

23159 15 0,047000 0,047000

61001 16 0,141000 0,078000

67651 17 0,156000 0,109000

921637 20 1,453000 0,936000

6878407 23 11,047000 7,110000

88004533 27 84,343000 50,716000

926403853 30 109,265000 56,320000

0,000

20,000

40,000

60,000

80,000

100,000

120,000

0 5 10 15 20 25 30 35

вр

ем

я р

аб

оты

, с

число p, бит

Intel Core 2 Duo

Intel Core i5

Рис. 4.2.1. Зависимость времени работы программы для CPU от значения модуля p

Page 84: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

84

В таблице 4.2.2 приведены значения времени работы программы при па-

раллельной программной реализации на GPU nVidia GeForce GTX 560 и nVidia

GeForce 9600.

Таблица 4.2.2

модуль p p, бит время работы, с

GeForce 9600 GeForce GTX 560

7 3 0,032000 0,041000

13 4 0,031000 0,040000

41 5 0,032000 0,047000

61 6 0,032000 0,042000

113 7 0,031000 0,042000

197 8 0,030000 0,041000

379 9 0,033000 0,038000

659 10 0,032000 0,045000

1153 11 0,032000 0,039000

2551 12 0,032000 0,042000

6961 13 0,034000 0,040000

11719 14 0,033000 0,043000

23159 15 0,034000 0,041000

61001 16 0,033000 0,045000

67651 17 0,032000 0,047000

921637 20 0,066000 0,047000

6878407 23 0,132000 0,094000

88004533 27 0,288000 0,203000

926403853 30 0,349000 0,282000

Зависимость времени работы параллельной программы от размерности

модуля p представлена на графике (см. рис. 4.2.2).

Сравнительная оценка скорости работы программных реализаций на цен-

тральных и графических процессорах представлена на рис. 4.2.3 и рис. 4.2.4 для

p<17 бит и p>17 бит соответственно.

Page 85: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

85

0,000

0,050

0,100

0,150

0,200

0,250

0,300

0,350

0,400

0 5 10 15 20 25 30 35

вр

ем

я р

аб

оты

, с

число p, бит

GeForce 9600

GeForce GTX 560

Рис. 4.2.2. Зависимость времени работы программы для GPU от значения числа p

0,000

0,020

0,040

0,060

0,080

0,100

0,120

0,140

0,160

0,180

0 2 4 6 8 10 12 14 16 18

вр

ем

я р

аб

оты

, с

число p, бит

Intel Core 2 Duo

Intel Core i5

GeForce GTX 560

GeForce 9600

Рис. 4.2.3. Зависимость времени работы программ на CPU и GPU от значения числа p

0,000

10,000

20,000

30,000

40,000

50,000

60,000

70,000

80,000

90,000

100,000

110,000

0 5 10 15 20 25 30 35

вр

ем

я р

аб

оты

, с

число p, бит

Intel Core 2 Duo

Intel Core i5

GeForce GTX 560

GeForce 9600

Рис.4.2.4. Зависимость времени работы программ на CPU и GPU от значения числа p

Page 86: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

86

Результаты проведенных экспериментов свидетельствуют, что использо-

вание параллельных вычислений на GPU с архитектурой CUDA позволяет сни-

зить фактические временные затраты до трех порядков.

4.3. Оценки эффективности использования параллельных вы-

числений в архитектуре CUDA

Наиболее важными вопросами при организации параллельных вычисле-

ний являются исследование зависимости ускорения от суммарной вычисли-

тельной сложности и оценка получаемого ускорения [24]. Данные показатели

отражают целесообразность использования параллельных вычислений. Без по-

терь общности можно считать, что последовательная программа, даже на мно-

гоядерных CPU, выполняется на одном ядре, т. к. не используются специальные

средства распараллеливания вычислений между ядрами.

Для систем с несколькими, как правило, однотипными по техническим

параметрам вычислителями значение ускорения параллельной реализации от-

носительно последовательной обычно определяют следующим образом:

1

k

Ta

T ,

где 1T - время выполнения алгоритма на одном процессоре, kT - время выпол-

нения параллельной программы, выполняемой на k вычислителях.

В силу особенностей использования параллельных вычислений в архи-

тектуре CUDA для оценки ускорения целесообразнее рассматривать отношение

времени работы параллельного алгоритма к вычислительной мощности (произ-

водительности) конкретной модели (образца) GPU устройства.

Числовые значения ускорения при использовании параллельных вычис-

лений в архитектуре CUDA при решении задачи факторизации методом Ш. Ле-

мана относительно последовательной реализации на Intel Сore i5 и AMD

Phenomtm

-II представлены в таблицах 4.3.1 и 4.3.2 соответственно.

Page 87: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

87

Таблица 4.3.1

Кол-

во

бит

Образец вычислительного устройства, производительность (гигафлопс)

Intel Сore i5

GeForce GT 520M

(142,08)

GeForce GT 240

(385,9)

GeForce GTX

560 (1088,6 ядер)

Время, мс время,

мс

ускоре-

ние

вре-

мя, мс

ускоре-

ние

вре-

мя, мс

ускоре-

ние

34 16,00 1,57 10,19 1,77 9,04 0,88 18,18

36 15,00 3,54 4,24 1,9 7,89 0,93 16,13

37 31,00 2,1 14,76 2,03 15,27 1,15 26,96

38 16,00 2,24 7,14 1,86 8,60 1,04 15,38

39 15,00 2,44 6,15 2,76 5,43 1,29 11,63

42 47,00 3,3 14,24 3,06 15,36 1,46 32,19

44 15,00 4,47 3,36 4,4 3,41 2,04 7,35

45 46,00 4,64 9,91 4,86 9,47 1,88 24,47

Из приведенных данных видно, что ускорение для каждого графического

процессора практически не зависит от размерности решаемой задачи.

Динамика достигнутого ускорения при использовании параллельных вы-

числений отражена на рис. 4.3.1.

Таблица 4.3.2

Кол-

во

бит

Образец вычислительного устройства, производительность (гигафлопс)

AMD Phenom™

- II

GeForce GT 520M

(142,08)

GeForce GT 240

(385,9)

GeForce GTX

560 (1088,6 ядер)

время, мс время,

мс

ускоре-

ние

вре-

мя, мс

ускоре-

ние

вре-

мя, мс

ускоре-

ние

34 15,00 1,57 9,55 1,77 8,47 0,88 17,05

36 16,00 3,54 4,52 1,9 8,42 0,93 17,20

37 16,00 2,1 7,62 2,03 7,88 1,15 13,91

38 16,00 2,24 7,14 1,86 8,60 1,04 15,38

39 15,00 2,44 6,15 2,76 5,43 1,29 11,63

42 47,00 3,3 14,24 3,06 15,36 1,46 32,19

44 15,00 4,47 3,36 4,4 3,41 2,04 7,35

45 31,00 4,64 6,68 4,86 6,38 1,88 16,49

Page 88: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

88

0

5

10

15

20

25

30

35

142,08 385,9 1088,6

Ус

ко

ре

ни

е

ГФлопс

34 бит

36 бит

37 бит

38 бит

39 бит

42 бит

44 бит

45 бит

Рис.4.3.1. Зависимость ускорения процесса решения задачи методом Ш. Лемана от

производительности GPU для различных значений размерности факторизуемого числа

Определим интегральную эффективность параллельных вычислений как

отношение ускорения к количеству вычислительных ядер (CUDA cores)

aE

k ,

где k – количество ядер GPU устройства.

Зависимость эффективности параллельных вычислений от мощности

GPU-устройств представлена на рис. 4.3.2.

0

0,05

0,1

0,15

0,2

0,25

0,3

0,35

142,08 385,9 1088,6

Эф

фе

кти

вн

ость

ГФлопс

34 бит

36 бит

37 бит

38 бит

39 бит

42 бит

44 бит

45 бит

Рис.4.3.2. Зависимость эффективности параллельных вычислений от мощности GPU-

устройств

Page 89: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

89

Как видно из представленного графика, эффективность вычислений

практически не зависит от размерности задачи, при росте производительности

параллельных вычислителей интегральная эффективность снижается незначи-

тельно.

Числовые значения ускорения при использовании параллельных вычис-

лений в архитектуре CUDA при решении задачи дискретного логарифмирова-

ния ρ-методом Полларда относительно последовательной реализации на Intel

Core 2 Duo и Intel core i5 представлены в таблицах 4.3.3 и 4.3.4 соответственно.

Динамика достигнутого ускорения при использовании параллельных вы-

числений при решении задачи дискретного логарифмирования отражена на ри-

сунке 4.3.3.

Таблица 4.3.3

Кол-во

бит

Образец вычислительного устройства, производительность (гига-

флопс)

Intel Сore 2 Duo GeForce 9600 GeForce GTX 560 (1088,6)

время, с время, с ускорение время, с ускорение

3 0,03 0,032 0,88 0,041 0,68

4 0,03 0,031 0,90 0,04 0,70

5 0,03 0,032 0,94 0,047 0,64

6 0,03 0,032 0,97 0,042 0,74

7 0,03 0,031 0,94 0,042 0,69

8 0,03 0,03 1,03 0,041 0,76

9 0,03 0,033 0,97 0,038 0,84

10 0,04 0,032 1,09 0,045 0,78

11 0,031 0,032 0,97 0,039 0,79

12 0,046 0,032 1,44 0,042 1,10

13 0,047 0,034 1,38 0,04 1,18

14 0,031 0,033 0,94 0,043 0,72

15 0,047 0,034 1,38 0,041 1,15

16 0,141 0,033 4,27 0,045 3,13

17 0,156 0,032 4,88 0,047 3,32

20 1,453 0,066 22,02 0,047 30,91

23 11,047 0,132 83,69 0,094 117,52

27 84,343 0,288 292,86 0,203 415,48

30 109,265 0,349 313,08 0,282 387,46

Page 90: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

90

Не менее важны при организации эффективных вычислений показатели

стоимости и энергопотребления используемых устройств для заданной произ-

водительности. Рост вычислительной мощности при малых материальных за-

тратах влечет расширение круга потенциальных нарушителей ИБ вследствие

снижения относительной стоимости средств, необходимых для преодоления

защиты. С этой точки зрения использование высокопроизводительных прило-

жений на основе CUDA может представлять весьма интересные решения.

0,00

50,00

100,00

150,00

200,00

250,00

300,00

350,00

400,00

396 1088,6

Уско

ре

ни

е

ГФлопс

15 бит

16 бит

17 бит

30 бит

27 бит

20 бит

23 бит

Рис. 4.3.3 Зависимость ускорения процесса решения задачи дискретного логарифмирования

ρ-методом Полларда от производительности GPU для различных значений размерности мо-

дуля p

В таблице 4.3.5 приведены основные данные для вычислительных уст-

ройств CPU и GPGPU CUDA [88]. В качестве стоимости устройств взята сред-

няя цена август месяц 2013 года [102,103,104,105], основные характеристики

центральных процессоров брались с сайта производителя [74,75,118,120].

Рисунок 4.3.5 показывает стоимость одного гигафлопса, что сходится с

оценками (для вычислителей компании nVidia), приведенными в работе [14].

Динамика роста мощности в зависимости от стоимости графических про-

цессоров показана на рисунке 4.3.6.

Page 91: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

91

Таблица 4.3.4

Кол-во

бит

Образец вычислительного устройства, производительность (гига-

флопс)

Intel Сore i5 GeForce 9600 ()

GeForce GTX 560 (1088,6

ядер)

время, с время, с ускорение время, с ускорение

3 0,02 0,032 0,50 0,041 0,39

4 0,01 0,031 0,45 0,04 0,35

5 0,02 0,032 0,50 0,047 0,34

6 0,02 0,032 0,50 0,042 0,38

7 0,02 0,031 0,48 0,042 0,36

8 0,02 0,03 0,53 0,041 0,39

9 0,02 0,033 0,45 0,038 0,39

10 0,02 0,032 0,50 0,045 0,36

11 0,016 0,032 0,50 0,039 0,41

12 0,019 0,032 0,59 0,042 0,45

13 0,031 0,034 0,91 0,04 0,78

14 0,031 0,033 0,94 0,043 0,72

15 0,047 0,034 1,38 0,041 1,15

16 0,078 0,033 2,36 0,045 1,73

17 0,109 0,032 3,41 0,047 2,32

20 0,936 0,066 14,18 0,047 19,91

23 7,11 0,132 53,86 0,094 75,64

27 50,716 0,288 176,10 0,203 249,83

30 56,32 0,349 161,38 0,282 199,72

0,00

20,00

40,00

60,00

80,00

100,00

120,00

140,00

Intel Core 2 Duo E7500

Intel Сore i5-2400

GT 240 GTX 560 Tesla K20 Tesla K20X

руб

.

Рис. 4.3.5. Стоимость одного ГФлопса

Page 92: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

92

Таблица 4.3.5

модель

стои-

мость,

руб.

Произво-

дитель-

ность,

Гфлопс

удел.

про-

изво-

ди-

тель-

ность

энерго по-

требление,

Вт

удел.

энерго

потреб-

ление

Эко-

ном.

Эффек

тив-

ность

Стои-

мость

1-го

Гфлоп

с, руб.

Intel

Core 2

Duo

3196 23,46 0,43 55 128,92 0,0073 136,21

Intel

Сore i5 6050 99,20 1,04 95 90,98 0,0164 60,99

GT 240 1700 385,90 5,59 69 12,34 0,2270 4,41

GTX 560 6800 1088,60 9,38 150 12,36 0,1601 6,25

Tesla

K20 125000 3520,00 15,64 225 14,38 0,0282 35,51

Tesla

K20X 160000 3950,00 17,56 225 12,82 0,0247 40,51

Параметром, который наглядно показывает как производительность уст-

ройства соотносится с его мощностью, является удельная производительность.

Энергоэффективность определяется как отношение производительности (мощ-

ности) устройства к его энергопотреблению. Стоит отметить и очень высокую

удельную производительность вычислителей с архитектурой CUDA (рис. 4.3.7)

при малом удельном энергопотреблении. Высокое же удельное энергопотреб-

ление свойственно как раз центральным процессорам (см. рис. 4.3.8).

0,00

500,00

1000,00

1500,00

2000,00

2500,00

3000,00

3500,00

4000,00

3196 6050 1700 6800 125000 160000руб.

Гф

ло

пс

Рис. 4.3.6. Зависимость производительности GPU устройств от их стоимости

Page 93: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

93

0,00

2,00

4,00

6,00

8,00

10,00

12,00

14,00

16,00

18,00

Уд

. п

ро

изв

од

ите

ль

но

сть

Intel

Core 2

Duo

E7500

Intel

Сore i5-

2400

GT 240 GTX

560

Tesla

K20

Tesla

K20X

Рис. 4.3.7. Удельная производительность центральных и графических процессоров

0,00

20,00

40,00

60,00

80,00

100,00

120,00

140,00

Уд

. эн

ер

гоп

отр

еб

ле

ни

е

Intel

Core 2

Duo

E7500

Intel

Сore i5-

2400

GT 240 GTX

560

Tesla

K20

Tesla

K20X

Рис. 4.3.8. Удельное энергопотребление центральных и графических процессоров

Один из главных показателей, используемых при сравнении различных

вычислительных устройств, является экономическая эффективность, т. е. отно-

шение вычислительной мощности к стоимости оборудования. Рис. 4.3.9 отра-

жает тот факт, что экономическая эффективность наиболее высока не у специа-

лизированных решений компании nVidia, а у мало бюджетных графических

карт производителя.

Анализ приведенных данных показывает, что для повышения вычисли-

тельной мощности выгоднее использовать графические процессоры компании

nVidia, т. к. при низкой стоимости они являются наиболее эффективными с

точки зрения удельной производительности и удельного энергопотребления.

Page 94: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

94

Значения производительности и энергопотребления при практически одинако-

вых материальных затратах на вычислители приведены в таблицах 4.3.6 – 4.3.7.

0

0,05

0,1

0,15

0,2

0,25

Эк.

эф

фе

кти

вн

ос

ть

Intel Core

2 Duo

E7500

Intel Сore

i5-2400

GT 240 GTX 560 Tesla K20 Tesla

K20X

Рис. 4.3.9. Экономическая эффективность

Таблица 4.3.6

Образец вычис-

лительного уст-

ройства

Кол-во,

шт.

Суммарная

стоимость,

руб.

Энергопотребление,

Вт

Общая производи-

тельность, Гфлопс

Core i5 2 6050 95 99,2

nVidia GeForse

GTX 560

1 6800 150 1088,6

Как видно из приведенных таблиц, энергопотребление существенно не

различается, а производительность графических процессоров в 11 и 46 раз

больше, чем центральных. На практике задействование двух и более процессо-

ров требует организации распределенных вычислений с соответствующими

значительными временными затратами на передачу данных по телекоммуника-

ционным каналам.

Таблица 4.3.7

Образец вычислитель-

ного устройства

Кол-во,

шт.

Суммарная

стоимость,

руб.

Энергопо-

требление, Вт

Общая произ-

водитель-

ность, Гфлопс

Core 2 Duo 2 6400 110 23,46

nVidia GeForse GTX 560 1 6800 150 1088,6

Page 95: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

95

Таким образом, основываясь на проведенном исследовании и сравни-

тельном анализе вычислительных систем с процессорами разных типов и архи-

тектур, можно предложить общую методику «практической апробации вычис-

лительных систем в отношении рисков реализации угроз ИБ при их использо-

вании».

Методика 4.3.1.

1. Исследовать программно-аппаратные особенности архитектуры апроби-

руемой вычислительной системы.

2. Исходя из особенностей организации вычислений, проанализировать из-

вестные алгоритмы решения вполне определенной задачи на предмет

адаптации к используемой архитектуре.

3. Выбрать алгоритм и адаптировать его к рассматриваемой гетерогенной

системе.

4. Выполнить теоретическую оценку операционной сложности разработан-

ного (адаптированного) алгоритма, на основании которой сформулиро-

вать гипотезу об эффективности возможной реализации.

5. Программно реализовать адаптированный алгоритм.

6. Провести компьютерное моделирование решения задачи.

7. Оценить эффективность использования вычислений на гетерогенной сис-

теме с выбранной архитектурой в предложенном алгоритме и реализую-

щей его программе.

8. Проанализировать удельные показатели производительности (вычисли-

тельной мощности), энергопотребления используемых вычислителей и их

экономической эффективности.

9. По результатам п.п. 1–8 сформулировать рекомендации и требования к

системам защиты в интересах повышения уровня защищенности компо-

нентов, опирающихся на сложность решения исследуемых задач.

Page 96: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

96

4.4. Реализация арифметических операций с «длинными» числа-

ми на устройствах GPGPU с архитектурой CUDA

В ряде прикладных задачах ИБ требуется выполнять вычислительные

операции над «длинными» целыми числами, т. е. которые нельзя хранить в пе-

ременных стандартных типов данных языков программирования. Для хранения

таких чисел можно использовать различные способы, например, хранить число

в виде строки, считая отдельный символ строки соответствующим разрядом

числа. Наиболее часто для хранения чисел используют массивы, при этом, как

правило, в одну ячейку записывается сразу несколько разрядов числа и даль-

нейшие операции реализуются над массивом поэлементно. Такое представле-

ние требует дополнительных действий для получения результата вычислитель-

ных операций.

С учетом особенностей архитектуры CUDA одним из наиболее удобных

способов представления «длинных» чисел является использование массивов

[16, 44]. При этом в одну ячейку массива будем записывать только один разряд

числа. Данное представление может быть более неудобным при вводе числа,

но, как правило, операции ввода-вывода разовые и не оказывают существенно-

го влияния на время работы алгоритма. С учетом выше сказанного для хране-

ния десятичного числа из n разрядов необходим массив из t элементов по во-

семь бит каждый, т.е. для хранения такого числа требуется 8t бит памяти. Для

реализации арифметических операций на графическом устройстве с архитекту-

рой CUDA необходимо в его памяти поместить два числа, т. е. 2t байт. В на-

стоящее время в прикладных задачах защиты информации используют числа от

768 до 2048 бит, т. е. от 233 до 620 десятичных разрядов. Для хранения числа

записанного в двоичной системе с помощью 1024 бит требуется массив из 310

элементов, т. е. 310 байт памяти, для хранения числа из 2048 бит достаточно

использовать массив из 620 байт. Самые простые из современных видеокарт

имеют объем памяти 512 Мбайт и выше, соответственно, на них без проблем

Page 97: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

97

могут быть реализованы операции с большими числами, представленными в

таком виде.

Будем считать, что два числа, над которыми требуется выполнить опера-

цию сложения, представлены в виде загруженных в память GPU массивов из

t+1 элементов, t=1 2max( , )t t , где

1t и 2t – количество разрядов первого и второго

числа соответственно. Пусть первое число записано в массив a, второе в массив

b. Младший разряд хранится в нулевой ячейке массива, старший в t-1 ячейке.

Последние элементы массивов проинициализированы нулями, они предназна-

чены для записи единицы в случае увеличения разрядности чисел в результате

сложения. Проинициализируем флаг переноса f нулевым значением. Восполь-

зуемся известным алгоритмом сложения «в столбик», т. е. поэлементно сложим

массивы, что можно выполнить в параллельном режиме сразу для всех t эле-

ментов. Результат операции будем записывать в массив a. Остается только

учесть переносы из разряда в разряд. Будем записывать в i-ю ячейку массива b

и переменную f единицу, если a[i]+b[i]10, в противном случае запишем ноль

в соответствующую ячейку массива b. Для вычисления окончательного резуль-

тата достаточно выполнить еще одну операцию поэлементного сложения мас-

сивов a и b, перед которой флаг переноса обнуляем. Если значение f=0, то ал-

горитм закончил работу, иначе выполняем его с первого шага. Формально вы-

шеописанный алгоритм можно записать следующим образом.

Вход: два массива a и b из t+1 элементов каждый

Выход: массив a

Step1 /*выполняется в параллельном режиме на GPU для всех

i=0,1,2,3,4…t-2*/

f:=0

a[i]:=a[i]+b[i];

if a[i]>=10 then

a[i]:=a[i]-10

b[i]:=1

endif

Page 98: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

98

Step2 /*выполняется в параллельном режиме на GPU для всех

i=1,2,3,4…t-1*/

a[i]:=a[i]+b[i-1]

if a[i]>=10 then

a[i]:=a[i]-10

b[i]:=1

f:=1

else

b[i]:=0

endif

if f=1 then

f:=0

go to Step1 /*повторно выполнить только первый шаг */

endif

Step3 /*выполняется на CPU */

if b[n-1]=1 then

a[n]:=1

endif

Алгоритм, приведенный в работе [48], после научной дискуссии был

скорректирован и доработан.

Утверждение 4.4.1. Сложность операции сложения «длинных» чисел,

реализуемая в гетерогенных вычислительных системах на базе графических

процессоров с архитектурой CUDA с достаточным количеством GPU-

вычислителей, равна О(t), где t – максимальное количество разрядов склады-

ваемых чисел ◄.

Доказательство. Оценка общего времени работы алгоритма складывается

из оценок времени работы трех его шагов [5]. Третий шаг состоит из одного ус-

ловия и единственной операции присваивания, выполняемых на CPU. Операция

присваивания имеет оценку сложности О(1), как и операция проверки условия,

следовательно, данный шаг можно оценить как О(1). Для получения асимпто-

Page 99: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

99

тических оценок первых двух шагов, выполняемых параллельно на GPU, необ-

ходимо оценить время выполнения одной параллельной ветви (нити, в терми-

нологии CUDA). В общем случае разные ветви могут иметь различное время

выполнения. Т. к. синхронизация параллельных вычислений на устройствах

CUDA выполняется после завершения работы всех нитей, то общая оценка бу-

дет равна max( )iT , где iT – время выполнения i-ой нити. Для реализации одной

параллельной нити первого шага требуется выполнить одну операцию сложе-

ния, вычитания, присваивания и проверку логического условия. Сложность по-

следнего, как и операции присваивания, равна О(1). Сложность сложения в об-

щем случае имеет оценку О(1). Таким образом, для первого шага алгоритма

число арифметических операций можно оценить О(1+1+1+1)=О(1). Аналогич-

но оценка второго шага составит О(1+1)=О(1). Максимальное число повторе-

ний алгоритма с учетом всех возможных переносов равно t. Тогда оценка слож-

ности операции сложения «длинных» чисел, реализуемая на GPU с архитекту-

рой CUDA, равна О(t) ◄.

Операцию умножения двух чисел а и b можно реализовать через b после-

довательных сложений числа a с самим собой. Как было показано выше, слож-

ность операции сложения составляет О(t), в этом случае сложность операции

умножения равна О(bt)=O(b lga )= 10tO t . Данную оценку можно улучшить,

используя параллельный вариант алгоритма умножения в «столбик». Будем

считать, что множители имеют одинаковое количество разрядов – t. Для реали-

зации потребуется t операций умножения t-разрядного числа на одноразрядное

(каждую из которых можно выполнять параллельно) и сложение полученных

результатов. Умножение числа на цифру можно выполнить как сложение числа

a с самим собой, при этом может потребоваться максимум девять сложений.

Таким образом, операция умножения на цифру имеет сложность O(9t)=O(t).

Для сложения результатов умножений может потребоваться t операций сложе-

ния t-разрядных чисел, следовательно, итоговая сложность составит O(t2).

Аналогичным способом можно реализовать операцию вычитания, заме-

нив в алгоритме сложение элементов массива на их разность и заменив логиче-

Page 100: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

100

ское условие, что не приводит к изменению асимптотических оценок. В свою

очередь операция деления так же может быть реализована через последова-

тельные операции вычитания.

Таким образом, показана возможность параллельной реализации арифме-

тических операций с «длинными» числами на графических процессорах. При

этом:

‒ операционная сложность алгоритма не превосходит сложности вы-

числений с многочленами на центральном процессоре;

‒ при достаточном количестве GPU-вычислителей увеличение размер-

ности чисел не оказывает существенного влияния на общее время

решения задачи (работы алгоритма).

Очевидно, описанные алгоритмы не являются самыми эффективными и

можно использовать другие подходы к реализации арифметических операций в

гетерогенных системах, например, один из предложенных Панюковым А. В. и

Лесовым С. Ю. [78] или рассмотренный в работах Качко Е. Г. [55], которые мо-

гут быть адаптированы к архитектуре CUDA.

Для проведения экспериментальной апробации описанный параллельный

алгоритм, реализующий операцию сложения чисел, был программно реализо-

ван на расширении языка Си для CUDA.

Таблица 4.4.1 Количество разрядов слагаемых a и

b

Время выполнения алгоритма, мл. с

бит десятичных GeForce GT 520M

GeForce GT240

768 232 0,31 0,40

796 240 0,30 0,41

1000 302 0,30 0,40

1500 452 0,31 0,40

2048 617 0,32 0,39

4096 1234 0,40 0,26

Значения времени работы параллельного алгоритма представлены в таб-

лице 4.4.1. Моделирование проводилось на технологической платформе с гра-

Page 101: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

101

фическими процессорами GeForce GT 520М GeForce GT 240 под управлением

операционной системы Windows 7. Для каждого входного значения данных вы-

числительный эксперимент повторялся несколько раз, после чего определялось

среднее время выполнения алгоритма.

Как видно из таблицы, при увеличении размерности задачи более чем в

пять раз, время работы алгортма увеличивается незначительно.

Выводы

В главе 4 представлены результаты моделирования решения задач факто-

ризации целых чисел методом Ш. Лемана и дискретного логарифмирования в

конечном поле ρ-методом Полларда, реализованных последовательными и па-

раллельными алгоритмами. Для каждой программной реализации исследуемых

методов получены данные фактических временных затрат на решение выше-

описанных задач в различных условиях постановки и на разных технологиче-

ских платформах.

Полученные в главе сравнительные оценки времени работы параллельной

и последовательной реализаций алгоритмов, реализующих метод Ш. Лемана и

ρ-метод Полларда показывают, что организация эффективных параллельных

вычислений в архитектуре CUDA позволяет снизить фактические временные

затраты на решение вышеупомянутых задач при использовании маломощных

GPU с достаточно малым количеством ядер от двух до трех порядков. Большего

сокращения временных затрат следует ожидать при использовании более про-

изводительных GPGPU компании nVidia или специализированных решений,

таких как Tesla или Quadro. Более того полученные оценки с учетом динамики

распространения индивидуальных вычислительных устройств при задействова-

нии всего 1% от общего числа доступных удаленных «облачных» гаджетов к

2016 году позволяют прогнозировать общее снижение практической операци-

онной стойкости систем защиты (с учетом задействования гетерогенных вы-

числителей) от 1016

до 1019

раз на консорциум [11].

Page 102: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

102

Динамика ускорения решения задач факторизации целых чисел и дис-

кретного логарифмирования в конечном поле модифицированными алгоритма-

ми практически не зависит от размерности входных данных.

Благодаря относительно малой стоимости, низкому энергопотреблению и

высокой производительности, графические процессоры nVidia являются эффек-

тивным и доступным широкому кругу пользователей (в том числе и потенци-

альным нарушителям ИБ) средством повышения вычислительной мощности ге-

терогенных систем, которые могут быть задействованы для преодоления защи-

ты АС. Это также подтверждает и анализ их удельных показателей, таких как

относительная стоимость одного гигафлопса, удельная энергоэффективность и

удельная экономическая эффективность для GPU с архитектурой CUDA.

По параметрам производительности и энергопотребления (при одинако-

вых материальных затратах на оборудование для систем с графическими и цен-

тральными процессорами) графические процессоры с архитектурой CUDA бо-

лее чем в 10 раз превышают вычислительные способности центральных про-

цессоров. Что, в свою очередь, предопределяет целесообразность использова-

ния графических процессоров компании nVidia для повышения индивидуаль-

ной вычислительной мощности.

Page 103: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

103

Заключение

В настоящее время существенный прирост совокупной производительно-

сти вычислительных систем в отношении моногенных кластерных вычислений

на CPU может дать организация параллельных вычислений в гетерогенных

предметно-ориентированных компонентах систем, в частности, на графических

ускорителях. По оценкам аналитической компании Jon Peddie Research (JPR)

[116], специализирующейся на анализе рынка компьютерных графических ре-

шений, объем продаж графических адаптеров только за первый и второй квар-

талы 2011 года составил 19 млн. и 16,1 млн. соответственно. Использование

GPU в подавляющем большинстве вычислительных платформ с графическим

интерфейсом позволяет без всякой натяжки отнести их к классу массовых вы-

числительных устройств гетерогенного типа [11]. Существенную часть (до

60%) рынка общедоступных графических карт занимает компания nVidia, вы-

числители которой реализованы по технологии GPGPU, основанной на вычис-

лительной архитектуре CUDA [16]. С учетом общего количества вычислитель-

ных средств полученные в работе результаты снижения фактических временных

затрат на два – три порядка при использовании распределенных, в том числе, и

«заоблочных» вычислений в ближайшем будущем можно прогнозировать до 108

управляемых «облаком» вычислителей с производительностью более 1 ГГц (до

108 регистровых операций на отдельном терминале). Соответственно, общее

снижение практической операционной стойкости систем защиты составит (с

учетом задействования гетерогенных вычислителей) от 1016

до 1019

раз на кон-

сорциум [11].

В диссертационной работе, в соответствии с поставленной целью иссле-

дований, разработаны методики оценки операционной сложности параллельных

алгоритмов, реализованных в гетерогенных архитектурах с вычислителями CPU

и GPGPU CUDA, и практической апробации новых вычислительных систем в

отношении роста рисков реализации угроз информационной безопасности при

Page 104: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

104

их использовании, приведены обоснованные оценки эффективности использо-

вания параллельных вычислений в гетерогенных системах с архитектурой

CUDA. Цель работы полностью достигнута.

Полученный в ходе проведенных исследований ряд новых теоретических

и практических результатов позволяет сформулировать следующие выводы

диссертационной работы.

1. Использование параллельных вычислений на базе технических решений

CUDA обеспечивает существенное снижение временных затрат на преодоле-

ние систем защиты. Архитектура CUDA относится к классу SIMT – Single In-

struction / Multiple Thread, который можно считать подклассом SIMD (Single

Instruction stream / Multiple Data stream) общепринятой классификации. Соот-

ветственно, наиболее целесообразно использовать данную архитектуру для

реализации методов и алгоритмов с массовым параллелизмом данных.

2. Массовое распространение, низкая стоимость и удельное энергопотреб-

ление в сочетании с высокой удельной производительностью графических

процессоров с поддержкой CUDA делает их одним из самых доступных

средств для увеличения технических (вычислительных) возможностей по-

тенциального нарушителя информационной безопасности автоматизиро-

ванных систем.

3. Обоснованную и достоверную оценку вычислительной стойкости систем

защиты можно получить лишь совместно, используя аппарат теории слож-

ности дискретных алгоритмов и аппарат компьютерного моделирования вы-

числительных процессов, реализующих методы (алгоритмы), эквивалентные

по сложности вскрытию систем защиты автоматизированных систем. Оцен-

ку стойкости средств защиты необходимо проводить для каждого нового

класса вычислительных устройств, новых архитектур и моделей вычисле-

ний.

4. Результаты компьютерного моделирования решения задач факторизации

и дискретного логарифмирования на модифицированных параллельных ал-

горитмах показали следующее:

Page 105: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

105

‒ организация эффективных параллельных вычислений в архитектуре

CUDA позволяет существенно снизить фактические временные затраты

на решение указанных задач;

‒ с учетом удельных показателей графических плат nVidia, при соответст-

вующей адаптации алгоритмов к архитектуре CUDA на GPGPU можно

эффективно решать и иные задачи аналогичного характера (высокой

степени параллелизма). Одной из таких задач является задача анализа

сетевых пакетов и классификации их содержимого по категориям, на-

значению и уровню доступа.

5. Полученные оценки свидетельствуют, что c учетом общего количества вы-

числительных средств при использовании локальных предметно-

ориентированных компонентов вычислительных систем, в частности, специа-

лизированных решений nVidia (Quadro и Tesla), и «заоблочных» вычислений в

скором времени можно ожидать существенного возрастания уровня угроз для

коммерческих АС и угроз кибербезопасности в отношении систем защиты ин-

формации, что позволяет сформулировать общие рекомендации следующего

плана:

‒ в интересах преодоления существующих систем защиты возможно и це-

лесообразно задействовать ресурсы GPU в гетерогенных GRID-системах;

‒ в интересах повышения уровня защищенности систем информационной

безопасности необходимо учитывать возрастающие угрозы со стороны

массового задействования гетерогенных вычислителей на базе GPU, что, в

свою очередь, требует организации непрерывного мониторинга за рын-

ком перспективных GPU и соответствующей теоретико-

экспериментальной апробации новых образцов вычислителей по предло-

женным методикам.

Компьтерное моделирование решения задач диссертационного исследо-

вания на GPGPU и анализ удельных показателей графических плат nVidia пока-

зали, что при соответствующей адаптации алгоритмов к архитектуре CUDA на

Page 106: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

106

GPGPU можно эффективно решать и иные задачи аналогичного характера (вы-

сокой степени параллелизма). К таким задачам, в частности, относится задача

общей классификации текстов, эффективность использования распределенных

параллельных вычислений в которых показана в вышеупомянутых работах

Пескишевой Т.А. и Котельникова Е.В. Используемый в механизмах защиты

корпоративных систем от утечек информации аппарат синтаксического анализа

сетевых пакетов и классификации их содержимого по категориям, назначению

и уровню доступа (финансовая, производственная, технологическая, коммерче-

ская, маркетинговая, для свободного распространения, для ограниченного дос-

тупа, для служебного использования, секретная, совершенно секретная и так

далее) являются частным случаем аппарата классификации текстов.

Таким образом, для реализации систем DPI и DLP с механизмами семан-

тического анализа, целесообразно задействовать аппарат параллельных вычис-

лений на графических платах с архитектурой CUDA с использованием соответ-

ствующих адаптированных алгоритмов. Использование вычислительных мощ-

ностей видеопроцессоров позволит существенно снизить затраты на оборудо-

вание, что сделает более доступными механизмы защиты от утечек информа-

ции, и повысить надежность функционирования систем защиты информации в

случаях резкого увеличения объема анализируемых данных и отказах основно-

го оборудования.

В дальнейшем результаты работы могут быть использованы как для

оценки эффективности использования распределенных параллельных вычисле-

ний в GRID-системах с вычислительными узлами на базе графических процес-

соров с архитектурой CUDA, так и для оценки использования распределенных

вычислений на высокопроизводительных мобильных устройствах на базе GPU

nVidia Tegra. В последующем целесообразно сосредоточить усилия на задачах:

– оптимального распределения вычислений между узлами GRID-системы

и оптимальной конфигурации ядра графического процессора каждого из узлов

такой системы;

Page 107: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

107

– определения возможности несанкционированного задействования GPU

ресурсов, в том числе, мобильных устройств для организации, так называемых,

«заоблачных» вычислений;

– оценки практической защищенности информационных систем при ис-

пользовании распределенных параллельных вычислений в GRID-системах, в

том числе и мобильных, на базе графических процессоров;

– оценки эффективности параллельных вычислений с «длинными» чис-

лами с использованием GPU CUDA в группе точек эллиптической кривой и

распараллеливания более эффективных алгоритмов, реализующих базовые

арифметические операции над «длинными» числами.

Page 108: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

108

Список сокращений

CPU – Central Processing Unit

CUDA – Compute Unified Device Architecture

DLP – Data Loss Prevention

DPI – Deep Packet Inspection

GPGPU – General-purpose graphics processing units

GPU – graphics processing unit

MIMD – Multiple Instruction stream / Multiple Data stream, множественный поток

команд и множественный поток данных

MISD – Multiple Instruction stream / Single Data stream, множественный поток

инструкций и одиночный поток данных

RISC – restricted (reduced) instruction set computer

SIMD – Single Instruction stream / Multiple Data stream, одиночный поток команд

и множественный поток данных

SIMT – Single Instruction / Multiple Thread, одиночный поток команд на множе-

ство нитей

SISD – Single Instruction stream / Single Data stream, одиночный поток команд и

одиночный поток данных

АС – автоматизированная система

ВЦКП – вычислительный центр коллективного пользования

ЗИ – защита информации

ИБ - информационная безопасность

ИТ – информационные технологии

Page 109: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

109

Список литературы

1. Абрамов С.А. Лекции о сложности алгоритмов. – М.: МЦНМО, 2009.

2. Айерлэнд К., Роузен М. Классическое введение в современную теорию чи-

сел – М.: Мир, 1987.

3. Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы крип-

тографии: Учебное пособие. – 2-е изд., испр. и доп. – М.: ГЕЛИОС АРВ,

2002.

4. Ахо А., Хопрофт Дж., Ульман Дж. Построение и анализ вычислительных

алгоритмов. – М.: Мир, 1979.

5. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы.: Пер.

с англ. : Уч. пос. – М.: Издательский дом «Вильямс», 2000.

6. Бабенко Л.К., Ищукова Е.А., Сидоров И.Д. Применение параллельных вы-

числений при решении задач защиты информации. Программные системы:

теория и приложения. – 4:3 (2013). – с. 25-42.

7. Бабенко Л.К., Ищукова Е.А., Сидоров И.Д. Параллельные алгоритмы фак-

торизации для анализа асимметричных криптосистем // Материалы меж-

дународной конференции «Моделирование устойчивого регионального

развития». – Нальчик: Издательство КБНЦ РАН, 2011. – с. 78-84.

8. Бабенко Л.К., Сидоров И.Д. Параллельные алгоритмы криптоанализа

асимметричных систем // Актуальные аспекты защиты информации в Юж-

ном федеральном университете. Монография. – Таганрог: Изд-во ТТИ

ЮФУ, 2011. – с. 207-252.

9. Баранович А.Е. Введение в предметно-ориентированные анализ, синтез и

оптимизацию элементов архитектур потоковых систем обработки данных

[Электрон. ресурс] = Introduction in the object-oriented analysis, synthesis and

optimization of elements of architecture data flow processing systems. – 3-е

изд., стереотип., испр., электрон. дан. – [М., НТЦ «Информрегистр», 2010].

Page 110: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

110

10. Баранович А.Е., Желтов С.А. Организация параллельных вычислений в за-

дачах факторизации на базе архитектуры CUDA // Тр. III Mеждунар. кон-

гресса по интеллект. системам и информ. технол. // ХI Междунар. научн.-

техн. конф. «Интеллектуальные системы» (AIS'11). – М.: Физматлит, 2011.

– Т. 1. – с. 481-485.

11. Баранович А.Е., Желтов С.А. Гетерогенные архитектуры массовых вычис-

лений и новые угрозы кибербезопасности // Системы высокой доступно-

сти. – 2012. – № 2. – т.8. – с. 16-22.

12. Баранович А.Е. Семантические аспекты информационной безопасности:

криптосемантика // Вестник РГГУ №14/12, серия «Информатика. Защита

информации. Математика». Научный журнал. М.: РГГУ, 2012. – с. 92-114.

13. Баричев С.Г., Серов Р.Е. Основы современной криптографии: Учебное по-

собие. – М.: Горячая линия – Телеком, 2002.

14. Бибиков С.А., Никоноров А.В., Фурсов В.А., Якимов П.Ю. Исследование

эффективности технологии CUDA в задаче распределенной предпечатной

подготовки цифровых изображений. Труды Всероссийской суперкомпью-

терной конференции «Научный сервис в сети Интернет: масштабируе-

мость, параллельность, эффективность», 21 – 26 сентября 2009 г., г. Ново-

российск. – М.: Изд-во МГУ, 2009. – с. 204-207.

15. Болотов А.А., Гашков С.Б., Фролов А.Б., Часовских Ф.Ф. Алгоритмиче-

ские основы эллиптической криптографии. – М.: МЭИ, 2000.

16. Боресков А.В., Харламов А.А. Основы работы с технологией CUDA. – М.:

ДМК Пресс, 2010.

17. Ван дер Варден Б.Л., Алгебра. Определения, теоремы, формулы. 3-е изд.,

стер. – СПб.: Издательство «Лань», 2004.

18. Варфоломеев А.А. Основы информационной безопасности: Учеб. пособие.

– М.: РУДН, 2008.

19. Василенко О.Н. Теоретико-числовые алгоритмы в криптографии. – М.:

МЦНМО, 2003.

Page 111: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

111

20. Ваулин А.Е. Новый метод факторизации больших чисел в задачах анализа

и синтеза двухключевых криптографических алгоритмов // Научно-

технический журнал «Информация и Космос». – 2005. – № 4. – с. 108-112.

21. Винберг Э.Б. Курс алгебры. М.: Факториал Пресс, 2002.

22. Виноградов И.М. Основы теории чисел. – М.: Гостехиздат, 1952.

23. Воеводин В.В. Вычислительная математика и структура алгоритмов. – М.:

Изд-во МГУ, 2006.

24. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ,

2002.

25. Выхованец В.С. Методика определения эффективности параллельных вы-

числений // Труды 5-й Международной конференции «Параллельные вы-

числения и задачи управления». – 2010. – с. 1057-1064.

26. Выхованец В.С. Параллельные вычисления во времени // Автоматика и те-

лемеханика. – 1999. – № 12. – с. 155-165.

27. Галочкин А.И., Нестеренко Ю.В., Шидловский А.Б. Введение в теорию

чисел. М.: Изд-во Моск. Ун-та, 1984.

28. Гергель В.П., Фурсов В.А. Лекции по параллельным вычислениям. – Сама-

ра: СГАУ, 2009.

29. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для много-

процессорных вычислительных систем. Учебное пособие. Издание 2-е, до-

полненное. – Нижний Новгород: издательство Нижегородского универси-

тета, 2003.

30. Гергель В.П. Теория и практика параллельных вычислений. [Электронный

ресурс]. – Электрон. дан. – [2011]. – Режим доступа свобод.:

http://www.intuit.ru/department/calculate/paralltp/.

31. Глухов М.М., Круглов И.А., Пичкур А.Б., Черемушкин А.В. Введение в

теоретико-числовые методы криптографии. Учебник для ВУЗов. Лань,

2011.

32. Глушков В.М. и др. Функциональная структура и элементы сетей ЭВМ.

УСиМ, 1975. – № 3. – с. 1-15.

Page 112: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

112

33. Глушков В.М., Никитин А.И. Сети с коммутацией пакетов (состояние про-

блемы и пути ее решения). – В кн.: Вычислительные сети коммутации па-

кетов. Тезисы докладов Всесоюзной конференции. Рига: Зинатне, 1979. – с.

12-21.

34. Глушков В.М., Никитин А.И. Некоторые проблемы создания и развития

сетей ЭВМ. В кн.: Программное обеспечение вычислительных сетей и сис-

тем реального времени. Тезисы докладов Всесоюзной конференции. – Ки-

ев: 1981. – с. 3-6.

35. Глушков В.М. и др. Транспортная станция для ЕС ЭВМ. – УСиМ, 1981. –

№ 5. – с. 3-8.

36. ГОСТ Р 17799-2005 Практические правила управления информационной

безопасностью. Москва, Стандартинформ, 2006.

37. ГОСТ Р 52069.0-2003 ЗАЩИТА ИНФОРМАЦИИ. СИСТЕМА СТАНДАР-

ТОВ. ОСНОВНЫЕ ПОЛОЖЕНИЯ. Утвержден Постановлением Госстан-

дарта России от 5 июня 2003 г. N 181-ст.

38. Дацюк В.Н., Букатов А.А., Жегуло А.И. Методическое пособие по курсу

«Многопроцессорные системы и параллельное программирование», Рос-

тов-на-Дону, 2000.

39. Доктрина информационной безопасности Российской Федерации [Элек-

тронный ресурс]. – Электрон. дан. – [2010]. – Режим доступа свобод.:

http://www.rg.ru/oficial/doc/min_and_vedom/mim_bezop/doctr.shtm

40. Дональд Э. Кнут. Искусство программирования, том 1. Основные алгорит-

мы, 3-е изд.: Пер. с англ. – М.: Издательский дом «Вильямс», 2000.

41. Дональд Э. Кнут. Искусство программирования, том 2. Получисленные ал-

горитмы, 3-е изд.: Пер. с англ. – М.: Издательский дом «Вильямс», 2000.

42. Доронин С.И. Квантовая магия [Электронный ресурс]. – Электрон. дан. -

[2013]. – Режим доступа свобод.:

http://quantmag.ppole.ru/QuantumMagic/Doronin/cont.html

43. Желтов С.А. Адаптация метода Шермана Лемана решения задачи фактори-

зации к вычислительной архитектуре CUDA / Вестник РГГУ №14/12, се-

Page 113: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

113

рия «Информатика. Защита информации. Математика». Научный журнал.

М.: РГГУ, 2012. – с. 84-92.

44. Желтов С.А. Особенности адаптации вычислительных алгоритмов к архи-

тектуре CUDA. – Математические методы управления: Сб. науч. тр. –

Тверь: Твер. гос. ун-т, 2011. – с. 33-36.

45. Желтов С.А. Некоторые оценки эффективности параллельных вычислений

в архитектуре CUDA при решении задачи факторизации целых чисел // Тр.

IV Mеждунар. конгресса по интеллект. системам и информ. технол. // ХII

Междунар. научн.-техн. конф. «Интеллектуальные системы» (AIS'12). –

М.: Физматлит, 2012. – Т. 2. – с. 191-196.

46. Желтов С.А. Адаптация ρ-метода Полларда решения задачи дискретного

логарифмирования к вычислительной архитектуре CUDA / Вестник РГГУ,

серия «Информатика. Защита информации. Математика». Научный жур-

нал. М.: РГГУ, 2013. – с. 139-146.

47. Желтов С.А. Алгоритмы факторизации целых чисел. – Методические ука-

зания к лабораторным занятиям на ЭВМ для студентов математическо-

го факультета. Тверь: Твер. гос. ун-т, 2012.

48. Желтов С.А. Реализация арифметических операций с «длинными» числами

на устройствах GPGPU. – Вопросы защиты информации №3: науч. практ.

журнал – Москва, 2012. – с. 2-4.

49. Желтов С.А. Методика получения оценки сложности параллельных алго-

ритмов реализуемых в гетерогенных вычислительных системах// Тр. IV

Mеждунар. конгресса по интеллект. системам и информ. технол. / ХIII

Междунар. научн.-техн. конф. “Интеллектуальные системы” (AIS'13). М.,

Физматлит, 2013. – Т. 1. – с. 208-211.

50. Закон Мура [Электронный ресурс]. – Электрон. дан. – [2010]. – Режим дос-

тупа свобод.: http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%

D0%BE%D0%BD_%D0%9C%D1%83%D1%80%D0%B0.

51. Зубов А.Ю. Совершенные шифры. – М.: Гелиос АРВ, 2003.

Page 114: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

114

52. Как выбрать DLP-систему? [Электронный ресурс]. – Электрон. дан. –

[2013]. – Режим досту-

па свобод.:http://www.pcweek.ru/security/article/detail.php?ID=126125

53. Как работают DLP-системы: разбираемся в технологиях предотвращения

утечки информации [Электронный ресурс]. – Электрон. дан. – [2013]. –

Режим доступа свобод.: https://xakep.ru/2011/05/04/55604/

54. Казенов А.М. Математические основы и численные методы моделирова-

ния. Основы технологии CUDA // Компьютерные исследования и модели-

рование. – 2010. – № 2. – с. 295–308.

55. Качко Е.Г. Раcпараллеливание алгоритмов умножения чисел многократной

точности [Электронный ресурс]. – Электрон. дан. – [2012] . –

Режим доступа свобод.:

http://journal.ugatu.ac.ru/index.php/vestnik/article/view/419/383

56. Классификация М. Флинна [Электронный ресурс]. – Электрон. дан. –

[2010] . – Режим доступа свобод.:

http://parallel.ru/computers/taxonomy/flynn.html.

57. Коблиц Н. Курс теории чисел и криптографии. – М.: ТВП, 2001.

58. Ковалев А. Как выбрать DLP-систему? [Электронный ресурс]. – Электрон.

дан. – [2014]. – Режим доступа свобод.:

http://www.pcweek.ru/security/article/detail.php?ID=126125

59. Коробейников А.Г., Гатчин Ю.А. Математические основы криптологии.

Учебное пособие. СПб.: СПб ГУ ИМТО, 2004.

60. Котельников Е.В., Пескишева Т.А. Параллельная система автоматической

текстовой классификации [Текст] // Программные продукты и системы. –

2012. – №1). – С. 31-36.

61. Ку, Эндрю. Harden Up: Can We Break Your Password With Our GPUs?

[Электронный ресурс]. – Электрон. дан. – [2012]. – Режим доступа свобод.:

http://www.tomshardware.com/reviews/password-recovery-gpu,2945-7.html

62. Лидл Р., Нидеррайтер Г. Конечные поля: в 2-х т. – Т. 1. – Пер. с англ. – М.:

Мир, 1988.

Page 115: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

115

63. Лидл Р., Нидеррайтер Г. Конечные поля: в 2-х т. – Т. 2. – Пер. с англ. – М.:

Мир, 1988.

64. «Ломоносов» становится одним из самых мощных в мире суперкомпьюте-

ров. [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим доступа

свобод.: http://www.nanonewsnet.ru/news/2011/lomonosov-stanovitsya-odnim-

iz-samykh-moshchnykh-v-mire-superkompyuterov

65. Ломоносов (суперкомпьютер). [Электронный ресурс]. – Электрон. дан. –

[2012]. – Режим доступа свобод.: http://ru.wikipedia.org/wiki/%D0%9B%

D0%BE%D0%BC%D0%BE%D0%BD%D0%BE%D1%81%D0%BE%D0%B2

_(%D1%81%D1%83%D0%BF%D0%B5%D1%80%D0%BA%D0%BE%D0%

BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80)

66. Маховенко Е.Б. Теоретко-числовые методы в криптографии: Учебное по-

собие / Е.Б. Маховенко. – М.: Гелиос АРВ, 2006.

67. Маховенко Е.Б., Ростовцев А.Г. Теоретическая криптография. – СПб.:

Профессионал, 2005.

68. Межведомственный Суперкомпьютерный Центр Российской Академии

Наук. [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим доступа

свобод.: http://www.jscc.ru/scomputers.shtml

69. Немнюгин С.А., Стесик О.Л. Параллельное программирование для много-

процессорных систем. – СПб.: БХВ-Петербург, 2002.

70. Нестеренко А.Ю. Введение в современную криптографию. [Электронный

ресурс]. – Электрон. дан. – [2011]. – Режим доступа свобод.:

http://img0.liveinternet.ru/images/attach/c/4//3908/3908902_ntheory.pdf

71. Нестеренко А.Ю. Теоретико-числовые методы в криптографии: учебное

пособие. Моск. гос. ин-т. электроники и математики. – 2012.

72. Нестеренко Ю.В. Алгоритмические проблемы теории чисел // Математи-

ческое просвещение. – сер. 3. – вып. 2. – 1998.

73. Нестеренко Ю.В. Теория чисел: учебник для студ. высш. учеб. заведений.

– М.: Издательский центр «Академия», 2008.

Page 116: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

116

74. Обзор процессоров Core i5-2500, Core i5-2400 и Core i5-2300. [Электрон-

ный ресурс]. – Электрон. дан. – [2013]. – Режим доступа сво-

бод.: http://processor-new.jimdo.com/%D0%BE%D0%B1%D0%B7%D0%

BE%D1%80%D1%8B/intel/intel-core-i5/

75. О номерах процессоров Intel®. [Электронный ресурс]. – Электрон. дан. –

[2013]. – Режим доступа свобод.: http://www.intel.ru/content/www/ru/ru/

processors/processor-numbers.html

76. Орлов А. Очень скоро поднимется новая волна спроса на DPI. [Электрон-

ный ресурс]. – Электрон. дан. – [2014]. – Режим доступа свобод.:

http://ibusiness.ru/blog/ekspyertiza/29895

77. Панкратьев Е.В., Панкратьев Е.В. Алгебраические алгоритмы и их слож-

ность. [Электронный ресурс]. – Электрон. дан. – [2014]. – Режим доступа

свобод.:http://randnet.files.wordpress.com/2010/10/p_adis_ponkrat.pdf

78. Панюков А.В., Лесовой С.Ю. Реализация базовых операций целочислен-

ной арифметики в гетерогенных системах. // Параллельные вычислитель-

ные технологии (ПаВТ’2012). – Труды международной научной конфе-

ренции (Новосибирск, 26 марта – 30 марта 2012 г.). – Челябинск: Изда-

тельский центр ЮУрГУ. – 2012. – с. 634-637.

79. Пескишева Т.А., Котельников Е.В. Параллельная реализация алгоритма

обучения системы текстовой классификации [Текст] // Вестник УГАТУ. Се-

рия управление, вычислительная техника и информатика. – 2011. – №5 (45).

– С. 130-136.

80. Пескишева Т.А., Котельников Е.В., Пестов О.А. Параллельный алгоритм

обучения текстового классификатора для многопроцессорной системы с

иерархической архитектурой [Текст] // Вопросы современной науки и

практики. Университет им. В.И. Вернадского. – 2011. – № 3 (34). – С. 103-

110.

81. Программа «СКИФ» [Электронный ресурс]. – Электрон. дан. – [2011]. –

Режим доступа свобод.: http://www.skif.bas-net.by/

Page 117: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

117

82. Сандерс Д., Кэндрот Э. Технология CUDA в примерах: введение в про-

граммирование графических процессоров. Пер. с англ. – ДМК Пресс, 2011.

83. Семейство персональных суперкомпьютеров (кластеров) «СКИФ-

ТРИАДА». [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим дос-

тупа свобод.: http://www.niievm.by/products/triada.htm

84. Сидоров И.Д. Анализ эффективности параллельных алгоритмов дискрет-

ного логарифмирования на эллиптической кривой // Молодежь и совре-

менные информационные технологии. Сборник трудов VII Всероссийской

научно-практической конференции студентов, аспирантов и молодых уче-

ных «Молодежь и современные информационные технологии». Томск:

Изд-во СПБ Графикс, 2009.

85. Сидоров И.Д. Разработка и исследование параллельных алгоритмов анали-

за криптосистем, основанных на задаче дискретного логарифмирования:

дис. канд. тех. наук: 05.13.19 // Сидоров Игорь Дмитриевич. – Таганрог,

2009.

86. Системные требования InfoWatch Traffic Monitor Enterprise [Электронный

ресурс]. – Электрон. дан. - [август, 2013]. - Режим доступа свобод.:

http://www.anti-

malware.ru/reviews/InfoWatch_Traffic_Monitor_Enterprise_41_part1#part3

87. Смарт Н. Криптография. – М.: Техносфера, 2006.

88. Сравнение графических процессоров nVidia. [Электронный ресурс]. –

Электрон. дан. – [2013]. – Режим доступа свобод.:

http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD

%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%8

4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%

BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%

80%D0%BE%D0%B2_nVidia

89. Стратегия развития информационного общества в Российской Федерации

от 7 февраля 2008 г. N Пр-212. [Электронный ресурс]. – Электрон. дан. –

Page 118: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

118

[2010]. – Режим доступа свобод.: http://www.rg.ru/2008/02/16/informacia-

strategia-dok.html

90. Страуструп Бьерн. Язык программирования С++ / Бьерн Страуструп. – пер.

с англ. С. Анисимова и М. Кононова. – Под ред. Ф. Андреева и А. Ушако-

ва. – Спец. изд. – М.: Бином, 2005.

91. Суперкомпьютер из видеокарты: задействуем возможности GPU для уско-

рения софта. [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим

доступа свобод.: http://www.xakep.ru/post/56966/

92. Суперкомпьютер «Уран» модернизировали. [Электронный ресурс]. –

Электрон. дан. – [2012]. – Режим доступа свобод.: http://www.it-

world.ru/news/itnews/185630.html

93. Суперкомпьютеры top50 [Электронный ресурс]. – Электрон. дан. – [2012].

– Режим доступа свобод.: http://top50.supercomputers.ru/?page=rating

94. Таненбаум Э. Архитектура компьютеров. – СПб.: Питер, 2007.

95. Т-платформы. [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим

доступа свобод.: http://www.t-platforms.ru/solutions.

96. Фергюсон Н., Шнаер Б. Практическая криптография. Пер. с англ.- М.: Из-

дательский дом «Вильямс», 2005.

97. Хакер [Электронный ресурс]. – Электрон. дан. – [2012]. – Режим доступа

свобод.: http://www.xakep.ru/post/58507/

98. Черемушкин А.В. Лекции по арифметическим алгоритмам в криптогра-

фии. – М.: МЦНМО, 2002.

99. Чмора Л.Л. Современная прикладная криптография. – 2-е изд. Стереотип-

ное. – М.: ГЕЛИОС АРВ, 2002.

100. Шеннон К. Теория связи в секретных системах: работы по теории инфор-

мации и кибернетике. – М.: ИЛ, 1963.

101. Шнаер Б. Прикладная криптография. Протоколы, алгоритмы, исходные

тексты на языке Си. – М.: Издательство ТРИУМФ, 2003.

Page 119: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

119

102. Яндекс маркет. [Электронный ресурс]. – Электрон. дан. – [2013]. –

Режим доступа свобод.: http://market.yandex.ru/model.xml?modelid=

4004586&hid=91019&show-uid=376180713767192371.

103. Яндекс маркет. [Электронный ресурс]. – Электрон. дан. – [2013]. –

Режим доступа свобод.: http://market.yandex.ru/model.xml?hid=

91019&modelid=6933477&clid=502.

104. Яндекс маркет. [Электронный ресурс]. – Электрон. дан. – [2013]. –

Режим доступа свобод.: model.xml?modelid=4004586&hid=91019&show-

uid=376180713767192371

105. Яндекс маркет. [Электронный ресурс]. – Электрон. дан. – [2013]. –

Режим доступа свобод.: http://market.yandex.ru/model.xml?hid=

91019&modelid=6933477&clid=502

106. Adleman L. A subexponential algorithm the discrete logarithm problem with

applications to cryptography. – Proc. 20th Ann. IEEE Symp. Found. Comput.

Sci. – 1979. – p. 554-600.

107. ASCI White. [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим

доступа свобод.: http://www.llnl.gov/asci/platforms/white/index.html

108. ATI Stream SDK 2.01 с улучшенной поддержкой OpenCL [Электронный

ресурс]. – Электрон. дан. – [2013]. – Режим доступа свобод.:

http://nvworld.ru/news/amd-ati-stream-sdk-201/.

109. CUDA C Best Practices Guide. 2010. [Электронный ресурс]. – Электрон.

дан. – [2011]. – Режим доступа свобод.:

http://developer.download.nVidia.com/compute/DevZone/docs/html/C/doc/CU

DA_C_Best_Practices_Guide.pdf.

110. CUDA ZONE [Электронный ресурс]. – Электрон. дан. – [2013]. – Режим

доступа свобод.: http://www.nVidia.ru/object/what_is_cuda_new_ru.html

111. CUDA ZONE [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим

доступа свобод.: http://www.nVidia.ru/object/cuda_home_new_ru.html

112. Diffie W., Hellman M. New Directions in Cryptography. IEEE Trans. Inform.

Theory, IT-22, No.6 (1976). – p. 644-654.

Page 120: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

120

113. Gordon D. Discrete logarithms in GF(p) using the number field sieve. – SIAM J.

Disc. Math. – 1993. – Vol. 6. – p. 124-138.

114. GPGPU.RU Использование видеокарт для вычислений [Электронный ре-

сурс]. – Электрон. дан. - [2011]. - Режим доступа свобод.:

http://www.gpgpu.ru/

115. GPGPU. [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим доступа

свобод.: http://ru.wikipedia.org/wiki/GPGPU

116. Graphics Add-in Board Shipments Decline 15.2% from Last Quarter

[Электрон. ресурс]. - Электрон. дан. – [2011]. – Режим доступа свобод.:

http://jonpeddie.com/publications /add-in-board-report/

117. Guan D.J. Pollard’s Algorithm for Discrete Logarithm. [Электронный ресурс].

– Электрон. дан. – [2010]. – Режим доступа свобод.:

http://guan.cse.nsysu.edu.tw/note/pollard.pdf

118. HARRIS B. Probability distributions related to random mappings. // Ann. Math.

Statist. – 1960. – Vol. 31. – p. 1045-1062.

119. Intel® Core2 Duo Processor E7000 Series. [Электронный ресурс]. - Электрон.

дан. – [2013]. – Режим доступа свобод.:

http://download.intel.com/support/processors/core2duo/sb/core_E7000.pdf

120. Intel® Core i5-2400 Desktop Processor Series. [Электронный ресурс]. - Элек-

трон. дан. – [2013]. – Режим доступа свобод.:

http://download.intel.com/support/processors/corei5/sb/core_i5-2400_d.pdf

121. INTERNET USAGE STATISTICS The Internet Big Picture [Электронный ре-

сурс]. - Электрон. дан. – [2012]. – Режим доступа свобод.:

http://internetworldstats. com/stats.htm

122. Lambert M. Surhone, Miriam T. Timpledon, Susan F. Marseken. OpenCL. – М.:

Книга по требованию, 2010.

123. Lehman S. Factoring large integers // Mathematics Of Computation. – 1974. –

Vol. 28. – no. 126. – p. 637-646.

Page 121: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

121

124. nVidia CUDA — неграфические вычисления на графических процессорах

[Электронный ресурс]. – Электрон. дан. – [2010]. – Режим доступа свобод.:

http://www.ixbt.com/video3/cuda-1.shtml

125. nVidia CUDA C Programming guide. 2011. [Электронный ресурс]. – Элек-

трон. дан. – [2011]. – Режим доступа свобод.:

http://developer.download.nVidia.com/compute/cuda/4_0/toolkit/docs/CUDA_

C_Programming_Guide.pdf.

126. Pollard J.M. Monte Carlo method for index computation (mod p) // Math/

Camp. – 1978. – Vol. 32 (143). – p. 918-924.

127. P. Van Oorschot, Wiener M. Parallel collision search with cryptanalytic applica-

tions. // Journal of Cryptology. – 1999. – Vol. 12. – p. 1-28.

128. RAPOPORT A. Cycle distributions in random nets. // BulL Math. Biophys. –

1948. – Vol. 10. – p. 145-157.

129. Sanders J., Kandrot E. CUDA by Example. An Introduction to General-Purpose

GPU Programming. – N. Y.: Addison Wesley, 2010.

130. Silverman R.D. The Multiple Polinomial Quadratic Sieve Mathematics Of

Computation. – 1987. – Vol. 48. – p. 329-339.

131. TOP 500 [Электронный ресурс]. – Электрон. дан. – [2011]. – Режим доступа

свобод.: http://top500.org/list/2011/11/100.

Page 122: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

122

Приложение 1. Код программной реализации

последовательного алгоритма метода Шермана Лемана

#include <QtGui/QApplication>

#include "mainwindow.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

MainWindow w;

w.show();

return a.exec();

}

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QTime>

#include <QTextCodec>

#include <gmp.h>

#include <windows.h>

#include <MMSYSTEM.H>

#pragma comment(lib, "winmm.lib")

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent), ui(new Ui::MainWindow)

{

ui->setupUi(this);

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::on_pushButton_clicked()

{

QTextCodec *codec = QTextCodec::codecForName("UTF8");

QTextCodec::setCodecForCStrings(codec);

//инициализация переменных

Page 123: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

123

mpz_t n, k, m, d, g, i, tmp, a, b, tmp4;//, A, B;

mpf_t tmp2, tmp3;

bool result = false;

char* str = new char[2000];

//очищаем окно вывода

ui->textEdit->clear();

//присваиваем переменным введенные значения

mpz_init_set_str (n, ui->lineEdit->text().toAscii(), 10);

//вывод значения n

ui->textEdit->textCursor().insertText("n = ");

ui->textEdit->textCursor().insertText(mpz_get_str(str, 10, n));

ui->textEdit->textCursor().insertText("\n");

//вычисляем длину числа n в десятичной записи

str = mpz_get_str(str, 10, n);

ui->textEdit->textCursor().insertText("длина числа n = " +

QString("%1").arg(QString("%1").arg(str).length()) + " десятичных знаков\n");

//вывод значения n в двоичной записи

ui->textEdit->textCursor().insertText("n = ");

ui->textEdit->textCursor().insertText(mpz_get_str(str, 2, n));

ui->textEdit->textCursor().insertText("\n");

//вычисляем длину числа n в двоичной записи

str = mpz_get_str(str, 2, n);

ui->textEdit->textCursor().insertText("длина числа n = " +

QString("%1").arg(QString("%1").arg(str).length()) + " двоичных знаков\n");

ui->textEdit->textCursor().insertText("Начинаем разложение...\n");

mpz_init (tmp);//инициализация

ui->textEdit->textCursor().insertText("Поиск малого делителя

перебором...\n");

DWORD startTime = timeGetTime();//////////////////////////////////////////////////////

mpz_init (m);

mpz_root(m , n, 3);//извлечение корня степени 3 из n в m

mpz_init (i);

mpz_set_ui (i, 3);//инит. число вторым параметром

// mpz_cmp вернет:

// положительное значение, если m>i;

Page 124: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

124

// 0, если m==i;

// отрицательное значение, если m<i

while ((mpz_cmp (m, i) >= 0) && (result == false))

{

//возвращает не ноль, если первый параметр точно делится на вто-

рой

//т. е. если существует целое q при котором n == q*i.

if(mpz_divisible_p (n, i) != 0)

{

result = true;

ui->textEdit->textCursor().insertText("p = ");

ui->textEdit->textCursor().insertText(mpz_get_str(str, 10, i));

ui->textEdit->textCursor().insertText("\n");

ui->textEdit->textCursor().insertText("q = ");

//первый параметр - результат, второй - делимое, третий - де-

литель

mpz_tdiv_q (tmp, n, i);

ui->textEdit->textCursor().insertText(mpz_get_str(str, 10, tmp));

ui->textEdit->textCursor().insertText("\n");

// ui->textEdit->textCursor().insertText("Время работы алгоритма:

"+ QString("%1").arg(timerTrDiv.elapsed())+"ms\n");

DWORD secondTime =

timeGetTime();//////////////////////////////////////////////////////

DWORD elapseTime = secondTime-

startTime;//////////////////////////////////////////////////////

ui->textEdit->textCursor().insertText("Время1 работы алгорит-

ма: "+

QString("%1").arg((int)elapseTime)+"ms\n");//////////////////////////////////////////////////////

}

//присваивает первому параметру второй+третий

//т.е. i+=2

mpz_add_ui (i, i, 2);

}

mpz_clear (i);//освобождает память, занимаемую объектом

mpz_init (g);

if (!result) ui->textEdit->textCursor().insertText("Ищем делители большие

n^(1/3)\n");

mpz_init (k);

mpz_add_ui(k, k, 1);

mpz_init (a);

Page 125: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

125

mpz_init (b);

mpf_init (tmp2);

mpf_init (tmp3);

mpz_init (tmp4);

ui->textEdit->textCursor().insertText("m = ");

ui->textEdit->textCursor().insertText(mpz_get_str(str, 10, m));

ui->textEdit->textCursor().insertText("\n");

QTime timer;

timer.start();

while ((mpz_cmp (m, k) >= 0) && (!result))

{

mpz_sqrt(g, k);//g=sqrt(k)

mpz_mul_ui(g, g, 4);//первый = второй*третий

mpz_root(tmp, n, 6);

mpz_tdiv_q(g, tmp, g);

mpz_add_ui(g, g, 1);

mpz_init (d);

while ((mpz_cmp (g, d) >= 0) && (!result))

{

mpz_mul(tmp, k, n); //kn

mpz_mul_ui(tmp4, tmp, 4);//4kn

mpz_sqrt(tmp, tmp4); //sqrt(4kn)

mpz_set(a, tmp);

mpz_add(a, a, d); //sqrt(4kn)+d

mpz_mul(tmp, a, a);//(sqrt(4kn)+d)*(sqrt(4kn)+d)

mpz_sub(tmp, tmp, tmp4);//(sqrt(4kn)+d)*(sqrt(4kn)+d)-4kn

//вызвращает не ноль, если квадратный корень из tmp - целое

число

if (mpz_perfect_square_p(tmp) != 0)

{

mpz_mul(b, a, a);//(sqrt(4kn)+d)^2

mpz_sub(b, b, tmp4);//(sqrt(4kn)+d)^2-4kn

// возвращает : -1, если b<0;

// 0, если b==0;

// 1, если b>0

Page 126: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

126

if (mpz_sgn(b)>=0)

{

mpz_sqrt(b , b);//sqrt((sqrt(4kn)+d)^2-4kn)

mpz_add(a, a, b);

ui->textEdit->textCursor().insertText("a+b = ");

ui->textEdit-

>textCursor().insertText(mpz_get_str(str, 10, a));

ui->textEdit->textCursor().insertText("\n");

//первый параметр = наибольший общий делитель

из a и n

mpz_gcd(tmp, a, n);

if ((mpz_cmp_ui (tmp, 1) > 0) && ((mpz_cmp (n,

tmp) > 0)))

{

ui->textEdit-

>textCursor().insertText("Делитель найден! p = ");

ui->textEdit-

>textCursor().insertText(mpz_get_str(str, 10, tmp));

ui->textEdit->textCursor().insertText("\n");

//ui->textEdit->textCursor().insertText("Время

работы алгоритма: "+ QString("%1").arg(timer.elapsed())+"ms\n");

DWORD secondTime =

timeGetTime();///////////////////////

DWORD elapseTime = secondTime-

startTime;///////////////////

ui->textEdit->textCursor().insertText("Время

работы алгоритма: "+

QString("%1").arg((int)elapseTime)+"ms\n");//////////////////////////////////////////////////////

result=true;

if (!result)

{

mpz_sub(a, a, b);

mpz_sub(a, a, b);

ui->textEdit->textCursor().insertText("a-

b = ");

ui->textEdit-

>textCursor().insertText(mpz_get_str(str, 10, b));

ui->textEdit-

>textCursor().insertText("\n");

mpz_gcd(tmp, a, n);

if ((mpz_cmp_ui (tmp, 1) > 0) &&

((mpz_cmp (n, tmp) > 0)))

Page 127: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

127

{

ui->textEdit-

>textCursor().insertText("Делитель найден! p = ");

ui->textEdit-

>textCursor().insertText(mpz_get_str(str, 10, tmp));

ui->textEdit-

>textCursor().insertText("\n");

ui->textEdit-

>textCursor().insertText("Время работы алгоритма: "+

QString("%1").arg(timer.elapsed())+"ms\n");

result=true;

}//if ((mpz_cmp_ui (tmp, 1) > 0) &&

((mpz_cmp (n, tmp) > 0)))

}//if (!result)

}//if ((mpz_cmp_ui (tmp, 1) > 0) && ((mpz_cmp (n,

tmp) > 0)))

}//if (mpz_sgn(b)>=0)

}//if (mpz_perfect_square_p(tmp) != 0)

mpz_add_ui(d, d, 1);

}//while ((mpz_cmp (g, d) >= 0) && (!result))

mpz_add_ui(k, k, 1);

}//while ((mpz_cmp (m, k) >= 0) && (!result))

}

Page 128: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

128

Приложение 2. Код программной реализации параллель-

ного алгоритма метода Шермана Лемана

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <math.h>

#include <template_kernel.cu>

#include <iostream>

int threadsPerBlock = 0;

long long hostN = 0;

long long hostM = 0;

int currDevice = 0;

int deviceCount = 0;

__host__ void DeviceQuery()

{

int dev = 0;

int driverVersion = 0;

int runtimeVersion = 0;

for (dev = 0; dev < deviceCount; ++dev)

{

cudaDeviceProp deviceProp;

cudaGetDeviceProperties(&deviceProp, dev);

if(dev==currDevice) threadsPerBlock =

deviceProp.maxThreadsPerBlock;

#ifdef DEVPROP_OUTPUT

#if CUDART_VERSION >= 2020

cudaDriverGetVersion(&driverVersion);

printf("CUDA Driver Version: %d.%d\n",

driverVersion/1000, driverVersion%100);

cudaRuntimeGetVersion(&runtimeVersion);

printf("CUDA Runtime Version: %d.%d\n",

runtimeVersion/1000, runtimeVersion%100);

#endif

printf("CUDA Capability Major/Minor version number: %d.%d\n",

deviceProp.major, deviceProp.minor);

Page 129: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

129

printf("Total amount of global memory: %llu bytes\n", (un-

signed int)

deviceProp.totalGlobalMem);

printf("Total amount of constant memory: %u bytes\n",

deviceProp.totalConstMem);

printf("Total amount of shared memory per block: %u bytes\n",

deviceProp.sharedMemPerBlock);

printf("Total number of registers available per block: %d\n",

deviceProp.regsPerBlock);

printf("Warp size: %d\n", deviceProp.warpSize);

printf("Maximum number of threads per block: %d\n",

deviceProp.maxThreadsPerBlock);

printf("Maximum sizes of each dimension of a block: %d x %d x %d\n",

deviceProp.maxThreadsDim[0],

deviceProp.maxThreadsDim[1],

deviceProp.maxThreadsDim[2]);

printf("Maximum sizes of each dimension of a grid: %d x %d x %d\n",

deviceProp.maxGridSize[0],

deviceProp.maxGridSize[1],

deviceProp.maxGridSize[2]);

printf("Multiprocessors :

%d\n",deviceProp.multiProcessorCount);

printf("Maximum memory pitch: %u bytes\n",

deviceProp.memPitch);

printf("Texture alignment: %u bytes\n",

deviceProp.textureAlignment);

printf("Clock rate: %.2f GHz\n", deviceProp.clockRate *

1e-6f);

printf("Run time limit on kernels: %s\n",

deviceProp.kernelExecTimeoutEnabled ? "Yes" : "No");

printf("Integrated: %s\n", deviceProp.integrated ? "Yes" :

"No");

printf("Support host page-locked memory mapping: %s\n",

deviceProp.canMapHostMemory ? "Yes" : "No");

#endif

};

};

void runTest(long long n)

{

cudaEvent_t s_start,s_first,s_second;

float gpuTime = 0.0f;

cudaEventCreate(&s_start);

Page 130: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

130

cudaEventCreate(&s_first);

cudaEventCreate(&s_second);

long long numTh = hostM-3;

int blocks = 1;

if(numTh>threadsPerBlock)

{

blocks = (numTh/threadsPerBlock)+1;

};

dim3 grid( blocks, 1, 1);

dim3 threads( threadsPerBlock, 1, 1);

long long* host_res = (long long*) malloc(sizeof(long long)*2);

host_res[0] = 0;

host_res[1] = 0;

long long* dev_res;

cudaMalloc((void**) &dev_res, sizeof(long long)*2);

cudaMemcpy(dev_res, host_res, sizeof(long

long)*2,cudaMemcpyHostToDevice);

cudaEventRecord(s_start,0);

firstKernel<<< grid, threads>>>(dev_res);

cudaThreadSynchronize();

cudaMemcpy(host_res,dev_res,sizeof(long

long)*2,cudaMemcpyDeviceToHost);

if(host_res[0]!=0)

{

cudaEventRecord(s_first,0);

cudaEventSynchronize(s_first);

cudaEventElapsedTime(&gpuTime,s_start,s_first);

printf("first pass gpuTime : %.2f mlsec\n",gpuTime);

std::cout<<"p : "<<host_res[0]<<std::endl;

std::cout<<"q : "<<host_res[1]<<std::endl;

return;

};

std::cout<<"m : "<<hostM<<std::endl;

numTh = hostM;

blocks = 1;

Page 131: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

131

if(numTh>(threadsPerBlock))

{

blocks = (numTh/threadsPerBlock)+1;

};

grid.x = blocks;

threads.x = threadsPerBlock;

host_res[0] = 0;

cudaMemcpy(dev_res, host_res, sizeof(long

long),cudaMemcpyHostToDevice);

secondKernel<<< grid, threads>>>(dev_res);

cudaEventRecord(s_second,0);

cudaEventSynchronize(s_second);

cudaEventElapsedTime(&gpuTime,s_start,s_second);

printf("second pass gpuTime : %.2f mlsec\n",gpuTime);

cudaMemcpy(host_res,dev_res,sizeof(long long),cudaMemcpyDeviceToHost);

if(host_res[0]!=0)

std::cout<<"p : "<<host_res[0]<<std::endl;

cudaEventDestroy(s_start);

cudaEventDestroy(s_first);

cudaEventDestroy(s_second);

};

int main( int argc, char** argv)

{

cudaGetDeviceCount(&deviceCount);

if(deviceCount == 0)

{

printf("There is no device supporting CUDA\n");

exit(0);

};

printf("There are %d devices supporting CUDA\n", deviceCount);

for (int i = 0; i < deviceCount; ++i)

{

cudaDeviceProp deviceProp;

cudaGetDeviceProperties(&deviceProp, i);

printf("Device %d: \"%s\"\n", i, deviceProp.name);

};

Page 132: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

132

std::cout<<"Choose device."<<std::endl;

std::cin>>currDevice;

DeviceQuery();

cudaSetDevice(currDevice);

//hostN = 1912021;//19120211505964799;

std::cout<<"n : "<<hostN<<std::endl;

std::cout<<"\nInput number."<<std::endl;

std::cin>>hostN;

long long xp = hostN/2;

long long xn = (hostN/(xp*xp) + 2*xp)/3;

while(xn<xp)

{

xp = xn;

xn = (hostN/(xp*xp) + 2*xp)/3;

};

hostM = xn;

xp = hostM/2;

xn = (xp + hostM/xp)/2;

while(xn<xp)

{

xp = xn;

xn = (xp + hostM/xp)/2;

};

long long host6N = xn;

cudaMemcpyToSymbol(deviceN,&hostN,sizeof(long long));

cudaMemcpyToSymbol(deviceM,&hostM,sizeof(long long));

cudaMemcpyToSymbol(device6N,&host6N,sizeof(long long));

runTest(hostN);

std::cin.get();

std::cin.get();

return 0;

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////

#ifndef _TEMPLATE_KERNEL_H_

Page 133: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

133

#define _TEMPLATE_KERNEL_H_

#include <stdio.h>

__constant__ long long deviceN[1];

__constant__ long long deviceM[1];

__constant__ long long device6N[1];

__global__ void firstKernel(long long* res)

{

long long tid = blockIdx.x * blockDim.x + threadIdx.x + 3;

if(tid>deviceM[0]) tid = 3;

bool bres = false;

if(res[0]!=0) bres = true;

long long remainder = deviceN[0]%tid;

if(remainder==0 && !bres)

{

res[0] = tid;

res[1] = deviceN[0]/tid;

bres = true;

};

}

inline __device__ void isqrt(long long& res,long long x)

{

/*long long a, b = x;

do

{

a = b;

b = ( a + x/a ) / 2;

}while(a>b);

*res = a;

*/

res = powf(x,0.5f);

/*

long long xp = x/2;

long long xn = (xp + x/xp)/2;

while(xn<xp)

{

xp = xn;

xn = (xp + x/xp)/2;

};

Page 134: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

134

res = xn;

*/

}

/*

inline __device__ void icsqrt(long long* res,long long x)

{

long long xp = x/2;

long long xn = (x/(xp*xp) + 2*xp)/3;

while(xn<xp)

{

xp = xn;

xn = (x/(xp*xp) + 2*xp)/3;

};

*res = xn;

}

*/

__global__ void secondKernel(long long* res)

{

long long k = blockIdx.x * blockDim.x + threadIdx.x + 1;/////////+1

if(k>deviceM[0]+1) k = 1;

long long g;

isqrt(g,k);//g=sqrt(k)

g*=4;

long long N = deviceN[0];

long long tmp = device6N[0];

g = tmp/g;

++g;

bool result = false;

long long d = 0;

long long b;

long long a;

long long troot;

long long rem;

long long tmp4;

long long yy;

long long xx;

long long r;

while (g>=d && !result)

{

tmp = k * N;

Page 135: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

135

tmp4 = tmp * 4;//4kn

isqrt(tmp,tmp4); //sqrt(4kn)

a = tmp;

a += d; //sqrt(4kn)+d

tmp = a * a;//(sqrt(4kn)+d)*(sqrt(4kn)+d)

tmp -= tmp4;//(sqrt(4kn)+d)*(sqrt(4kn)+d)-4kn

isqrt(troot,tmp);

rem = troot%1;/////////////////////////////////////////////////////////////////

if (!rem)

{

b = tmp;

if (b>=0)

{

b = troot;

a = a + b;

//первый параметр = наибольший общий делитель из a и

n

yy = N;

xx = a;

while(yy)

{

r = yy;

yy = xx%yy;

xx = r;

}

tmp = xx;

if ( (tmp>1) && (N>tmp) )

{

res[0] = tmp;

result = true;

}//if ((mpz_cmp_ui (tmp, 1) > 0) && ((mpz_cmp (n, tmp) >

0)))

}//if (mpz_sgn(b)>=0)

}//if (mpz_perfect_square_p(tmp) != 0)

++d;

}//while ((mpz_cmp (g, d) >= 0) && (!result))

};

#endif // #ifndef _TEMPLATE_KERNEL_H_

Page 136: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

136

Приложение 3. Код программной реализации

последовательного алгоритма ρ-метода Полларда

#include <stdio.h>

#include <iostream>

#include <time.h>

#define N 100000 //порог поиска наборов (alpha,beta,x) */

void ext_gcd ( long long a, long long b, long long *x, long long *y, long long *d

) {

// расширенный алгоритм Евклида: НОД(a, b) = d = a * x + b * y */

long long q, r, x1, x2, y1, y2;

if ( b == 0 ) {

* d = a,

* x = 1,

* y = 0;

return;

}

x2 = 1,

x1 = 0,

y2 = 0,

y1 = 1;

while (b > 0) {

q = a / b,

r = a - q * b;

* x = x2 - q * x1,

* y = y2 - q * y1;

a = b,

b = r;

x2 = x1,

x1 = * x,

y2 = y1,

y1 = * y;

}

* d = a,

* x = x2,

* y = y2;

}//void ext_gcd */

void get_u_v ( long long a, long long b, long long p, long long * u, long long * v

) {

//функция get_u_v вычисляет значения u и v */

long long

main_i, // стартовый индекс для поиса наборов */

Page 137: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

137

alpha, beta, x,// текущие значения */

alpha_i, beta_i, x_i,// значения, которые необходимо вычислить */

alpha_2i, beta_2i, x_2i,// значения, которые необходимо вычислить */

p1, p2;// границы отрезков при выборе alpha, beta и x */

p1 = p / 3;// вычисление границ отрезков */

p2 = 2 * p1; // вычисление границ отрезков */

// ШАГ 1 - поиск совпадающих x_i и x_2i */

// цикл поиска наборов (alpha,beta,x), где x_i=x_2i */

for ( long long i = 1; i < N; i ++ ) {

main_i = i;

x_i = 0;

x_2i = 0;

x = 1;

alpha = 0;

beta = 0;

for ( long long j = 1; j <= main_i*2; j ++ ) {

// цикл генерирует наборы с номером 1,...,2*main_i;

// определение, к какому отрезку принадлежит x;

bool case1 = x > 0 && x <= p1;

bool case2 = x > p1 && x <= p2;

bool case3 = x > p2 && x < p;

// вычисление параметров альфа, бета, вычисление значения x

if ( case1 ) {

beta ++;

beta = beta % ( p - 1 );

x = ( x * b ) % p;

goto end_check;

}

if ( case2 ) {

alpha = alpha * 2;

beta = beta * 2;

alpha = alpha % ( p - 1 );

beta = beta % ( p - 1 );

x = ( x * x ) % p;

goto end_check;

}

if ( case3 ) {

alpha ++;

alpha = alpha % ( p - 1 );

x = ( x * a ) % p;

goto end_check;

}

end_check: ;

// присвоение значений x_i и x_2i

Page 138: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

138

if ( j == main_i ) {

x_i = x ;

alpha_i = alpha;

beta_i = beta;

}

if ( j == main_i * 2 ) {

x_2i = x;

alpha_2i = alpha;

beta_2i = beta;

}

}

// условие выхода из главного цикла - найдены совпадающие эле-

менты x_i и x_2i;

if ( x_i == x_2i && x_i != 0 ) {

break;

}

}

// ШАГ 2 - вычисление значений u и v;

* u = alpha_2i - alpha_i;

* v = beta_i - beta_2i;

while ( * u >= p - 1 ) {

* u = * u - ( p - 1 );

}

while ( * v < 0 ) {

* v = * v + ( p - 1 );

}

}//void get_u_v */

void get_x ( long long a, long long b, long long p, long long u, long long v ) {

long long

nu, mu, d, x;

// вариант 1: алгоритм завершает работу */

if ( v == 0 ) {

std::cout << "Algorythm fails!\n";

goto end_func;

}

ext_gcd ( v, p-1, & nu, & mu, & d );

// вариант 2: x вычисляется однозначно */

if ( d == 1 ) {

x = u * nu % ( p -1 );

while ( x < 0 ) {

x = x + ( p - 1 );

}

std::cout << "----------\nx = " << x << "\n";

goto end_func;

Page 139: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

139

}

// вариант 3: вычисление возможных значений x */

for ( long long omega = 0; omega <= d; omega ++ ) {

x = ( u * nu + omega * ( p - 1 ) ) / d;

std::cout << "\nx[" << omega << "] = " << x;

}

end_func: ;

}//void get_x */

int main () {

long long

a, b, p,

u, v;

for (;;) {

std::cout << "Enter a:";

std::cin >> a;

std::cout << "Enter b:";

std::cin >> b;

std::cout << "Enter p:";

std::cin >> p;

clock_t start1 = clock();

get_u_v ( a, b, p, & u, & v );

get_x ( a, b, p, u, v );

std::cout << "\n\ntime = " << (long double) (clock() - start1) /

CLOCKS_PER_SEC << "\n----------\n";

std::cout << "\n* * * * * * * * * * * * * * * * * * * * * * * * * * * \n\n";

}

system ( "pause" );

}//int main */

Page 140: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

140

Приложение 4. Код программной реализации

параллельного алгоритма ρ-метода Полларда

#include <iostream>

#include <time.h>

void ext_gcd ( long a, long b, long *x, long *y, long *d ) {

// расширенный алгоритм Евклида: НОД(a, b) = d = a * x + b * y */

long q, r, x1, x2, y1, y2;

if ( b == 0 ) {

* d = a,

* x = 1,

* y = 0;

return;

}

x2 = 1,

x1 = 0,

y2 = 0,

y1 = 1;

while (b > 0) {

q = a / b,

r = a - q * b;

* x = x2 - q * x1,

* y = y2 - q * y1;

a = b,

b = r;

x2 = x1,

x1 = * x,

y2 = y1,

y1 = * y;

}

* d = a,

* x = x2,

* y = y2;

}//void ext_gcd */

void get_x ( long a, long b, long p, long u, long v ) {

long

nu, mu, d, x;

// вариант 1: алгоритм завершает работу */

if ( v == 0 ) {

std::cout << "Algorythm fails!\n";

goto end_func;

}

Page 141: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

141

ext_gcd ( v, p-1, & nu, & mu, & d );

// вариант 2: x вычисляется однозначно */

if ( d == 1 ) {

x = u * nu % ( p -1 );

while ( x < 0 ) {

x = x + ( p - 1 );

}

std::cout << "----------\nx = " << x << "\n";

goto end_func;

}

// вариант 3: вычисление возможных значений x */

for ( long omega = 0; omega <= d; omega ++ ) {

x = ( u * nu + omega * ( p - 1 ) ) / d;

std::cout << "\nx[" << omega << "] = " << x;

}

end_func: ;

}//void get_x */

__global__ void get_u_v_gpu ( long * a, long * b, long * p, long * u, long * v )

{

long tid = blockIdx.x * blockDim.x + threadIdx.x; // глобальный индекс нити

*/

long

p0, p1, p2; // границы отрезков при выборе alpha, beta и x */

p0 = * p; // вычисление границ отрезков */

p1 = p0 / 3; // вычисление границ отрезков */

p2 = 2 * p1; // вычисление границ отрезков */

long

alpha = 0, beta = 0, x = 1,

alpha_i = 0, beta_i = 0, x_i = 0,

alpha_2i= 0, beta_2i= 0, x_2i= 0;

for ( long j = 1; j <= tid * 2; j ++ ) {

// вычисление параметров альфа, бета, вычисление значения x */

if ( x > 0 && x <= p1 ) {

beta ++;

beta = beta % ( * p - 1 );

x = ( x * ( * b ) ) % * p;

goto end_check;

}

if ( x > p1 && x <= p2 ) {

alpha = alpha * 2;

beta = beta * 2;

alpha = alpha % ( * p - 1 );

beta = beta % ( * p - 1 );

x = ( x * x ) % * p;

Page 142: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

142

goto end_check;

}

if ( x > p2 && x < p0 ) {

alpha ++;

alpha = alpha % ( * p - 1 );

x = ( x * ( * a ) ) % * p;

goto end_check;

}

end_check: ;

// присвоение значений x_i и x_2i */

if ( j == ( tid ) ) {

x_i = x ;

alpha_i = alpha;

beta_i = beta;

}

if ( j == ( tid ) * 2 ) {

x_2i = x;

alpha_2i = alpha;

beta_2i = beta;

}

}//for

// ШАГ 2 - вычисление значений u и v */

if ( x_i == x_2i && x_i != 0 ) {

u[tid] = alpha_2i - alpha_i;

v[tid] = beta_i - beta_2i;

while ( u[tid] >= * p - 1 ) {

u[tid] = u[tid] - ( * p - 1 );

}

while ( v[tid] < 0 ) {

v[tid] = v[tid] + ( * p - 1 );

}

}

else {

u[tid] = 0;

v[tid] = 0;

}

}//__global__ void get_u_v_gpu

int main ( long argc, char * argv [] )

{

// определение количества потоков(threads) для данного GPU */

cudaDeviceProp devProp;

cudaGetDeviceProperties ( &devProp, 0 );

long num_th = devProp.maxThreadsPerMultiProcessor *

devProp.multiProcessorCount;

Page 143: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

143

dim3 threadsPerBlock ( devProp.maxThreadsPerBlock, 1, 1 );

dim3 numBlocks ( num_th / threadsPerBlock.x, 1, 1 );

long

* dev_a, * dev_b, * dev_p, * dev_u, * dev_v,

* a, * b, * p, * u = new long[num_th], * v = new long[num_th],

in_a, in_b, in_p;

for ( int q = 1; q < 100; q ++ ) {

// выделение памяти на GPU */

cudaMalloc( ( void** ) & dev_a, sizeof ( long ) );

cudaMalloc( ( void** ) & dev_b, sizeof ( long ) );

cudaMalloc( ( void** ) & dev_p, sizeof ( long ) );

cudaMalloc( ( void** ) & dev_u, num_th * sizeof ( long ) );

cudaMalloc( ( void** ) & dev_v, num_th * sizeof ( long ) );

// ввод исходных данных */

std::cout << "Enter a:";

std::cin >> in_a;

std::cout << "Enter b:";

std::cin >> in_b;

std::cout << "Enter p:";

std::cin >> in_p;

a = & in_a;

b = & in_b;

p = & in_p;

clock_t start1 = clock(); // Запуск таймера */

// копирование данных на GPU */

cudaMemcpy( dev_a, a, sizeof( long ), cudaMemcpyHostToDevice );

cudaMemcpy( dev_b, b, sizeof( long ), cudaMemcpyHostToDevice );

cudaMemcpy( dev_p, p, sizeof( long ), cudaMemcpyHostToDevice );

// вызов ядра */

get_u_v_gpu <<< numBlocks, threadsPerBlock >>> ( dev_a, dev_b, dev_p,

dev_u, dev_v );

// копирование данных из памяти GPU в память CPU */

cudaMemcpy( u, dev_u, num_th * sizeof ( long ), cudaMemcpyDeviceToHost

);

cudaMemcpy( v, dev_v, num_th * sizeof ( long ), cudaMemcpyDeviceToHost

);

// проверка выхода функции get_u_v_gpu

for ( long k = 1; k < num_th; k ++ ) {

if ( u[k] != 0 && v[k] != 0 ) {

get_x ( in_a, in_b, in_p, u[k], v[k] );

break;

}

}

// освобождение памяти, выделенной на GPU */

Page 144: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

144

cudaFree( dev_a );

cudaFree( dev_b );

cudaFree( dev_p );

cudaFree( dev_u );

cudaFree( dev_v );

std::cout << "\n\ntime = " << (long double) (clock() - start1) /

CLOCKS_PER_SEC << "\n----------\n";

std::cout << "\n* * * * * * * * * * * * * * * * * * * * * * * * * * * \n\n";

}

system ( "pause" );

return 0;

}

Page 145: Эффективные вычисления в архитектуре CUDA в ... · 2015-03-24 · Исследование возможности применения распределенных

145

Приложение 5. Основные технические характеристики

графических и центральных процессоров

Основные характеристики графических процессоров, задействованных в

экспериментах

GeForce GT

520M

GeForce GT 240 GeForce

GTX 560

GeForce

9600

CUDA Cores 48 96 336 64

Тактовая частота

процессора (МГц)

1480 1340 1620 1500

Производительность,

Гфлопс

142,08 385,9 1088,6 396

Энергопотребление,

Вт

12 69 150 84

Основные характеристики центральных процессоров, задействованных в

экспериментах

Intel Core

i5

AMD

Phenom

(tm)-II

Intel Core 2

Duo E7500

Тактовая частота

процессора (МГц)

2,3 2,8 2.93

Производительность,

Гфлопс

99.2 31.65 23.464

Энергопотребление,

Вт

95 95 более 55 Вт