Робота містить опис високопродуктивного підходу для здійснення пакетного добутку матриць афінних перетворень за допомогою Android NDK та JNI. Розібрані основні використані техніки та особливості, проведена оцінка продуктивності підходу у порівнянні з його альтернативами і попередниками.
Работа содержит описание подхода для осуществления высокопроизводительного пакетного произведения матриц аффинных преобразований посредством Android NDK и JNI. Подход основан на комбинации ряда техник и практик. Используется нативный пакет разработки Android NDK для выполнения высокопроизводительного кода под управлением JVM посредством вызовов функций JNI, оптимизация накладных затрат вызова этих функций путем пакетирования входных данных для вычислений, оптимизация решения в части C/C++/Java с использованием compile-time оптимизаторов. В результате проведенной разработки и исследования выходного решения были выполнены точные бенчмарки производительности, было произведено сравнение с аналогичными решениями с частичным использованием предложенного стека техник и особенностей, построены соответствующие графики зависимостей, сделаны выводы.
This work contains description of high-performance batched affine matrices multiplication approach in scope of Android NDK and JNI. Approach is based on combination of separate technics and practices. Android Native Development Kit and Java Native Interfaces were used to develop and run high-performance code via Java Virtual Machine. This approach overhead was minimized with input data batching for computation. Compile-time optimization approaches were used to speed-up C/C++/Java based solutions. As a development, analysis and research result precise performance benchmarks were made. Output solution was compared with analogues, which are using limited sets of applied techniques, features and approaches. Charts were built on top of that results. Appropriate decisions were made.