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

Применение технологии CUDA для ускорения расчета цен опционов европейского типа сеточным методом Текст научной статьи по специальности «Математика»

CC BY
414
79
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
CUDA / GPU ОБЩЕГО НАЗНАЧЕНИЯ / ПАРАЛЛЕЛЬНАЯ ЦИКЛИЧЕСКАЯ РЕДУКЦИЯ / PARALLEL CYCLIC REDUCTION / АЛГОРИТМИЧЕСКАЯ ТОРГОВЛЯ / ALGORITHMIC TRADING / ОПЦИОН / OPTION / СХЕМА КРАНКА—НИКОЛСОНА / CRANK—NICOLSON SCHEME / GPGPU / PCR / HIGH-FREQUENCY TRADING

Аннотация научной статьи по математике, автор научной работы — Косяков Михаил Сергеевич, Шинкарук Дмитрий Николаевич, Торопов Александр Владимирович, Шполянский Юрий Александрович

Дифференциальное уравнение Блэка—Шоулза решено численно по схеме Кранка—Николсона на графическом процессоре с применением технологии CUDA. Использование видеокарты NVIDIA GTX 580 позволило достичь ускорения более чем в 20 раз по сравнению с однопоточным расчетом на процессоре Intel Core i7 3,4 ГГц и в 2—3 раза по сравнению с наилучшими показателями многопоточной версии, основанной на технологии GCD на процессорах 2x Intel Xeon 3,06 ГГц с 24 ядрами. Результаты получены для нагрузочных параметров, представляющих практический интерес в системах алгоритмической торговли.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Косяков Михаил Сергеевич, Шинкарук Дмитрий Николаевич, Торопов Александр Владимирович, Шполянский Юрий Александрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Application of CUDA technique to quicken calculation of EUROPEAN option prices by finite-difference method

Crank—Nicolson scheme for Black–Scholes partial differential equation is fully implemented on graphics processor using CUDA technique. The developed code on GPU NVIDIA GTX 580 works more than 20 times faster than the single-threaded calculation on CPU Intel Core i7 3.4 GHz, and 2—3 times faster than the best results obtained with multi-thread version based on GCD technique on CPUs 2 x Intel Xeon 3.06 GHz with 24 cores in conditions typical for high-frequency algorithmic trading systems.

Текст научной работы на тему «Применение технологии CUDA для ускорения расчета цен опционов европейского типа сеточным методом»

3. Bessmertny I. A. Knowledge Visualization Based on Semantic Networks // Programming and Computer Software. 2010. Vol. 36, N 4. P. 197—204.

4. Berners-Lee T., Hendler J., Lassila O. The Semantic Web // Scientific American Magazine. 2001. May. Игорь Александрович Бессмертный —

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

Сведения об авторе

канд. техн. наук, доцент; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кафедра вычислительной техники; E-mail: [email protected]

Поступила в редакцию 08.02.12 г.

УДК 519.688

М. С. Косяков, Д. Н. Шинкарук, А. В. Торопов, Ю. А. Шполянский

ПРИМЕНЕНИЕ ТЕХНОЛОГИИ CUDA ДЛЯ УСКОРЕНИЯ РАСЧЕТА ЦЕН ОПЦИОНОВ ЕВРОПЕЙСКОГО ТИПА

СЕТОЧНЫМ МЕТОДОМ

Дифференциальное уравнение Блэка—Шоулза решено численно по схеме Кранка—Николсона на графическом процессоре с применением технологии CUDA. Использование видеокарты NVIDIA GTX 580 позволило достичь ускорения более чем в 20 раз по сравнению с однопоточным расчетом на процессоре Intel Core i7 3,4 ГГц и в 2—3 раза по сравнению с наилучшими показателями многопоточной версии, основанной на технологии GCD на процессорах 2x Intel Xeon 3,06 ГГц с 24 ядрами. Результаты получены для нагрузочных параметров, представляющих практический интерес в системах алгоритмической торговли.

Ключевые слова: CUDA, GPU общего назначения, параллельная циклическая редукция, алгоритмическая торговля, опцион, схема Кранка—Николсона.

