About
Methodology
This page exists so that a number quoted from this site can be checked. It states where facts come from, how confident we are in each one, how we resolve thirty years of vendor renaming, and — the part most directories skip — what we decline to publish and why.
Sourcing
Nothing enters the dataset without at least one public source. That is enforced by the
build, not by convention: scripts/validate.ts runs before every deploy and
refuses to build if any fact-bearing row is missing a source_url. There is
no code path that publishes an uncited claim.
Sources are ranked by proximity to the fact. An operator or laboratory describing its own machine outranks a vendor describing its own product, which outranks trade press. Where a second independent source exists — typically a vendor press release confirming a laboratory announcement, or a procurement notice confirming both — it is recorded alongside the first, and only then does the row qualify as verified.
Confidence tiers
Every fact-bearing row carries one of three tiers. They are load-bearing: the validator enforces them, and the difference between them is the difference between a citation and a lead.
| Tier | Definition | Component edges |
|---|---|---|
| Verified | Two independent public sources agree, at least one of which is the operator, the funding agency, or the supplying vendor. | 9 |
| Reported | One credible public source — a vendor press release, lab announcement, procurement notice or filing. Not yet independently corroborated. | 92 |
| Estimated | Derived by us from partial disclosure using a published method. Never a bare guess; the calculation is shown on /methodology. | 3 |
What the validator enforces
- Every row in companies, parts, sites, systems, system_components, list_appearances, system_events and vendor_aliases has a non-empty
source_urlthat parses as an http(s) URL. - A
systemsorsystem_componentsrow claiming verified must carry asecond_source_url. One source is reported, by definition. - Any FLOPS figure must declare a
flops_basis: HPL measured, vendor peak, operator stated, or our estimate. - A
flops_basisofour_estimateforces confidence to estimated and, in the unranked pipeline, requires naming the published estimator that produced it. - Rmax may not exceed Rpeak; PUE must fall between 1 and 3; quantities must be positive; a quantity without a
quantity_confidenceis rejected. - A part filling a role must belong to the matching category — a CPU cannot be recorded as an accelerator by typo.
- Every foreign key resolves, and corporate parent chains must terminate rather than cycle.
Ranked-list facts and copyright
TOP500 content is copyrighted (Copyright © 1993–2026 TOP500.org)
and there is no open license on the list data. This site is built on that basis, and the
policy below is recorded in LEGAL.md in the repository so it cannot quietly
regress.
We do not mirror the ranked table. There is no page on this site that reproduces a 1–500 listing of any edition, sortable or otherwise. The validator caps how many pointer rows any single edition may accumulate, so the dataset cannot drift into being a reproduction by accretion.
We do not reproduce their prose. No highlights text, no analysis paragraphs, no editorial copy. Every word of commentary here is written for this site.
We store facts we normalized ourselves. Vendor, accelerator model, interconnect family, site, country and year are individual facts, recorded in our own schema with a source per claim, and cross-checked against a second source — a vendor release, laboratory announcement or procurement notice — wherever one exists. A fact confirmed independently is ours to publish.
Rank is stored as a pointer. When a system appeared on a published list, we record the list name, the edition and the rank, and we link to the canonical entry. That link is the only place a reader gets ranking data, which is the correct place for them to get it. 21 such pointers exist across 21 systems.
Entity resolution
A dataset spanning 1993 to the present contains vendors that no longer exist under the name they shipped under. Cray, SGI, Compaq, Bull, Mellanox and Thinking Machines all appear in these systems. Any aggregate that treats “Cray” in 2012 and “HPE” in 2022 as unrelated entities will produce a wrong answer, and any aggregate that silently rewrites the 2012 row as HPE will lose the historical fact.
We keep both. Each component edge records the supplier at time of build.
A separate vendor_aliases table maps raw vendor strings to the corporate
parent that owns them today, with an era range and its own source, so aggregation rolls
up correctly while display keeps the historical name — “Cray (now HPE)”.
38 distinct vendor strings are currently mapped across 46 era-scoped rows.
Thinking Machines is the instructive case. It went bankrupt in 1994 and folds into
nothing. It is carried as a first-class company with status defunct rather
than being attributed to a successor that does not exist, and every rollup has to handle
that terminal case explicitly.
Estimated FLOPS, and what we refuse to publish
The largest commercial AI clusters built in the last three years mostly never submitted HPL results. Estimating their performance is the most valuable thing this dataset could do and the fastest way to destroy its credibility. An unsourced number that gets quoted and turns out wrong costs more than an omission.
So: Phase 1 publishes no estimated FLOPS at all. The schema supports it, the pipeline validates it, and the ingest script refuses any estimate that does not name a published estimator. Estimates ship when the estimator ships, on the shadow-list analysis page, with the method fully exposed and a downloadable CSV of the derived output.
Classified and undisclosed national systems are carried as rows with
workload_class: classified and confidence reported, using
only what the operating agency has stated publicly. We do not infer capability from
budget, floor space or procurement size.
Facility fields — utility, substation capacity, PUE — are left blank where no public source states them. A blank means we have not found one. It does not mean zero, and it should not be treated as zero in any aggregate.
Derived figures
Any chart on this site that aggregates FLOPS by supplier attributes each system's Rmax once. Where a system has more than one supplier in the same role — because it was rebuilt with different silicon — the FLOPS are split evenly between them rather than double-counted. Systems with no accelerator are shown as a CPU-only bucket rather than dropped; dropping them is the single most common way this chart is drawn wrong.
Aggregate FLOPS attributed to a company is a breadth measure. It is not revenue and it is not attributable share: an integrator and a memory supplier in the same machine each count its full FLOPS. Role-weighted attribution is deliberately deferred until the method can be published alongside it.
Every analysis page carries a “how this was calculated” expander and a CSV of our derived output — never of the source list.
Reproducing this dataset
The repository is the source of truth. data/*.csv holds every row;
pnpm build:d1 regenerates the queryable database from it deterministically,
emitting a SHA-256 of the output so identical input provably produces identical output.
The database is never hand-edited, and every static page on this site renders from the
CSVs rather than from the database — which is why a system page still loads when the
database is unavailable.
Anything the spec-string parser cannot map with sufficient confidence goes to
ingest/review_queue.json for manual resolution. It is never guessed and
never silently dropped.
Corrections
Current dataset: 21 systems, 104 component edges, 91 parts, 61 companies, 14 sites. This is a Phase 1 seed compiled by hand and not yet through a second-reader verification pass. If a row here is wrong, the fastest fix is to point at the row and the source that contradicts it.