A major challenge in the deployment of scientific software solutions is the adaptation of research prototypes to production-grade code. While high-level languages like MATLAB are useful for rapid prototyping, they lack the resource efficiency required for scalable production applications, necessitating translation into lower level languages like C++. Further, for machine learning and signal processing applications, the underlying linear algebra primitives, generally provided by the standard BLAS and LAPACK libraries, are unwieldy and difficult to use, requiring manual memory management and other tedium. To address this challenge, the Armadillo C++ linear algebra library provides an intuitive interface for writing linear algebra expressions that are easily compiled into efficient production-grade implementations. We describe the expression optimisations we have implemented in Armadillo, exploiting template metaprogramming. We demonstrate that these optimisations result in considerable efficiency gains on a variety of benchmark linear algebra expressions.
翻译:科学软件解决方案部署中的一个主要挑战是将研究原型适配为生产级代码。尽管如MATLAB之类的高级语言在快速原型开发中非常有用,但它们缺乏可扩展生产应用所需的资源效率,因此需要将其转换为如C++之类的低级语言。此外,对于机器学习和信号处理应用,通常由标准BLAS和LAPACK库提供的底层线性代数原语使用起来笨拙且困难,需要手动内存管理和其他繁琐操作。为应对这一挑战,Armadillo C++线性代数库提供了一个直观的接口,用于编写易于编译为高效生产级实现的线性代数表达式。我们描述了在Armadillo中利用模板元编程实现的表达式优化技术。我们证明,这些优化在各种基准线性代数表达式上带来了显著的效率提升。