Введение. Одной из важнейших задач систем алгоритмической торговли, позволяющих совершать торговые операции на электронных финансовых рынках с помощью специализированных компьютерных систем, является расчет цен опционов в режиме реального времени с учетом постоянного изменения их параметров. Точные аналитические решения доступны не для всех типов опционов и вариантов постановки задач. Поэтому для теоретического ценообразования широко применяются численные методы [1]. В последние годы активно исследуются возможности применения современных видеокарт с мощными графическими процессорами (ГП) для ускорения расчетов [2—5]. В большинстве работ рассматриваются численные методы, обладающие естественным параллелизмом — метод Монте-Карло, биномиальная модель или явные разностные схемы [2, 3].

Для ускорения расчета цен опционов с использованием неявной схемы Кранка—Николсона второго порядка точности в настоящей работе применена технология CUDA-вычислений (Compute Unified Device Architecture) на ГП, разработанном компанией NVIDIA. Алгоритмы реализованы в виде CUDA-программы, исполняемой ГП видеокарты, а также в виде одно- и многопоточного приложения для выполнения центральным процессором (ЦП). Проведено сравнение времени вычислений и погрешности получаемых на современном оборудовании результатов в условиях, характерных для систем алгоритмической торговли. Выявлены условия и способы оптимальной организации вычислительного процесса.

Математическая постановка задачи. Модель Блэка—Шоулза — классическая для расчета цен опционов. Зависимость цены опциона V(S, t) от цены базового актива S и времени t в этой модели описывается дифференциальным уравнением [1]:

dV 1 2.2 д2V vdV тг п

— + -о2 S —т + rS--rV = 0, (1)

dt 2 dS1 dS

где r — безрисковая процентная ставка и о — волатильность.

В настоящей работе уравнение (1) решается численно методом конечных разностей по схеме Кранка—Николсона. Рассматривается диапазон цен базового актива от нижней Smin до верхней Smax границы, для интервала времени от даты исполнения t = T до текущего момента t = 0. Введем равномерную сетку значений цены базового актива Si = Smjn + i AS,

i = 0,...,I, с шагом AS = (Smax -Smjn)/1, а также времени tk = T-k At, k = 0,..., K, с шагом At = T/K , где I и K — количество шагов по S и t соответственно. В неявной по времени схеме Кранка—Николсона соотношение (1) аппроксимируется по S и t со вторым порядком точности [1]. На временных шагах решаются системы линейных алгебраических уравнений (СЛАУ) с трехдиагональной матрицей. Коэффициенты матрицы рассчитываются один раз, поскольку r и о — константы.

Для полноты математической постановки задачи необходимо установить начальное распределение V (S, T) = P( S), где P( S) — функция выплаты опциона, а также граничные условия. В работе рассмотрение ведется на примере распространенных европейских put-опционов с ценой исполнения X > 0 :

P (S) = max {[X - S(T)], 0}.

Для put-опциона Smjn = 0, Smax = да . Граничные условия имеют вид: V(S mm, t) = X exp[-r (T - t)] , V(Smax, t) = 0.

В разностной схеме используется значение Smax = 3X, так как V(3X, t) « 0 при о< 0,8 .

СЛАУ с трехдиагональной матрицей на ЦП решалась традиционным методом прогонки [6]. Алгоритм этого метода не может быть эффективно распараллелен для архитектуры CUDA. Поэтому для ГП применен метод параллельной циклической редукции (ПЦР), также использован ряд идей по ускорению вычислений, предложенных нами ранее в работе [7].

В алгоритмической торговле опционы естественным образом объединяются в группы по общему базовому активу. Опционы внутри группы, как правило, имеют различные значения параметров X, T и о. В результате решения задачи получают набор значений V(S0,0) для всей группы опционов при текущей цене актива S = S0 .

Архитектурные особенности реализации алгоритмов. Алгоритмы реализованы в виде CUDA-программы для выполнения на ГП видеокарты, а также в виде одно- и многопоточного приложения для выполнения на ЦП. Многопоточная версия построена с использованием технологии GCD (Grand Central Dispatch) [8]. Она позволяет назначать задачи в приложении, которые в зависимости от загруженности системы автоматически распределяются по потокам для параллельного выполнения. В настоящей работе под одной задачей GCD понимается расчет группы опционов с общим базовым активом.

Технология CUDA использует ГП в роли массово-параллельного сопроцессора к ЦП [9]. В задачи ЦП входит подготовка данных в оперативной памяти ЦП, их передача в память видеокарты для последующей обработки ГП и возвращение результатов. Код массово-параллельных вычислений — ядро CUDA-программы (kernel), выполняется ГП как набор многих одновременно работающих потоков (threads в терминах CUDA) [9].

