<?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">vdgtu</journal-id><journal-title-group><journal-title xml:lang="ru">Вестник Дагестанского государственного технического университета. Технические науки</journal-title><trans-title-group xml:lang="en"><trans-title>Herald of Dagestan State Technical University. Technical Sciences</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">2073-6185</issn><issn pub-type="epub">2542-095X</issn><publisher><publisher-name>Daghestan State Technical University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.21822/2073-6185-2023-50-4-59-74</article-id><article-id custom-type="elpub" pub-id-type="custom">vdgtu-1392</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><subj-group subj-group-type="section-heading" xml:lang="en"><subject>INFORMATION TECHNOLOGY AND TELECOMMUNICATIONS</subject></subj-group></article-categories><title-group><article-title>Исследование эффективности методов оптимизации программ для параллельных вычислительных систем с GPU</article-title><trans-title-group xml:lang="en"><trans-title>Investigation of the Effectiveness of Programs Optimization Methods for Parallel Computing Systems with GPU</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>Bezruchenko</surname><given-names>A. Yu.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Безрученко Алексей Юрьевич – аспирант.</p><p>400005, Волгоград, проспект им. Ленина, 28</p></bio><bio xml:lang="en"><p>Aleksei Yu. Bezruchenko - Postgraduate Student.</p><p>28 Lenin Ave., Volgograd 400005</p></bio><email xlink:type="simple">alexei.bezruchenko@yandex.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>Egunov</surname><given-names>V. A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Егунов Виталий Алексеевич - кандидат технических наук, доцент, кафедра ЭВМ и систем.</p><p>400005, Волгоград, проспект им. Ленина, 28</p></bio><bio xml:lang="en"><p>Vitaly A. Egunov - Cand. Sci. (Eng.), Assoc. Prof., Computers and Systems Department.</p><p>28 Lenin Ave., Volgograd 400005</p></bio><email xlink:type="simple">vegunov@mail.ru</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Волгоградский государственный технический университет</institution><country>Россия</country></aff><aff xml:lang="en"><institution>Volgograd State Technical University</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2023</year></pub-date><pub-date pub-type="epub"><day>21</day><month>01</month><year>2024</year></pub-date><volume>50</volume><issue>4</issue><fpage>59</fpage><lpage>74</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Безрученко А.Ю., Егунов В.А., 2024</copyright-statement><copyright-year>2024</copyright-year><copyright-holder xml:lang="ru">Безрученко А.Ю., Егунов В.А.</copyright-holder><copyright-holder xml:lang="en">Bezruchenko A.Y., Egunov V.A.</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://vestnik.dgtu.ru/jour/article/view/1392">https://vestnik.dgtu.ru/jour/article/view/1392</self-uri><abstract><p>Цель. В работе определена актуальность задачи повышения эффективности программного обеспечения, под которой в данном случае понимается сокращение времени работы проектируемого программного обеспечения в процессе решения вычислительно-сложных задач. Метод. В качестве примера подобной задачи используется выполнение сингулярного разложения методом Якоби. Данная задача находит свое применение в различных областях от обработки сигналов и изображений до систем искусственного интеллекта. В качестве целевой вычислительной архитектуры выбраны параллельные вычислительные системы, оснащенные GPU. В работе рассматриваются методы повышения эффективности программного обеспечения для целевых вычислительных архитектур с использованием CUDA. Результат. Описаны существующие аналитические модели оценки эффективности компьютерных программ. Рассматривается влияние различных оптимизаций, таких как оптимизация пересылок данных, использования системы unified memory, количества потоков, паттерна доступа к памяти и ряда других на эффективность получаемого программного обеспечения. Описывается процесс оптимизации программной реализации сингулярного разложения, приводятся результаты вычислительных экспериментов. Вывод. При увеличении числа потоков производительность может вырасти больше, чем количество потоков. Влияние паттерна доступа к памяти: при оптимальной последовательности доступа к памяти производительность заметно повышается. Настройка доли памяти, используемой для L1 кеша и для shared memory не оказывает существенного влияния на производительность.</p></abstract><trans-abstract xml:lang="en"><p>Objective. The paper defines the relevance of the task of increasing the efficiency of software, which in this case is understood as reducing the operating time of the designed software in the process of solving computationally complex problems. Method. As an example of such a task, the implementation of the singular value decomposition by the Jacobi method is used. This task finds its application in various fields from signal and image processing to artificial intelligence systems. Parallel computing systems equipped with GPU are chosen as the target computing architecture. The paper discusses methods for improving the efficiency of software for target computing architectures using CUDA. Result. The existing analytical models for evaluating the effectiveness of computer programs are described. The influence of various optimizations, such as optimization of data transfers, use of the unified memory system, the number of threads, memory access patterns, and a number of others on the efficiency of the resulting software is considered. The process of optimizing the SVD implementation program is described, the results of computational experiments are presented. Conclusion. As the number of threads increases, performance may increase more than the number of threads. Impact of memory access pattern: When the memory access sequence is optimal, performance improves noticeably. Adjusting the share of memory used for L1 cache and shared memory does not have a significant impact on performance</p></trans-abstract><kwd-group xml:lang="ru"><kwd>эффективность программ</kwd><kwd>оценка эффективности</kwd><kwd>производительность</kwd><kwd>многопоточность</kwd><kwd>SVD</kwd><kwd>CUDA</kwd><kwd>GPGPU</kwd><kwd>NVidia</kwd><kwd>unified memory</kwd></kwd-group><kwd-group xml:lang="en"><kwd>program efficiency</kwd><kwd>efficiency evaluation</kwd><kwd>performance</kwd><kwd>multithreading</kwd><kwd>SVD</kwd><kwd>CUDA</kwd><kwd>GPGPU</kwd><kwd>NVidia</kwd><kwd>unified memory</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">A. G. Akritas and G. I. Malaschonok, “Applications of singular-value decomposition (SVD),” Mathematics and Computers in Simulation, vol. 67, pp. 15-31, 2004</mixed-citation><mixed-citation xml:lang="en">Akritas A. G. and G. I. Malaschonok, “Applications of singular-value decomposition (SVD),” Mathematics and Computers in Simulation, 2004; 67:15-31,</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Natarajan, Venkatanathan. “Singular Spectral Analysis (Ssa) of Solid Earth Tide (Set)-Implications to Identify Earthquake Precursors and Earthquakes in the Himalayan Region (M≥ 6) During 1991-2021.” (2022).</mixed-citation><mixed-citation xml:lang="en">Natarajan, Venkatanathan. “Singular Spectral Analysis (Ssa) of Solid Earth Tide (Set)-Implications to Identify Earthquake Precursors and Earthquakes in the Himalayan Region (M≥ 6) During 1991-2021.” (2022).</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Ahmadi-Asl S. et al. Randomized algorithms for computation of Tucker decomposition and higher order SVD (HOSVD), 2021, IEEE Access, vol. 9, pp. 28684-28706</mixed-citation><mixed-citation xml:lang="en">Ahmadi-Asl S. et al. Randomized algorithms for computation of Tucker decomposition and higher order SVD (HOSVD), 2021; 9: 28684-28706</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Wall M. E., Rechtsteiner A., Rocha L. M. Singular value decomposition and principal component analysis //A practical approach to microarray data analysis. – Boston, MA : Springer US, 2003. – С. 91-109.</mixed-citation><mixed-citation xml:lang="en">Wall M. E., Rechtsteiner A., Rocha L. M. Singular value decomposition and principal component analysis. A practical approach to microarray data analysis. – Boston, MA : Springer US, 2003; 91-109.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Hammarling S. The singular value decomposition in multivariate statistics //ACM Signum Newsletter. – 1985. – Т. 20. – №. 3. – С. 2-25.</mixed-citation><mixed-citation xml:lang="en">Hammarling S. The singular value decomposition in multivariate statistics.ACM Signum Newsletter. 1985;. 20(3): 2-25.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Amey J. L. et al. Neural network interpretation using descrambler groups //Proceedings of the National Academy of Sciences. – 2021. – Т. 118. – №. 5. – С. e2016917118.</mixed-citation><mixed-citation xml:lang="en">Amey J. L. et al. Neural network interpretation using descrambler groups. Proceedings of the National Academy of Sciences. 2021; 118 (5):2016917118.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">S. Williams, A. Waterman, and D. Patterson, “Roofline: An Insightful Visual Performance Model for Multicore Architectures,” Comm. ACM, vol. 52, no. 4, pp. 65-76, 2009</mixed-citation><mixed-citation xml:lang="en">S. Williams, A. Waterman, and D. Patterson, “Roofline: An Insightful Visual Performance Model for Multicore Architectures,” Comm. ACM, 2009; 52( 4): 65-76,</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">H. Jia, Y. Zhang, G. Long, J. Xu, S. Yan, and Y. Li, “GPURoofline: A Model for Guiding Performance Optimizations on GPUs,” Proc. 18th Int’l Conf. Parallel Processing (Euro-Par ’12), vol. 7484, pp. 920-932, 2012.</mixed-citation><mixed-citation xml:lang="en">H. Jia, Y. Zhang, G. Long, J. Xu, S. Yan, and Y. Li, “GPURoofline: A Model for Guiding Performance Optimizations on GPUs,” Proc. 18th Int’l Conf. Parallel Processing (Euro-Par ’12), 2012; 7484: 920-932.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">T. Cramer, D. Schmidl, M. Klemm, and D. an Mey, “OpenMP Programming on Intel Xeon Phi Coprocessors: An Early Performance Comparison,” Proc. Many-Core Applications Research Community Symp. at RWTH Aachen Univ., pp. 38-44, 2012.</mixed-citation><mixed-citation xml:lang="en">T. Cramer, D. Schmidl, M. Klemm, and D. an Mey, “OpenMP Programming on Intel Xeon Phi Coprocessors: An Early Performance Comparison,” Proc. Many-Core Applications Research Community Symp. at RWTH Aachen Univ., 2012; 38-44.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">J. Treibig, G. Hager and G. Wellein: LIKWID: A lightweight performance-oriented tool suite for x86 multicore environments. Proceedings of PSTI2010, the First International Workshop on Parallel Software Tools and Tool Infrastructures, San Diego CA, September 13, 2010. DOI: 10.1109/ICPPW.2010.38 Preprint: http://arxiv.org/abs/1004.4431</mixed-citation><mixed-citation xml:lang="en">J. Treibig, G. Hager and G. Wellein: LIKWID: A lightweight performance-oriented tool suite for x86 multicore environments. Proceedings of PSTI2010, the First International Workshop on Parallel Software Tools and Tool Infrastructures, San Diego CA, September 13, 2010. DOI: 10.1109/ICPPW.2010.38 Preprint: http://arxiv.org/abs/1004.4431</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Tutorial: Empirical Roofline Model // github.com: электронный ресурс. URL: https://github.com/RRZE-HPC/likwid/wiki/Tutorial:-Empirical-Roofline-Model (дата обращения: 18.08.2023)</mixed-citation><mixed-citation xml:lang="en">Tutorial: Empirical Roofline Model // github.com: elektronnyj resurs. URL: https://github.com/RRZE-HPC/likwid/wiki/Tutorial:-Empirical-Roofline-Model (data obrashcheniya: 18.08.2023)</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Z. Cui, Y. Liang, K. Rupnow, and D. Chen, “An Accurate GPU Performance Model for Effective Control Flow Divergence Optimization,” Proc. IEEE 26th Int’l Parallel Distributed Processing Symp. (IPDPS), pp. 83-94, 2012</mixed-citation><mixed-citation xml:lang="en">Z. Cui, Y. Liang, K. Rupnow, and D. Chen, “An Accurate GPU Performance Model for Effective Control Flow Divergence Optimization,” Proc. IEEE 26th Int’l Parallel Distributed Processing Symp. (IPDPS), 2012; 83-94</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">W. W. L. Fung, I. Sham, G. Yuan, and T. M. Aamodt, “Dynamic Warp Formation and Scheduling for Efficient GPU Control Flow,” in Proceedings of the 40th Annual IEEE/ACM International Symposium on Microarchitecture, ser. MICRO 40, 2007, pp. 407–420.</mixed-citation><mixed-citation xml:lang="en">W. W. L. Fung, I. Sham, G. Yuan, and T. M. Aamodt, “Dynamic Warp Formation and Scheduling for Efficient GPU Control Flow,” in Proceedings of the 40th Annual IEEE/ACM International Symposium on Microarchitecture, ser. MICRO 40, 2007, pp. 407–420.</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">J. Meng, D. Tarjan, and K. Skadron, “Dynamic warp subdivision for integrated branch and memory divergence tolerance,” in Proceedings of the 37th annual international symposium on Computer architecture, ser. ISCA’10, 2010, pp. 235–246</mixed-citation><mixed-citation xml:lang="en">J. Meng, D. Tarjan, and K. Skadron, “Dynamic warp subdivision for integrated branch and memory divergence tolerance,” in Proceedings of the 37th annual international symposium on Computer architecture, ser. ISCA’10, 2010;. 235–246</mixed-citation></citation-alternatives></ref><ref id="cit15"><label>15</label><citation-alternatives><mixed-citation xml:lang="ru">E. Z. Zhang, Y. Jiang, Z. Guo, and X. Shen, “Streamlining GPU applications on the fly: thread divergence elimination through runtime thread-data remapping,” in Proceedings of the 24th ACM International Conference on Supercomputing, ser. ICS ’10, 2010, pp. 115–126.</mixed-citation><mixed-citation xml:lang="en">E. Z. Zhang, Y. Jiang, Z. Guo, and X. Shen, “Streamlining GPU applications on the fly: thread divergence elimination through runtime thread-data remapping,” in Proceedings of the 24th ACM International Conference on Supercomputing, ser. ICS ’10, 2010; 115–126.</mixed-citation></citation-alternatives></ref><ref id="cit16"><label>16</label><citation-alternatives><mixed-citation xml:lang="ru">CUDA C++ programming guide // docs.nvidia.com: электронный ресурс. URL: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html (дата обращения: 18.08.2023)</mixed-citation><mixed-citation xml:lang="en">CUDA C++ programming guide // docs.nvidia.com: elektronnyj resurs. URL: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html (data obrashcheniya: 18.08.2023)</mixed-citation></citation-alternatives></ref><ref id="cit17"><label>17</label><citation-alternatives><mixed-citation xml:lang="ru">Yu, Qi &amp; Childers, Bruce &amp; Huang, Libo &amp; Qian, Cheng &amp; Wang, Zhiying. (2020). A quantitative evaluation of unified memory in GPUs. The Journal of Supercomputing. 76. 10.1007/s11227-019-03079-y.</mixed-citation><mixed-citation xml:lang="en">Yu, Qi &amp; Childers, Bruce &amp; Huang, Libo &amp; Qian, Cheng &amp; Wang, Zhiying. (2020). A quantitative evaluation of unified memory in GPUs. The Journal of Supercomputing. 76. DOI: 10.1007/s11227-019-03079-y.</mixed-citation></citation-alternatives></ref><ref id="cit18"><label>18</label><citation-alternatives><mixed-citation xml:lang="ru">Chien, Steven &amp; Peng, Ivy &amp; Markidis, Stefano. (2019). Performance Evaluation of Advanced Features in CUDA Unified Memory. 50-57. 10.1109/MCHPC49590.2019.00014. A quantitative evaluation of unified memory in GPUs Qi Yu Bruce Childers Libo Huang Cheng Qian Zhiying Wang</mixed-citation><mixed-citation xml:lang="en">Chien, Steven &amp; Peng, Ivy &amp; Markidis, Stefano. (2019). Performance Evaluation of Advanced Features in CUDA Unified Memory. 50-57. DOI: 10.1109/MCHPC49590.2019.00014. A quantitative evaluation of unified memory in GPUs Qi Yu Bruce Childers Libo Huang Cheng Qian Zhiying Wang</mixed-citation></citation-alternatives></ref><ref id="cit19"><label>19</label><citation-alternatives><mixed-citation xml:lang="ru">How to Access Global Memory Efficiently in CUDA C/C++ Kernels // Nvidia technical blog: электронный ресурс. URL: https://developer.nvidia.com/blog/how-access-global-memory-efficiently-cuda-c-kernels/ (дата обращения: 18.08.2023)</mixed-citation><mixed-citation xml:lang="en">How to Access Global Memory Efficiently in CUDA C/C++ Kernels // Nvidia technical blog: elektronnyj resurs. URL: https://developer.nvidia.com/blog/how-access-global-memory-efficiently-cuda-c-kernels/ (data obrashcheniya: 18.08.2023)</mixed-citation></citation-alternatives></ref><ref id="cit20"><label>20</label><citation-alternatives><mixed-citation xml:lang="ru">QueryPerformanceCounter function – Win32 apps // Microsoft Learn: электронный ресурс. URL: https://learn.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter (дата обращения: 18.08.2023)</mixed-citation><mixed-citation xml:lang="en">QueryPerformanceCounter function – Win32 apps. Microsoft Learn: elektronnyj resurs. URL: https://learn.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter (data obrashcheniya: 18.08.2023)</mixed-citation></citation-alternatives></ref><ref id="cit21"><label>21</label><citation-alternatives><mixed-citation xml:lang="ru">CUDA Pro Tip: Write Flexible Kernels with Grid-Stride Loops // Nvidia technical blog: электронный ресурс. URL: https://developer.nvidia.com/blog/cuda-pro-tip-write-flexible-kernels-grid-stride-loops/ (дата обращения: 18.08.2023)</mixed-citation><mixed-citation xml:lang="en">CUDA Pro Tip: Write Flexible Kernels with Grid-Stride Loops. Nvidia technical blog: elektronnyj resurs. URL: https://developer.nvidia.com/blog/cuda-pro-tip-write-flexible-kernels-grid-stride-loops/ (data obrashcheniya: 18.08.2023)</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>
