Extended performance accounting using Valgrind tool
Modern workloads, parallel or sequential, usually suffer from insufficient memory and computing performance. Common trends to improve workload performance include the utilizations of complex functional units or coprocessors, which are able not only to provide accelerated computations but also indepe...
Збережено в:
Дата: | 2021 |
---|---|
Автори: | , |
Формат: | Стаття |
Мова: | English |
Опубліковано: |
Інститут програмних систем НАН України
2021
|
Теми: | |
Онлайн доступ: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/461 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Problems in programming |
Завантажити файл: |
Репозитарії
Problems in programmingid |
pp_isofts_kiev_ua-article-461 |
---|---|
record_format |
ojs |
fulltext |
54
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Dmytro V. Rahozin, Anatoliy Yu. Doroshenko
-
-
-
-
55
-
complex computing pattern
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
56
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
57
-
-
-
-
-
-
-
-
-
-
-
-
-
-
gdb
-
-
-
-
-
-
-
-
58
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
gemm_nn -
-
-
-
-
-
-
-
gemm_nn
-
A C
B C A B
C A
B C
-
-
gemm_nn -
gemm_nn -
-
gemm_nn -
-
-
-
-
-
-
-
callgrind.h
CALLGRIND_START_INSTRUMENTA-
TION
-
-
-
-
-
-
-
-
-
CG_PUSH_CON-
TEXT CG_POP_CONTEXT
-
CG_PUSH_CONTEXT -
-
CG_
POP_CONTEXT -
-
-
-
-
-
-
For(int i=0; i<N; i++)
{ c[i] = A*a[i] + B*b[i] + P; }
variable_name start_
index step end_index read a read
b set c
-
-
A B C -
-
A B C
-
-
61
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
OSDI
-
-
-
62
-
-
-
-
-
-
-
-
About authors
Dmytro V. Rahozin, -
Anatoliy Doroshenko
-
-
|
resource_txt_mv |
ppisoftskievua/d6/ffca2b0277c6ff83c9d4afbeffd715d6.pdf |
institution |
Problems in programming |
baseUrl_str |
https://pp.isofts.kiev.ua/index.php/ojs1/oai |
datestamp_date |
2024-04-26T22:22:33Z |
collection |
OJS |
language |
English |
topic |
workload performance analysis coprocessors prefetch computer system simulator UDC 681.3 |
spellingShingle |
workload performance analysis coprocessors prefetch computer system simulator UDC 681.3 Rahozin, D.V. Doroshenko, A.Yu. Extended performance accounting using Valgrind tool |
topic_facet |
workload performance analysis coprocessors prefetch computer system simulator UDC 681.3 програма-навантаження аналіз швидкодії сопроцесор передвибірка даних з пам’яті симулятор комп’ютерної системи УДК 681.3 |
format |
Article |
author |
Rahozin, D.V. Doroshenko, A.Yu. |
author_facet |
Rahozin, D.V. Doroshenko, A.Yu. |
author_sort |
Rahozin, D.V. |
title |
Extended performance accounting using Valgrind tool |
title_short |
Extended performance accounting using Valgrind tool |
title_full |
Extended performance accounting using Valgrind tool |
title_fullStr |
Extended performance accounting using Valgrind tool |
title_full_unstemmed |
Extended performance accounting using Valgrind tool |
title_sort |
extended performance accounting using valgrind tool |
title_alt |
Розширений аналіз швидкодії програм за допомогою Valgrind |
description |
Modern workloads, parallel or sequential, usually suffer from insufficient memory and computing performance. Common trends to improve workload performance include the utilizations of complex functional units or coprocessors, which are able not only to provide accelerated computations but also independently fetch data from memory generating complex address patterns, with or without support of control flow operations. Such coprocessors usually are not adopted by optimizing compilers and should be utilized by special application interfaces by hand. On the other hand, memory bottlenecks may be avoided with proper use of processor prefetch capabilities which load necessary data ahead of actual utilization time, and the prefetch is also adopted only for simple cases making programmers to do it usually by hand. As workloads are fast migrating to embedded applications a problem raises how to utilize all hardware capabilities for speeding up workload at moderate efforts. This requires precise analysis of memory access patterns at program run time and marking hot spots where the vast amount of memory accesses is issued. Precise memory access model can be analyzed via simulators, for example Valgrind, which is capable to run really big workload, for example neural network inference in reasonable time. But simulators and hardware performance analyzers fail to separate the full amount of memory references and cache misses per particular modules as it requires the analysis of program call graph. We are extending Valgrind tool cache simulator, which allows to account memory accesses per software modules and render realistic distribution of hot spot in a program. Additionally the analysis of address sequences in the simulator allows to recover array access patterns and propose effective prefetching schemes. Motivating samples are provided to illustrate the use of Valgrind tool.Prombles in programming 2021; 2: 54-62 |
publisher |
Інститут програмних систем НАН України |
publishDate |
2021 |
url |
https://pp.isofts.kiev.ua/index.php/ojs1/article/view/461 |
work_keys_str_mv |
AT rahozindv extendedperformanceaccountingusingvalgrindtool AT doroshenkoayu extendedperformanceaccountingusingvalgrindtool AT rahozindv rozširenijanalízšvidkodííprogramzadopomogoûvalgrind AT doroshenkoayu rozširenijanalízšvidkodííprogramzadopomogoûvalgrind |
first_indexed |
2024-12-16T04:05:02Z |
last_indexed |
2024-12-16T04:05:02Z |
_version_ |
1818568323937337344 |
spelling |
pp_isofts_kiev_ua-article-4612024-04-26T22:22:33Z Extended performance accounting using Valgrind tool Розширений аналіз швидкодії програм за допомогою Valgrind Rahozin, D.V. Doroshenko, A.Yu. workload; performance analysis; coprocessors; prefetch; computer system simulator UDC 681.3 програма-навантаження; аналіз швидкодії; сопроцесор; передвибірка даних з пам’яті; симулятор комп’ютерної системи УДК 681.3 Modern workloads, parallel or sequential, usually suffer from insufficient memory and computing performance. Common trends to improve workload performance include the utilizations of complex functional units or coprocessors, which are able not only to provide accelerated computations but also independently fetch data from memory generating complex address patterns, with or without support of control flow operations. Such coprocessors usually are not adopted by optimizing compilers and should be utilized by special application interfaces by hand. On the other hand, memory bottlenecks may be avoided with proper use of processor prefetch capabilities which load necessary data ahead of actual utilization time, and the prefetch is also adopted only for simple cases making programmers to do it usually by hand. As workloads are fast migrating to embedded applications a problem raises how to utilize all hardware capabilities for speeding up workload at moderate efforts. This requires precise analysis of memory access patterns at program run time and marking hot spots where the vast amount of memory accesses is issued. Precise memory access model can be analyzed via simulators, for example Valgrind, which is capable to run really big workload, for example neural network inference in reasonable time. But simulators and hardware performance analyzers fail to separate the full amount of memory references and cache misses per particular modules as it requires the analysis of program call graph. We are extending Valgrind tool cache simulator, which allows to account memory accesses per software modules and render realistic distribution of hot spot in a program. Additionally the analysis of address sequences in the simulator allows to recover array access patterns and propose effective prefetching schemes. Motivating samples are provided to illustrate the use of Valgrind tool.Prombles in programming 2021; 2: 54-62 Сучасні паралельні або послідовні програми-навантаження (workloads) звичайно мають обмеження за швидкодією процесора або запотужністю каналів пам’яті. Також сучасною тенденцією є залучення спеціалізованих сопроцесорів для підвищення швидкодії програм-навантажень, які виконують не тількі обчислення, але й доступ до пам’яті зі складною адресацією. Такі сопроцесори практично неможливо використати за допомогою компілятора, лише ручним кодуванням програми. Обмеження за потужністю каналу пам’яті також може вирішуватися складною системою передвибірки даних з пам’яті у кеш-пам’ять процесора, але компілятор теж може оптимізувати передвибірку лише у простих випадках побудови коду. Оскільки програми-навантаження дуже швидко мігрують у бік вбудованих обчислень, виникає проблема спрощення використання вбудованих сопроцесорів для підвищення швидкодії. Це потребує аналізу послідовностей доступу до пам’яті та визначення вузьких місць у коді програми. Точний аналіз доступу можливий за допомогою симуляторів, наприклад Valgrind, який дозволяє аналізувати великі програми-навантаження, наприклад, вивід у нейромережах і за адекватний час. Наявні симулятори та засоби аналізу навантаження процесора не дозволяють коректно визначати навантаження у прив’язці до програмних компонентів, оскільки це потребує аналізу графу викликів у програмі. Тому ми розширюємо симулятор Valgrind можливостями аналізу прив’язки доступу до пам’яті до конкретних програмних модулів і визначенням уточнених вузьких місць доступу до пам’яті. Додатково аналіз послідовності адрес доступу до пам’яті дозволяє визначати шаблони доступу до масивів і рекомендувати використання певних алгоритмів передвибірки даних до кеш-пам’яті. Додаються ілюстративні приклади використання симулятора Valgrind.Prombles in programming 2021; 2: 53-62 Інститут програмних систем НАН України 2021-08-06 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/461 10.15407/pp2021.02.054 PROBLEMS IN PROGRAMMING; No 2 (2021); 54-62 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2 (2021); 54-62 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2 (2021); 54-62 1727-4907 10.15407/pp2021.02 en https://pp.isofts.kiev.ua/index.php/ojs1/article/view/461/464 Copyright (c) 2021 PROBLEMS IN PROGRAMMING |