В нашей реализации алгоритма ПЦР каждый поток занимается расчетом значения цены опциона в одном узле сетки St, взаимодействуя с другими потоками через разделяемую память [5]. Потоки, выполняющие расчет одного опциона, объединены нами в блок, размер которого совпадает с количеством узлов сетки, а количество блоков определяется числом опционов в одной группе. Расчет каждой группы опционов организован в специальные потоки команд (streams), которые выполняются одним ГП последовательно с использованием асинхронной передачи данных из оперативной памяти ЦП в память видеокарты и обратно. Доступ к значениям параметров опционов в оперативной памяти ЦП из ядра CUDA-программы осуществляется через механизм отображаемой памяти [10].

Операции с вещественными числами двойной точности (тип double) ГП исполняет заметно медленнее, чем операции с числами одинарной точности (тип float). Код ядра CUDA-программы разрабатывался с использованием типа float в отличие от реализованных нами для ЦП алгоритмов (тип double). Поэтому в работе изучено влияние использования типа float на погрешность итогового результата вычислений.

Для анализа реализованных в работе алгоритмов расчета использованы экспериментальные стенды (табл. 1).

Таблица 1

Характеристики экспериментальных стендов

Модель SunFire x4170 M2 ПК Core i7

ЦП 2 x Xeon X5675, 3,06 ГГц, 24 ядра Core i7-2600, 3,4 ГГц, 8 ядер

Объем ОЗУ 49 ГБ 4 ГБ

ОС Solaris 10 x86_64 U10 Ubuntu 11.10 x86_64

Многопоточная версия приложения, использующая технологии GCD, запускалась на ЦП сервера SunFire x4170 M2. Персональный компьютер (ПК) Core i7 использовался для запуска однопоточного приложения на ЦП и программы с применением CUDA. Параметры видеокарты NVIDIA GTX 580, используемой в экспериментах: 16 мультипроцессоров, 32 ядра в мультипроцессоре, частота процессора — 1,564 ГГц, частота памяти — 2 ГГц, объем памяти — 1536 МБ, разрядность шины видеопамяти — 384 бит.

В работе измерялось общее время т выполнения расчетов для всех M групп опционов. Для CUDA-программы значение т включало также время передачи данных. Для многопоточного приложения измерялось время расчета в режиме холодного старта тс (cold) с учетом всех накладных расходов на запуск потоков и время расчета в режиме под нагрузкой Th (hot), определяемое как минимальное время расчета в серии последовательных экспериментов в работающем приложении.

Результаты были получены для европейских put-опционов с параметрами: X = 100 у.е., о = 25 % в год, r = 5 % в год, T = 0,3 года. Если не оговорено отдельно, применялись следующие настройки сетки: шаг по времени At = 0,02 года, количество шагов по цене I = 150.

Оптимизация CUDA-программы. Объем регистровой и разделяемой памяти видеокарты ограничен, это влияет на число одновременно запущенных на ГП потоков выполнения, что определяет общую производительность системы.

Предложенный алгоритм требует относительно небольшого объема разделяемой памяти, поэтому основное внимание необходимо уделять работе с регистровой памятью. Был предпринят ряд мер для уменьшения количества регистров, используемых каждым потоком выполнения:

— объединение функций программы для уменьшения числа локальных переменных;

— применение спецификатора volatile, что в некоторых случаях позволяет уменьшить количество используемых регистров;

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

— использование библиотеки быстрой математики (use_fast_math). Перечисленные меры по реорганизации ядра CUDA-программы, используемые далее, позволили сократить общее время выполнения расчетов т более чем на 20 %.

Анализ времени вычислений. В табл. 2 приведены значения времени расчета одной группы опционов в разных реализациях. Для многопоточного GCD-приложения в режиме холодного старта тс ~ Th, поскольку параллелизм в GCD реализован на уровне групп опционов, т.е. расчет одной группы рассматривается как одна задача. Преимущество однопоточно-го приложения (ц), запущенного на ПК Core i7, по сравнению с GCD здесь обусловлено разницей тактовых частот процессоров экспериментальных стендов (3,4 ГГц у Core i7 против 3,06 ГГц у Xeon X5675).

Таблица 2

Сравнение времени расчета одной _ группы опционов

N

1

5 10 20 60 200 500 800 1000

т, мс

0,143 0,132 0,137 0,143 0,179 0,474 0,979 1,501 1,871

т1, мс

0,071 0,265 0,575 1,132 3,475 10,602 22,746 41,021 51,822

