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. | 786 |
| Reported | One credible public source: a vendor press release, lab announcement, procurement notice or filing. Not yet independently corroborated. | 4793 |
| Estimated | Derived by us from partial disclosure using a published method. Never a bare guess; the calculation is shown on /methodology. | 2 |
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. 1051 such pointers exist across 1540 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)”.
79 distinct vendor strings are currently mapped across 89 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: no system row carries an estimated FLOPS figure. The schema supports it,
the pipeline validates it, and the ingest script refuses any estimate that does not name a
published estimator. The one published estimate, anchor-bracket-v1, lives only
on the shadow-list analysis page, derived from measured rates in this dataset, 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.
Cooling architecture is the one place we infer rather than cite per system. Operators publish core counts and interconnect families consistently and cooling rarely, but the integrator's cabinet determines the architecture: every HPE Cray EX cabinet is direct liquid cooled, every BullSequana XH2000 and XH3000 is a direct liquid cooled platform, the Cray XT/XE/XK/XC generations moved air across in-cabinet water coils. Where the platform is unambiguous we record the architecture with the integrator as supplier, confidence reported, and the basis for the inference written into the edge itself so a reader can judge it. Where the platform does not settle it we record nothing rather than assigning a plausible value.
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: an invented weighting is indistinguishable from a real one once it has been quoted.
Two fields exist purely so that time-based analyses cannot overstate what we know.
Component edges carry optional era_start and era_end dates for parts
that did not last the whole life of a system, which is what keeps Tianhe-2's superseded Intel
accelerators from appearing to run for another seven years. Systems carry status_as_of, the date the recorded status was last supported by a source: an operational system
with no retirement date means we found no source saying it was retired, and an analysis
of how long hardware stays in service must not read that absence of evidence as evidence
of absence.
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.
How far to trust that parser. It reproduces 5581 of 5581 edges already in the graph, which measures memory rather than skill. The number that measures skill is its score against a frozen corpus of vendor strings it has never seen, and that score is 47.8%. It has not moved across two substantial passes of rule-writing at opposite ends of the timeline, one covering 2024-25 silicon and one covering 1993-96 silicon, and the reason is structural: spec-string parsing does not generalise. A rule for Hitachi's SR2201 tells you nothing about its SR16000. Coverage is a measure of how much vendor vocabulary we have written down, not of how good the parser is.
This matters for reading the rest of the site only in one direction. Every edge the parser produces enters as reported rather than verified, and strings it cannot resolve go to a review queue instead of becoming an edge. A parser that fails half the strings it has never seen sends more work to that queue; it does not put guesses on a page.
The second-reader pass
pnpm verify does the mechanical half of a second-reader pass: it fetches
each system's own cited sources and records whether the page, as we receive it, actually
mentions the system, the components we attribute to it, and the quantities we record.
Every data page reports what it found rather than a uniform caveat.
This is a corroboration signal, not a fact check. A page mentioning "Frontier" and "MI250X" does not establish that it says what we say it says. So nothing is promoted to verified on the strength of it. What it does establish is the opposite and more useful direction: when a cited page does not mention the system at all, that citation is weak, and we would rather tell you than let uniform formatting imply uniform rigour.
Results are committed to data/verification.csv and shown on each system page
under “Source check”, so you can see the evidence per row rather than take a summary on
trust. Last run 2026-10-18 against 2711 cited sources.
| Result | Sources | Systems at best | What it means |
|---|---|---|---|
| strong | 302 | 244 | The page names the system, a component we attribute to it, and a quantity we record. |
| partial | 1156 | 753 | The page names the system and at least one component we attribute to it. |
| weak | 794 | 353 | The page names the system but none of its components. |
| absent | 305 | 64 | We fetched the page and it does not mention the system. A real weakness. |
| blocked | 61 | 10 | The host returned a bot challenge or a JavaScript shell instead of the page. |
| unreachable | 93 | 24 | The host did not respond from our network. |
Read honestly. 1350 of 1540 systems have at least one readable citation that names them. 64 are genuinely weakly sourced: every source cited was readable and none mentions the system. 12 are partly readable, where one source misses the system and another was blocked. 22 could not be checked at all because every cited host returned a bot challenge or did not respond.
That three-way split matters more than the headline. The first version of this tool scored every unreadable page as "the source does not mention the system", which turned four weak rows into an apparent twenty-four and libelled a lot of perfectly good citations. "We could not read it" and "we read it and it is not there" are different claims, and only the second is evidence about the dataset.
The largest single cause of a weak citation is documented elsewhere on this site and is worth repeating here: where a stable deep link could not be verified, we recorded the citation at page or section granularity rather than fabricating a document-level URL. A laboratory's home page is a real source for the existence of a laboratory and a poor one for the core count of a machine it retired in 2019. This pass is how many of those there are, counted rather than estimated.
Analytics
This site uses Google Analytics (GA4) with Google Consent Mode to see which pages get read. Every storage permission starts as denied. Until a visitor allows it, Google Analytics sets no cookies and stores no identifier, and receives only an anonymous page-load ping: the page address, the referrer, a truncated IP address and the browser's user agent. That is enough to count how many times a page is loaded. On a first visit, every visitor is asked in a dialog whether to allow analytics cookies: "Accept all" upgrades the visit to full measurement, and "Accept required" keeps it to the anonymous page-load count. Both choices give full access to the whole site. Visitors whose browser sends Global Privacy Control are not asked and are treated as declining. The choice is stored in the browser's local storage, not a tracking cookie, and can be changed at any time from the "Cookie choices" link in the footer. The same local storage also holds your watchlist and game progress, which never leave your browser. No advertising cookies are used. No analytics runs on this page's own server, so declining costs nothing else on the site: every page is a static file served the same way regardless of the choice.
How this site is made
AI does most of the research and drafting. The rows in this dataset are
researched by AI agents (Claude, from Anthropic) that fetch public pages, such as operator
hardware pages, TOP500 system pages, press releases, filings and papers, and record what
those pages say together with the page they came from. The agents write their findings as
scripts that append rows to the CSV files in data/. The longer pieces on the
blog, the glossary-style explainers and the page text built from the rows are also written
with AI assistance. Charts and tables are drawn by code from the data, not by an image model.
What is not done by AI. The numbers on a page are never typed in by a model during page generation: FLOPS, core counts, power and capacity figures come from rows, and totals and rankings are computed by scripts. Agents are told to leave a field blank rather than guess, and to cite only pages they actually fetched.
How it is checked. Every row has to pass automated validation (referential integrity, units, dates, unique names, a source on every fact, a second distinct source for the verified tier). A link checker and a source reader fetch each cited page and report whether it mentions the system. When a source is paywalled or a page is gone, the row is marked or reworded rather than left silently. The operator directs each research round and reads summaries of what changed.
What is not checked. Individual rows are not read one by one by a person, and no engineer, lawyer or financial adviser has reviewed this site. The verified tier means two independent public sources agree, not that a human re-read them. Errors will exist; the error rate has not been measured. Where two credible sources disagree we say so on Where sources disagree.
There are no invented authors, bylines or credentials on this site: pages are published under the site name, Compute Atlas. Nothing here is investment advice.
Corrections
Current dataset: 1540 systems, 5581 component edges, 275 parts, 836 companies, 545 sites. Rows are researched by AI agents and checked by scripts (see how this site is made). The mechanical half of a second-reader pass has run against every cited source, and 286 of 1540 systems carry the verified tier, meaning two independent public sources agree. If a row here is wrong, the fastest fix is to point at the row and the source that contradicts it.