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