All issues
- 2025 Vol. 17
- 2024 Vol. 16
- 2023 Vol. 15
- 2022 Vol. 14
- 2021 Vol. 13
- 2020 Vol. 12
- 2019 Vol. 11
- 2018 Vol. 10
- 2017 Vol. 9
- 2016 Vol. 8
- 2015 Vol. 7
- 2014 Vol. 6
- 2013 Vol. 5
- 2012 Vol. 4
- 2011 Vol. 3
- 2010 Vol. 2
- 2009 Vol. 1
-
Производительность OpenMP и реализация MPI на системе ultrasparc
Компьютерные исследования и моделирование, 2015, т. 7, № 3, с. 485-491Данная работа нацелена на программистов и разработчики, заинтересованных в использовании технологии параллельного программирования для увеличения производительности приложений. Программное обеспечение Oracle Solaris Studio обеспечивает современную оптимизацию и распараллеливание компиляторов для языков C, C ++ и ФОРТРАН, продвинутый отладчик, и оптимизированные математи- ческие и быстродействующие библиотеки. Также включены чрезвычайно мощный инструмент анализа производительности для профилирования последовательных и параллельных приложений, инструмент анализа для обнаружения состязания при передаче данных и блокировки в памяти параллельных программ и IDE. Программное обеспечение Oracle Message Passing Toolkit обеспечивает высокопроизводительные MPI библиотеки и сопряжённую среду во время работы программы, необходимую для приложений передачи сообщений, которые могут работать на одной системе или по всему множеству вычислительных систем с высокопроизводительным сетевым оснащением, включая Gigabit Ethernet, 10 Gigabit Ethernet, InfiniBand и Myrinet. Примеры OpenMP и MPI представлены по всему тексту работы, включая их использование через программные продукты Oracle Solaris Studio и Oracle Message Passing Toolkit для развития и развертывания последовательных и параллельных приложений на основе систем SPARC и x86/x64. В работе продемонстрировано, как развивать и развертывать приложение, распараллеленное с OpenMP и/или MPI.
Ключевые слова: OpenMP, параллельное программирование, MPI (Message Passing Interface), систе- ма SPARC.
Performance of the OpenMP and MPI implementations on ultrasparc system
Computer Research and Modeling, 2015, v. 7, no. 3, pp. 485-491Views (last year): 2.This paper targets programmers and developers interested in utilizing parallel programming techniques to enhance application performance. The Oracle Solaris Studio software provides state-of-the-art optimizing and parallelizing compilers for C, C++ and Fortran, an advanced debugger, and optimized mathematical and performance libraries. Also included are an extremely powerful performance analysis tool for profiling serial and parallel applications, a thread analysis tool to detect data races and deadlock in memory parallel programs, and an Integrated Development Environment (IDE). The Oracle Message Passing Toolkit software provides the high-performance MPI libraries and associated run-time environment needed for message passing applications that can run on a single system or across multiple compute systems connected with high performance networking, including Gigabit Ethernet, 10 Gigabit Ethernet, InfiniBand and Myrinet. Examples of OpenMP and MPI are provided throughout the paper, including their usage via the Oracle Solaris Studio and Oracle Message Passing Toolkit products for development and deployment of both serial and parallel applications on SPARC and x86/x64 based systems. Throughout this paper it is demonstrated how to develop and deploy an application parallelized with OpenMP and/or MPI.
-
Предсказание производительности избранных типов циклов над одномерными массивами посредством анализа эмбеддингов промежуточных представлений
Компьютерные исследования и моделирование, 2023, т. 15, № 1, с. 211-224Предложен метод отображения промежуточных представлений C-, C++-программ в пространство векторов (эмбеддингов) для оценки производительности программ на этапе компиляции, без необходимости исполнения. Использование эмбеддингов для данной цели позволяет не проводить сравнение графов исследуемых программ непосредственно, что вычислительно упрощает задачу сравнения программ. Метод основан на серии трансформаций исходного промежуточного представления (IR), таких как: инструментирование — добавление фиктивных инструкций в оптимизационном проходе компилятора в зависимости от разности смещений в текущей инструкции обращения к памяти относительно предыдущей, преобразование IR в многомерный вектор с помощью технологии IR2Vec с понижением размерности по алгоритму t-SNE (стохастическое вложение соседей с t-распределением). В качестве метрики производительности предлагается доля кэш-промахов 1-го уровня (D1 cache misses). Приводится эвристический критерий отличия программ с большей долей кэш-промахов от программ с меньшей долей по их образам. Также описан разработанный в ходе работы проход компилятора, генерирующий и добавляющий фиктивные инструкции IR согласно используемой модели памяти. Приведено описание разработанного программного комплекса, реализующего предложенный способ оценивания на базе компиляторной инфраструктуры LLVM. Проведен ряд вычислительных экспериментов на синтетических тестах из наборов программ с идентичными потоками управления, но различным порядком обращений к одномерному массиву, показано, что коэффициент корреляции между метрикой производительности и расстоянием до эмбеддинга худшей программы в наборе отрицателен вне зависимости от инициализации t-SNE, что позволяет сделать заключение о достоверности эвристического критерия. Также в статье рассмотрен способ генерации тестов. По результатам экспериментов, вариативность значений метрики производительности на исследуемых множествах предложена как метрика для улучшения генератора тестов.
Ключевые слова: математическое моделирование, компиляторы, промежуточные представления программ, эмбеддинги, анализ производительности, статический анализ.
Performance prediction for chosen types of loops over one-dimensional arrays with embedding-driven intermediate representations analysis
Computer Research and Modeling, 2023, v. 15, no. 1, pp. 211-224The method for mapping of intermediate representations (IR) set of C, C++ programs to vector embedding space is considered to create an empirical estimation framework for static performance prediction using LLVM compiler infrastructure. The usage of embeddings makes programs easier to compare due to avoiding Control Flow Graphs (CFG) and Data Flow Graphs (DFG) direct comparison. This method is based on transformation series of the initial IR such as: instrumentation — injection of artificial instructions in an instrumentation compiler’s pass depending on load offset delta in the current instruction compared to the previous one, mapping of instrumented IR into multidimensional vector with IR2Vec and dimension reduction with t-SNE (t-distributed stochastic neighbor embedding) method. The D1 cache miss ratio measured with perf stat tool is considered as performance metric. A heuristic criterion of programs having more or less cache miss ratio is given. This criterion is based on embeddings of programs in 2D-space. The instrumentation compiler’s pass developed in this work is described: how it generates and injects artificial instructions into IR within the used memory model. The software pipeline that implements the performance estimation based on LLVM compiler infrastructure is given. Computational experiments are performed on synthetic tests which are the sets of programs with the same CFGs but with different sequences of offsets used when accessing the one-dimensional array of a given size. The correlation coefficient between performance metric and distance to the worst program’s embedding is measured and proved to be negative regardless of t-SNE initialization. This fact proves the heuristic criterion to be true. The process of such synthetic tests generation is also considered. Moreover, the variety of performance metric in programs set in such a test is proposed as a metric to be improved with exploration of more tests generators.
-
Графовая сверточная нейронная сеть для быстрого и точного дизассемблирования инструкций x86
Компьютерные исследования и моделирование, 2024, т. 16, № 7, с. 1779-1792Дизассемблирование двоичных файлов x86 — важная, но нетривиальная задача. Дизассемблирование трудно выполнить корректно без отладочной информации, особенно на архитектуре x86, в которой инструкции переменного размера чередуются с данными. Более того, наличие непрямых переходов в двоичном коде добавляет еще один уровень сложности. Непрямые переходы препятствуют возможности рекурсивного обхода, распространенного метода дизассемблирования, успешно идентифицировать все инструкции в коде. Следовательно, дизассемблирование такого кода становится еще более сложным и требовательным, что еще больше подчеркивает проблемы, с которыми приходится сталкиваться в этой области. Многие инструменты, включая коммерческие, такие как IDA Pro, с трудом справляются с точным дизассемблированием x86. В связи с этим был проявлен определенный интерес к разработке более совершенного решения с использованием методов машинного обучения, которое потенциально может охватывать базовые, независимые от компилятора паттерны, присущие машинному коду, сгенерированному компилятором. Методы машинного обучения могут превосходитьпо точности классические инструменты. Их разработка также может занимать меньше времени по сравнению с эвристическими методами, реализуемыми вручную, что позволяет переложитьо сновную нагрузку на сбор большого представительного набора данных исполняемых файлов с отладочной информацией. Мы усовершенствовали существующую архитектуру на основе рекуррентных графовых сверточных нейронных сетей, которая строит граф управления и потоков для дизассемблирования надмножеств инструкций. Мы расширили граф информацией о потоках данных: при кодировании входной программы, мы добавляем ребра потока управления и зависимостей от регистров, вдохновленные вероятностным дизассемблированием. Мы создали открытый набор данных для идентификации инструкций x86, основанный на комбинации набора данных ByteWeight и нескольких пакетов Debian с открытым исходным кодом. По сравнению с IDA Pro, современным коммерческим инструментом, наш подход обеспечивает более высокую точность при сохранении высокой производительности в наших тестах. Он также хорошо себя показывает по сравнению с существующими подходами машинного обучения, такими как DeepDi.
Fast and accurate x86 disassembly using a graph convolutional network model
Computer Research and Modeling, 2024, v. 16, no. 7, pp. 1779-1792Disassembly of stripped x86 binaries is an important yet non-trivial task. Disassembly is difficult to perform correctly without debug information, especially on x86 architecture, which has variablesized instructions interleaved with data. Moreover, the presence of indirect jumps in binary code adds another layer of complexity. Indirect jumps impede the ability of recursive traversal, a common disassembly technique, to successfully identify all instructions within the code. Consequently, disassembling such code becomes even more intricate and demanding, further highlighting the challenges faced in this field. Many tools, including commercial ones such as IDA Pro, struggle with accurate x86 disassembly. As such, there has been some interest in developing a better solution using machine learning (ML) techniques. ML can potentially capture underlying compiler-independent patterns inherent for the compiler-generated assembly. Researchers in this area have shown that it is possible for ML approaches to outperform the classical tools. They also can be less timeconsuming to develop compared to manual heuristics, shifting most of the burden onto collecting a big representative dataset of executables with debug information. Following this line of work, we propose an improvement of an existing RGCN-based architecture, which builds control and flow graph on superset disassembly. The enhancement comes from augmenting the graph with data flow information. In particular, in the embedding we add Jump Control Flow and Register Dependency edges, inspired by Probabilistic Disassembly. We also create an open-source x86 instruction identification dataset, based on a combination of ByteWeight dataset and a selection open-source Debian packages. Compared to IDA Pro, a state of the art commercial tool, our approach yields better accuracy, while maintaining great performance on our benchmarks. It also fares well against existing machine learning approaches such as DeepDi.
Indexed in Scopus
Full-text version of the journal is also available on the web site of the scientific electronic library eLIBRARY.RU
The journal is included in the Russian Science Citation Index
The journal is included in the RSCI
International Interdisciplinary Conference "Mathematics. Computing. Education"