т~ мс

0,104

0,353

0,663

1,277

3,826

12,419

30,987

49,568

62,053

Tfe мс

0,062 0,309 0,619 1,238 3,713 12,378 30,940 49,519 61,88

т / т

0,497 2,007 4,193 7,939 19,413 22,381 25,731 27,323 27,686

т / т

0,729 2,673 4,835 8,956 21,374 26,217 31,663 33,016 33,151

Т / Th

0,434 2,34 4,514 8,682 20,743 26,131 31,615 32,984 33,059

Из табл. 2 видно, что видеокарта NVIDIA GTX 580 позволяет достичь более чем 20-кратного преимущества при одновременной обработке нескольких опционов в группе (N > 60 для данного случая).

Рассмотрим результаты исследований, полученных для нескольких групп опционов. На рис. 1 представлен график зависимости времени т (1), тс (2), Th (3), т (4) обработки M = 10 групп опционов от числа N опционов в группе.

Рис. 1

Как видно из рис. 1, производительность многопоточного приложения ОСБ под нагрузкой значительно выше производительности однопоточного. Несмотря на это быстродействие СОВА-программы в 2,5—3 раза выше по сравнению с ОСБ в нагруженном состоянии и более чем в 9 раз по сравнению с ОСБ в режиме холодного старта (рассчитан важный для задач алгоритмической торговли случай N > 100). При увеличении N выигрыш в производительности СЦОА-программы возрастает.

При увеличении количества групп M возрастает число операций передачи данных. Отсюда следует, что использование технологии СОВА должно давать большее преимущество при расчете малого числа групп большего размера. Для ОСБ, наоборот, с ростом M увеличивается количество используемых потоков, что повышает производительность.

На рис. 2 продемонстрировано преимущество СПОА-программы по сравнению с одно-и многопоточным приложением на ЦП. Точки кривой обозначают границы, ниже которых

использование соответствующей реализации для ЦП предпочтительней применения CUDA (GCD Hot (1), GCD Gold (2), Core i7 (3)).

N

20 15 10

10

50

100

500

1000 М

20 40

Рис. 2

Из рис. 2 видно, что при N> 20 CUDA-приложение выигрывает у GCD под нагрузкой для любого количества групп M.

Влияние особенностей работы графического процессора на время вычислений.

В ходе экспериментов были отмечены некоторые особенности ГП и их влияние на время вычислений. Из-за архитектурно-функциональных особенностей CUDA потоки в блоке исполняются не отдельно, а группами по 32 потока (warp в терминах CUDA). Количество одновременно исполняемых блоков не может превышать числа мультипроцессоров видеокарты (16 для NVIDIA GTX 580), поэтому наблюдается скачкообразный рост времени вычислений при увеличении М и N. На рис. 3 представлено время расчета 10 (1), 50 (2) и 100 (3) групп опционов при различном размере групп. На рис. 4 приведена зависимости времени расчета одного опциона в от числа узлов сетки /=1+1.

Т, MC

50 40 30 20

10

3

pD

Л

т, мс

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

2,5

2,1

1,7

0 32 6 4 96 128 Рис 160 19 3 2. 24 256 288

Ju-

Г--- А—

1

128

192

256

320 Рис. 4

384

448

512 I'

2

5

3

0

2

1

Анализ погрешностей вычислений. Нами проанализированы погрешности численных алгоритмов, реализованных для разных архитектур. Анализ возможен благодаря наличию аналитического решения уравнения (1) для опционов европейского типа в отсутствие дискретных дивидендных выплат по базовому активу за время „жизни" опциона. На рис. 5 приведены графики абсолютной погрешности (ЦП тип double (1), ЦП тип float (2), ГП тип float, ГП тип use_fast_math (3)), складывающейся из ошибки аппроксимации уравнения (1) схемой Кранка—Николсона и погрешности математических вычислений вещественных чисел с плавающей точкой. Отдельно рассматривался случай использования библиотеки быстрой математики, обладающей меньшей по сравнению со стандартной библиотекой точностью вычисления сложных функций для чисел одинарной точности (тип float) [10].

д

1,5-10-2 1,210-2 9-10-3 6-10-3 / 72

310-3 мк

0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 S

Рис. 5

