Accelerating key bioinformatics tasks 100-fold by improving memory access

04/19/2021
by   Igor Sfiligoi, et al.
0

Most experimental sciences now rely on computing, and biological sciences are no exception. As datasets get bigger, so do the computing costs, making proper optimization of the codes used by scientists increasingly important. Many of the codes developed in recent years are based on the Python-based NumPy, due to its ease of use and good performance characteristics. The composable nature of NumPy, however, does not generally play well with the multi-tier nature of modern CPUs, making any non-trivial multi-step algorithm limited by the external memory access speeds, which are hundreds of times slower than the CPU's compute capabilities. In order to fully utilize the CPU compute capabilities, one must keep the working memory footprint small enough to fit in the CPU caches, which requires splitting the problem into smaller portions and fusing together as many steps as possible. In this paper, we present changes based on these principles to two important functions in the scikit-bio library, principal coordinates analysis and the Mantel test, that resulted in over 100x speed improvement in these widely used, general-purpose tools.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/28/2022

Algorithmic Improvement and GPU Acceleration of the GenASM Algorithm

We improve on GenASM, a recent algorithm for genomic sequence alignment,...
research
11/10/2022

Accelerating Irregular Applications via Efficient Synchronization and Data Access Techniques

Irregular applications comprise an increasingly important workload domai...
research
02/01/2018

Enabling the Adoption of Processing-in-Memory: Challenges, Mechanisms, Future Research Directions

Poor DRAM technology scaling over the course of many years has caused DR...
research
04/03/2023

TransPimLib: A Library for Efficient Transcendental Functions on Processing-in-Memory Systems

Processing-in-memory (PIM) promises to alleviate the data movement bottl...
research
03/10/2019

Nature of System Calls in CPU-centric Computing Paradigm

Modern operating systems are typically POSIX-compliant with major system...
research
06/08/2021

LLAMA: The Low-Level Abstraction For Memory Access

The performance gap between CPU and memory widens continuously. Choosing...
research
03/15/2022

Performance Comparison of Python Translators for a Multi-threaded CPU-bound Application

Currently, Python is one of the most widely used languages in various ap...

Please sign up or login with your details

Forgot password? Click here to reset