A Simple Methodology for Computing Families of Algorithms

08/20/2018
by   Devangi N. Parikh, et al.
0

Discovering "good" algorithms for an operation is often considered an art best left to experts. What if there is a simple methodology, an algorithm, for systematically deriving a family of algorithms as well as their cost analyses, so that the best algorithm can be chosen? We discuss such an approach for deriving loop-based algorithms. The example used to illustrate this methodology, evaluation of a polynomial, is itself simple yet the best algorithm that results is surprising to a non-expert: Horner's rule. We finish by discussing recent advances that make this approach highly practical for the domain of high-performance linear algebra software libraries.

READ FULL TEXT
research
10/11/2017

Deriving Correct High-Performance Algorithms

Dijkstra observed that verifying correctness of a program is difficult a...
research
04/06/2023

Formal Derivation of LU Factorization with Pivoting

The FLAME methodology for deriving linear algebra algorithms from specif...
research
06/30/2020

Ginkgo: A Modern Linear Operator Algebra Framework for High Performance Computing

In this paper, we present Ginkgo, a modern C++ math library for scientif...
research
05/19/2018

Productively Expressing High-performance Spatial Designs of Givens Rotation-based QR Decomposition Algorithm

QR decomposition is used prevalently in wireless communication. In this ...
research
03/29/2019

How to Estimate the Ability of a Metaheuristic Algorithm to Guide Heuristics During Optimization

Metaheuristics are general methods that guide application of concrete he...
research
09/07/2022

A Test for FLOPs as a Discriminant for Linear Algebra Algorithms

Linear algebra expressions, which play a central role in countless scien...
research
12/02/2020

A Methodology for Deriving Evaluation Criteria for Software Solutions

Finding a suited software solution for a company poses a resource-intens...

Please sign up or login with your details

Forgot password? Click here to reset