An Engine We Wrote, So We Can Explain It
C++17 and CUDA with no third-party numerical libraries. Every method cites its source and every data table carries a checksum.

Self-test of 0.7.11 on the GPU server: 58 pending a source check, 0 failed
Regression cases unchanged at 1e-8 tolerance
Across 2000 mutated hostile inputs, 1633 cleanly refused
Quantum chemistry, cheminformatics, Model Systems and molecular mechanics
Built to Be Checked
No Libraries
Own linear algebra, GEMM, eigensolvers, FFT, JSON, SHA-256 (FIPS 180-4), random numbers and CUDA kernels.
Checksummed Data
Every data table has a SHA-256 manifest, a source key and a verification status. Results embed which tables they used.
Cited Methods
Each method cites its original paper or textbook, never a software package.
Cache Keys
A SHA-256 key identifies a computation exactly, so an identical request returns the stored result.
Hostile Input Safe
Bounds checks refuse coordinates beyond 1000 Å, atoms closer than 0.1 Å, inconsistent electron counts and files over 64 MB.
Cross-Platform
Same energies on Windows with MSVC and macOS with clang. Linux is untested.
The GPU, Stated Plainly
Our CUDA kernels are correct and the path is switched off by default for quantum chemistry. That is a result, and we publish it.
- CUDA and CPU energies agree to 2.0e-12 Eh on 54 test cases, and match PySCF and Psi4 to 2.4e-11 Eh
- Since 0.6.4 the GPU keeps the integrals resident: caffeine went from 2573 s to 95.6 s on the GPU, but the CPU still takes 58.5 s, so automatic selection picks the CPU
- Nonbonded molecular mechanics on the GPU: 6000 atoms in 98 ms
- Launches are chunked to about 100 ms to stay under the Windows driver timeout
- Hardware today: one 8 GB RTX 3050 with FP64 throughput at 1/64 of FP32, no multi-GPU, no MPI
| Molecule (Basis Functions) | CUDA | CPU |
|---|---|---|
| Caffeine (80) | 2572.7 s | 145.9 s |
| Anthracene | 1201.2 s | 95.4 s |
| Glucose | 763.9 s | 96.4 s |
A Protocol You Can Script
- Command line: run, selftest, regress, recheck and cache-key; checkpoint and restart for long runs, with diagnostics kept when a run does not converge
- The engine reads input.json and writes JSON lines plus result.json, in protocol version 1
- Exit codes: 0 ok, 2 input error, 3 not converged, 4 resource limit, 5 internal error
- Results include energies in several units, provenance, cache key, warnings and a limitations text
- Install, update and roll back from the server console, with a selftest and a Last Good version

Engine Questions
Is it really written from scratch?
Can I run it on my own machine?
How does the portal talk to the engine?
How is the GPU used?
Run Your Next Molecule Through AiMolSim
See your own molecule optimised, its frequencies computed and the checks printed beside the result. A demo takes about 30 minutes.