Skip to main content

MATLAB No Longer Has a Place in the Modern World

High Performance C++
Editorial

High-performance numerical kernels are defined by the algebraic laws they exploit and by the architectural parameters they expose. Associativity of addition, distributivity of multiplication over addition, cache-line geometry, SIMD vector width, TLB reach, and the precise cost of data motion through the memory hierarchy jointly determine both attainable accuracy and attainable throughput.

Any language or environment that conceals those parameters prevents the programmer from stating the algorithm that is actually executed and from attaching a verifiable a-priori error bound to the computed result.

What a Concept Does Not Say

High Performance C++
Editorial

A concept named Ring is satisfied by any type with +, *, and the two identities. It is not satisfied only by rings. The distinction is not pedantry: the algorithms constrained by such a concept are correct on the rings and undefined on everything else in its model class, and the compiler cannot tell the difference.

Writing the Reassociation

High Performance C++
Editorial

Almost every fast reduction in existence is licensed by a property that floating-point addition does not have. The situation is stable, well understood, and routinely misdescribed (as a compiler flag, as a precision setting, as a tolerance question) when it is none of those. It is a question about which algorithm is being executed.

Checking the Cost of an Abstraction

High Performance C++
Editorial

The phrase "zero-overhead abstraction" is used as though it described a property that C++ abstractions possess. It describes a property that particular abstractions possess under particular conditions, and the conditions are checkable. Treating the phrase as a guarantee is how libraries acquire abstractions that cost twenty percent and nobody notices.