<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">izvestswsu</journal-id><journal-title-group><journal-title xml:lang="ru">Известия Юго-Западного государственного университета</journal-title><trans-title-group xml:lang="en"><trans-title>Proceedings of the Southwest State University</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">2223-1560</issn><issn pub-type="epub">2686-6757</issn><publisher><publisher-name>ЮЗГУ</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.21869/2223-1560-2017-21-5-06-15</article-id><article-id custom-type="elpub" pub-id-type="custom">izvestswsu-239</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Технические науки</subject></subj-group></article-categories><title-group><article-title>АЛГОРИТМИЧЕСКАЯ ОПТИМИЗАЦИЯ ПРОГРАММНОЙ РЕАЛИЗАЦИИ АЛГОРИТМОВ УМНОЖЕНИЯ ПЛОТНЫХ ВЕЩЕСТВЕННЫХ МАТРИЦ НА ГРАФИЧЕСКИХ ПРОЦЕССОРАХ С ПОДДЕРЖКОЙ ТЕХНОЛОГИИ OPENGL</article-title><trans-title-group xml:lang="en"><trans-title>ALGORITHMIC OPTIMIZATION OF SOFTWARE IMPLEMENTATION OF ALGORITHMS FOR MULTIPLYING DENSE REAL MATRICES ON GRAPHICS PROCESSORS WITH OPENGL TECHNOLOGY SUPPORT</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Затолокин</surname><given-names>Ю. А.</given-names></name><name name-style="western" xml:lang="en"><surname>Zatolokin</surname><given-names>Y. A.</given-names></name></name-alternatives><email xlink:type="simple">yuzato@list.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Ватутин</surname><given-names>Э. И.</given-names></name><name name-style="western" xml:lang="en"><surname>Vatutin</surname><given-names>E. I.</given-names></name></name-alternatives><email xlink:type="simple">evatutin@rambler.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Титов</surname><given-names>В. С.</given-names></name><name name-style="western" xml:lang="en"><surname>Titov</surname><given-names>V. S.</given-names></name></name-alternatives><email xlink:type="simple">titov-kstu@rambler.ru</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>ФГБОУ ВО «Юго-Западный государственный университет»</institution></aff><aff xml:lang="en"><institution>Southwest State University</institution></aff></aff-alternatives><pub-date pub-type="collection"><year>2017</year></pub-date><pub-date pub-type="epub"><day>28</day><month>10</month><year>2017</year></pub-date><volume>21</volume><issue>5</issue><fpage>6</fpage><lpage>15</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Затолокин Ю.А., Ватутин Э.И., Титов В.С., 2017</copyright-statement><copyright-year>2017</copyright-year><copyright-holder xml:lang="ru">Затолокин Ю.А., Ватутин Э.И., Титов В.С.</copyright-holder><copyright-holder xml:lang="en">Zatolokin Y.A., Vatutin E.I., Titov V.S.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://izvestswsu.elpub.ru/jour/article/view/239">https://izvestswsu.elpub.ru/jour/article/view/239</self-uri><abstract><p>Приведено описание подходов к выполнению операции умножения плотных вещественных матриц одинарной точности на видеокартах с поддержкой технологии OpenCL. Произведен обзор известных подходов к алгоритмической оптимизации процедуры умножения матриц и оценка возможности их исполь-зования с учетом особенностей организации и программирования для GPU. Сделан сравнительный анализ производительности выполняемых действий без характерных для GPU оптимизаций и с оптимизациями, который показал, что вычисления без оптимизации работы с глобальной памятью GPU имеют низкую производительность обработки данных. Оптимизация распределения данных в глобальной и локальной памяти GPU позволяет многократно сократить время вычисления и увеличить реальную производи-тельность. Для сравнения производительности разработанных программных реализаций для технологий OpenCL и CUDA выполнены идентичные расчёты на одинаковых GPU, которые показали более высокую реальную производительность при использовании CUDA-ядер. Значения производительности оценивались для всех реализаций процедуры умножения матриц. Сравнение полученных результатов показывает, что наи-более эффективным подходом среди реализованных является блочное умножение, при котором произво-дится разделение исходной матрицы на подматрицы (блоки), размещаемые в локальной памяти GPU, что позволяет экономить обращения к глобальной памяти и максимально повторно использовать данные в локальной памяти. Результаты измерения реальной достигнутой производительности на GPU NVidia GeForce GTX 960M показали величину 275,3 GFLOP/s, что приблизительно на 10-20% меньше аналогичных результатов, получаемых при аналогичных условиях вычислительного эксперимента для той же GPU с использованием инструментария CUDA.</p></abstract><trans-abstract xml:lang="en"><p>In the article was given statement of a problem of matrix multiplication. Is is show that desired problem can be simpl formulated but for its solving may be required both heuristic methods and set of algorithmic modifications relating to algorithmic and high-level software optimization taking into account the particular problem and allow to increase the multiplication performance. These include: a comparative analysis of the performance of the actions performed without GPU-specific optimizations and with optimizations, which showed that computations without optimizing the work with global GPU memory have low processing performance. Optimizing data distribution in global and local memory The GPU allows you to reuse the calculation time and increase real performance. To compare the performance of the developed software implementations for OpenGL and CUDA technologies, identical calculations on identical GPUs were performed, which showed higher real performance when using CUDA cores. Specific values of generation performance measured for multi-threaded software implementation on GPU are given for all of described optimizations. It is shown that the most effective approach is based on the method we can get much more performance by technique of caching sub-blocks of the matrices (tiles) in the GPU's on-chip local memory, that with specialized software implementation is provide the performance of 275,3 GFLOP/s for GPU GeForce GTX 960M.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>умножение матриц</kwd><kwd>алгоритмическая оптимизация</kwd><kwd>OpenGL</kwd><kwd>CUDA</kwd><kwd>Multiplication of matrices</kwd><kwd>algorithmic optimization</kwd><kwd>OpenGL</kwd><kwd>CUDA</kwd><kwd>algorithmic and high-level software optimization</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Ватутин Э.И., Зотов И.В. Построение матрицы отношений в задаче оптимального разбиения параллельных уп-равляющих алгоритмов // Известия Курского государственного технического университета. 2004. № 2. С. 85-89.</mixed-citation><mixed-citation xml:lang="en">Ватутин Э.И., Зотов И.В. Построение матрицы отношений в задаче оптимального разбиения параллельных уп-равляющих алгоритмов // Известия Курского государственного технического университета. 2004. № 2. С. 85-89.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Ватутин Э.И., Мартынов И.А., Титов В.С. Оценка реальной производительности современных видеокарт с поддержкой технологии CUDA в задаче умножения матриц // Известия Юго-За-падного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2014. № 2. С. 8-17.</mixed-citation><mixed-citation xml:lang="en">Ватутин Э.И., Мартынов И.А., Титов В.С. Оценка реальной производительности современных видеокарт с поддержкой технологии CUDA в задаче умножения матриц // Известия Юго-За-падного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2014. № 2. С. 8-17.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">OpenGL. URL: https://ru.wikipedia.org/ wiki/ OpenGL (дата обращения: 01.02.2017).</mixed-citation><mixed-citation xml:lang="en">OpenGL. URL: https://ru.wikipedia.org/ wiki/ OpenGL (дата обращения: 01.02.2017).</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">APP SDK - A Complete Development Platform // AMD: website. URL: http: // developer.amd.com/tools-and-sdks/ OpenGL- zone/amd-accelerated-parallel-pro-cessing-app-sdk/ (дата обращения: 01.02.2017).</mixed-citation><mixed-citation xml:lang="en">APP SDK - A Complete Development Platform // AMD: website. URL: http: // developer.amd.com/tools-and-sdks/ OpenGL- zone/amd-accelerated-parallel-pro-cessing-app-sdk/ (дата обращения: 01.02.2017).</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">CUDA АЛЬМАНАХ / Май 2015 г. 5 мая 2015. NVIDIA: сайт. URL: http: //www.nvidia.ru/docs/IO/141194/ CUDA-альманах-may-2015.pdf (дата обращения 01.02.2017).</mixed-citation><mixed-citation xml:lang="en">CUDA АЛЬМАНАХ / Май 2015 г. 5 мая 2015. NVIDIA: сайт. URL: http: //www.nvidia.ru/docs/IO/141194/ CUDA-альманах-may-2015.pdf (дата обращения 01.02.2017).</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Ватутин Э.И., Мартынов И.А., Титов В.С. Оценка реальной производительности современных процессоров в задаче умножения матриц для однопоточной программной реализации // Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2013. № 4. С. 11-20.</mixed-citation><mixed-citation xml:lang="en">Ватутин Э.И., Мартынов И.А., Титов В.С. Оценка реальной производительности современных процессоров в задаче умножения матриц для однопоточной программной реализации // Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2013. № 4. С. 11-20.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Казеннов А.М. Основы технологии CUDA и OpenGL // НОЦ СКТ МФТИ: сайт. URL: http://hpc.mipt.ru/ wp-content/ uploads/ 2013/11/ CUDA+ OpenGL.pdf (дата обращения 01.02.2017).</mixed-citation><mixed-citation xml:lang="en">Казеннов А.М. Основы технологии CUDA и OpenGL // НОЦ СКТ МФТИ: сайт. URL: http://hpc.mipt.ru/ wp-content/ uploads/ 2013/11/ CUDA+ OpenGL.pdf (дата обращения 01.02.2017).</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