Рис. 5 составлен для наиболее малого шага по времени (At = 0,001) и соответственно большого числа шагов (K = 300), в этом случае наблюдается максимальная погрешность вычислений. Значение погрешности, вносимой использованием float (область малых значений S) в 5 раз меньше максимальной погрешности схемы Кранка—Николсона в области S ~ X = 100 (относительная ошибка при этом порядка 0,3 %). Библиотека быстрой математики не снижает точность расчетов.

Выводы. В работе технология CUDA применена для ускорения расчета цен опционов европейского типа методом Кранка—Николсона. Соответствующие алгоритмы реализованы в виде CUDA-программы, исполняемой графическим процессором видеокарты, а также в виде одно- и многопоточного приложения, исполняемого ЦП. Многопоточная версия построена с использованием технологии GCD. Выявлены и сформулированы основные направления оптимизации ядра CUDA-программы, позволившие сократить время расчетов более чем на 20 %.

Отмечено влияние архитектурно-функциональных особенностей ГП на время вычислений. Сформулированы рекомендации по выбору параметров расчета цен опционов. Сделан вывод о допустимости использования вещественных чисел с одинарной точностью. Использование библиотеки быстрой математики ускоряет вычисления, но не приводит к увеличению погрешности.

Разработанная CUDA-программа, исполняемая на видеокарте NVIDIA GTX 580, позволяет достичь более чем 20-кратного преимущества перед однопоточной реализацией соответствующего алгоритма на современном ЦП Intel Core i7 3,4 ГГц. Быстродействие CUDA-программы по сравнению многопоточной реализацией выше в 2,5—3 раза с GCD в нагруженном состоянии и более чем 9 раз по сравнению с GCD в режиме холодного старта для практически важного для алгоритмической торговли количества опционов в группе. При увеличении числа опционов в группе выигрыш в производительности CUDA-программы возрастает.

СПИСОК ЛИТЕРАТУРЫ

1. WilmottP. Paul Wilmott on Quantitative Finance. Wiley, 2006. 1380 р.

2. Monte Carlo Option Pricing [Электронный ресурс]: <http://developer.nvidia.com/cuda-cc-sdk-code-samples>.

3. Binomial Option Pricing [Электронный ресурс]: <http://developer.nvidia.com/cuda-cc-sdk-code-samples>.

4. Lyuu Y. D., Wen K. W., Wu Y. C. Performance of GPU for Pricing Financial Derivatives Convertible Bonds // To appear in J. of Information Science and Engineering [Электронный ресурс]: <http://www.iis.sinica.edu.tw/page/ jise/FILE/AcceptedList/110/110444-P0G.pdf>.

5. Egloff D. High Performance Finite Difference PDE Solvers on GPUs. Technical report. QuantAlea GmbH. February. 2010.

6. Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. М.: Бином. Лаборатория знаний, 2003. 632 с.

7. Шинкарук Д. Н., Шполянский Ю. А., Косяков М. С. Анализ эффективности применения технологии CUDA для решения систем линейных уравнений с трехдиагональными матрицами в задачах расчета цен опционов // Наст. выпуск. С. 20—25.

8. Grand Central Dispatch (GCD) Reference. Apple Inc. 2011 [Электронный ресурс]: <http://developer.apple.com/library/ios/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/re ference.html>.

9. Боресков А. В., Харламов А. А. Основы работы с технологией CUDA. М.: ДМК Пресс, 2010. 232 с.

10. NVIDIA CUDA C Programming Guide. Version 4.2. 2011 [Электронный ресурс]: <http://developer.nvidia.com/ nvidia-gpu-computing-documentation>.

Сведения об авторах

Михаил Сергеевич Косяков — канд. техн. наук; Санкт-Петербургский национальный исследова-

тельский университет информационных технологий, механики и оптики, кафедра вычислительной техники; E-mail: [email protected] Дмитрий Николаевич Шинкарук — аспирант; Санкт-Петербургский национальный исследовательский

университет информационных технологий, механики и оптики, кафедра вычислительной техники; E-mail: [email protected] Александр Владимирович Торопов — аспирант; Санкт-Петербургский национальный исследовательский

университет информационных технологий, механики и оптики, кафедра компьютерных технологий; Тбрикс АБ; инженер-программист; E-mail: [email protected] Юрий Александрович Шполянский — д-р физ.-мат. наук, доцент; Санкт-Петербургский национальный

исследовательский университет информационных технологий, механики и оптики, кафедра фотоники и оптоинформатики; Тбрикс АБ; ведущий математик; E-mail: [email protected]

Рекомендована кафедрой Поступила в редакцию

вычислительной техники 08.02.12 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.