AiMolSim
VYROX Math Kernel

Our Own Math, from the First Line

Dense linear algebra and GPU integral kernels written from scratch in C++ and CUDA, with no third-party math library inside.

Matrix tiles split into blocks flowing into a processor core

What Is Inside

Engine 1.10.12. Partial CPU routines Unverified GPU J and K

Matrix Multiplication

Packed, cache-blocked GEMM with register-tiled SIMD micro-kernels. The instruction set is picked at run time: Apple SME, ARM NEON or a scalar path. A single-thread variant runs the blocked matrix products inside the meta-GGA grid code (engine 1.9.8).

Factorisations

Blocked right-looking Cholesky, blocked LU with partial pivoting and blocked triangular solves (TRSM) for every side and triangle.

Symmetric Eigensolver

Blocked Householder tridiagonalisation with threaded updates, then the QL algorithm with implicit shifts. Same bits on every rerun in deterministic mode.

Own Thread Pool

Threads managed by the engine, with an optional deterministic order for bitwise reruns.

GPU J and K

Direct, screened Coulomb and exchange builds on the GPU up to d functions, and GPU RI-J three-centre integrals, in CUDA builds.

No Third-Party Math Libraries

The heavy algebra of the VYROX Chemistry Engine is our own code, end to end.

  • No MKL, OpenBLAS, BLIS, Eigen, Accelerate or cuBLAS, and no FFTW for plane waves
  • Algorithms from the published literature, each cited in the code
  • The same source builds on macOS and Windows, CPU and CUDA
  • The engine reports in its capability list that no external library is used

Three Modes, One Answer

  • Auto routes GEMM and the eigensolver to the kernel
  • Fast uses the kernel for every supported routine
  • Reference keeps the plain code path, used to check the fast one
  • Each result records the mode, the instruction set and the thread count in its provenance

How It Is Checked

  • Every micro-kernel against a plain triple-loop GEMM
  • One thread against four threads, bit for bit, in deterministic mode
  • Cholesky, LU and TRSM residuals and agreement with the reference path
  • GPU integrals against the CPU route; GPU J and K stay off by default until measured faster than the CPU

Primary Sources

  • Householder 1958, unitary triangularisation
  • Bowdler, Martin, Reinsch, Wilkinson 1968, QL algorithm
  • Ufimtsev, Martinez 2008 and 2009, integrals and SCF on GPUs
  • Haser, Ahlrichs 1989, integral screening in direct SCF
  • Obara, Saika 1986, cross-check route

Full citations on the References page.

VYROX Math Kernel Questions

What is the VYROX Math Kernel?
The dense linear algebra and GPU integral code inside the VYROX Chemistry Engine: matrix multiplication (GEMM), Cholesky, LU and triangular solves, a symmetric eigensolver, and Coulomb and exchange builds on the GPU. We wrote it ourselves in C++ and CUDA.
Does it use MKL, OpenBLAS or cuBLAS?
No. The engine links no third-party math library: no MKL, OpenBLAS, BLIS, Eigen, Accelerate or cuBLAS, and no FFTW for the plane-wave code. The algorithms come from the published literature and each routine cites its paper in the code.
Why write our own?
So every number can be traced to code we can read, check and fix, on every server a customer adds, with the same results on macOS and Windows and no licence attached to someone else's binary.
Is it faster?
One measured win so far: a double-precision matrix multiply of 256 by 4096 by 4096 on 16 threads ran 1.13 to 1.20 times as fast as Intel MKL on the same machine. On the other sizes and routines we measured, the kernel is slower than MKL (a 2048 square multiply ran at 0.63 to 0.74 of MKL speed), so we claim no parity and nothing else yet. GPU J and K stay off by default until measured, and we will publish more numbers only after we measure them.
Will my results change?
Reference mode keeps the plain code path for checks. Fast mode gives the same answer to rounding, and a deterministic setting fixes the summation order so a rerun gives the same bits.

Run Your Next Molecule Through AiMolSim

Start with one molecule and one energy. Every number comes with its method, its basis, its engine version and the server it ran on.