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中利用模板元编程实现的表达式优化技术。我们证明这些优化在各种基准线性代数表达式中带来了显著的效率提升。