Skip to content

Gpu data #86

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 65 commits into from
May 12, 2025
Merged
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
69f21bb
missingcpus
Sam-Mear Jul 8, 2023
016aa9e
Correctly gets cpus but no benchmark data
Sam-Mear Jul 8, 2023
2db0971
Updated names and readme
Sam-Mear Jul 8, 2023
55a5d2c
Updated readme
Sam-Mear Jul 8, 2023
19a3adc
added todo
Sam-Mear Oct 27, 2023
171e7c3
added initial intel data
Sam-Mear Dec 21, 2023
aa88ef8
removed benchmarks
Sam-Mear Jan 18, 2024
4ed9897
wip?
Sam-Mear Mar 26, 2024
4c2f8b5
gpus
Sam-Mear Jul 16, 2024
74f0043
manufacturer
Sam-Mear Jul 18, 2024
2a61f81
organise data, add to row-data
Sam-Mear Jul 27, 2024
e4ae20a
fix vram capacity
Sam-Mear Jul 29, 2024
c9af725
gpu categorisation
Sam-Mear Sep 19, 2024
6614342
more GPU categorisation
Sam-Mear Oct 15, 2024
34347ce
updating scrapers for benchmarking
Sam-Mear Nov 11, 2024
25e4b13
fix geekbench benchmark name and fix radeon benchmarks
Sam-Mear Nov 14, 2024
3433625
finish passmark
Sam-Mear Nov 18, 2024
3fed114
add intel gpu benchmarks
Sam-Mear Nov 18, 2024
d1bbfd9
geekbench opencl
Sam-Mear Nov 18, 2024
8e492ec
more benchmark data
Sam-Mear Nov 22, 2024
92df814
some cleanup
Sam-Mear Dec 5, 2024
79b153e
disable GPU tests for now, will completely re-do
Sam-Mear Dec 5, 2024
73851fd
fix the tmp/scrape .gitkeep
Sam-Mear Dec 5, 2024
e2a0b53
Revert "wip?"
Sam-Mear Dec 7, 2024
925ecd0
remove console logs
Sam-Mear Dec 7, 2024
5dac70c
add user agent to curl
Sam-Mear Dec 7, 2024
47a80d2
remove old never implemented code
Sam-Mear Dec 7, 2024
e644b94
more file permission fixes
Sam-Mear Dec 7, 2024
70f522d
Merge branch 'beta' into gpu-data
Sam-Mear Dec 8, 2024
13cdacd
fix some gpu outputs
Sam-Mear Dec 8, 2024
4172e63
wip - categorisation
Sam-Mear Dec 8, 2024
3243226
add Pixel Shaders
Sam-Mear Dec 9, 2024
c61e9f9
Rankine categorisation
Sam-Mear Dec 10, 2024
1d92137
remove intel scraper
Sam-Mear Dec 10, 2024
1c16df3
More categorisation
Sam-Mear Dec 10, 2024
fbdd99e
fix PRO-v710 name
Sam-Mear Dec 10, 2024
eb74b03
AMD server gpus categorisation
Sam-Mear Dec 11, 2024
74cd976
More categorisation and data fixing
Sam-Mear Dec 11, 2024
1467957
fix missing `members:`
Sam-Mear Dec 11, 2024
0566084
unfinished intel arc, some minor edits
Sam-Mear Dec 12, 2024
b4d2b93
amd lithography fix and categorisation
Sam-Mear Dec 14, 2024
174a927
Nvidia categorisation, intel battlemage
Sam-Mear Dec 17, 2024
8d30168
Turing categorisation
Sam-Mear Dec 28, 2024
753466e
brand colour, change market position
Sam-Mear Dec 28, 2024
a5b8515
fix nm for intel gpus
Sam-Mear Jan 13, 2025
a312272
Added Market to Quadro
Sam-Mear Jan 16, 2025
32d8de6
more Market categorisation
Sam-Mear Jan 16, 2025
c12b9e5
Add market to GTX
Sam-Mear Jan 17, 2025
46d4728
Add market to geforce go
Sam-Mear Jan 17, 2025
7297ec1
add market to GTX mobile
Sam-Mear Jan 17, 2025
389f8dc
radeon mobile market
Sam-Mear Jan 17, 2025
b82d4b9
Add mobile market to lots of gpus
Sam-Mear Jan 17, 2025
a19e023
firegl workstation market
Sam-Mear Jan 17, 2025
435aa7e
Server categorisation and added consumer market to existing gpus with…
Sam-Mear Jan 19, 2025
9e50737
wip blackwell
Sam-Mear Feb 5, 2025
538a5ac
fix lithography
Sam-Mear Mar 4, 2025
59b1111
Add missing GPUs
Sam-Mear Mar 5, 2025
2d1b1f5
update outputs
Sam-Mear Mar 19, 2025
5183d07
unimported hardware accelerated media nvidia data
Sam-Mear Mar 20, 2025
77f6fa0
fix decode csv
Sam-Mear Mar 24, 2025
ef5daf2
hardware accelerated decoding/encoding
Sam-Mear May 6, 2025
1625829
missing parts
Sam-Mear May 6, 2025
2ff3d10
fix broken part
Sam-Mear May 6, 2025
b4df788
update name and include on row js
Sam-Mear May 6, 2025
4a4e72c
fix broken parts
Sam-Mear May 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
53 changes: 30 additions & 23 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PATH := ./node_modules/.bin:${PATH}
# to dl, this followed by output file followed by url
curl := curl --retry 5 --retry-delay 5 --connect-timeout 30 -fo
curl := curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0" --retry 5 --retry-delay 5 --connect-timeout 30 -fo
node := node ${NODE_OPTS}

tests := ./tests/*.js
@@ -35,24 +35,26 @@ athr_folder:= ./specs

map_output := ./public/sitemap.txt

intc_procs := ./tmp/intel-scrape.json
intc_codes := ./tmp/intel-scrape-codenames.json
intc_scrape:= ${intc_procs} ${intc_codes}
intc_parse := ./tmp/intel-parse.json

ubch_cpus := ./tmp/userbenchmark-scrape-cpus.csv
ubch_gpus := ./tmp/userbenchmark-scrape-gpus.csv
ubch_cpus := ./tmp/scrape/userbenchmark-scrape-cpus.csv
ubch_gpus := ./tmp/scrape/userbenchmark-scrape-gpus.csv
ubch_scrape:= ${ubch_cpus} ${ubch_gpus}
ubch_parse := ./tmp/userbenchmark-parse.json

3dmk_cpus := ./tmp/3dmark-scrape-cpus.html
3dmk_gpus := ./tmp/3dmark-scrape-gpus.html
3dmk_cpus := ./tmp/scrape/3dmark-scrape-cpus.html
3dmk_gpus := ./tmp/scrape/3dmark-scrape-gpus.html
3dmk_scrape:= ${3dmk_cpus} ${3dmk_gpus}
3dmk_parse := ./tmp/3dmark-parse.json

gbch_scrape:= ./tmp/geekbench-scrape.html
gbch_cpus := ./tmp/scrape/geekmench-scrape-cpus.csv
gbch_gpus_opencl := ./tmp/scrape/geekmench-scrape-gpus-opencl.csv
gbch_gpus_vulkan := ./tmp/scrape/geekbench-scrape-gpus-vulkan.csv
gbch_scrape:= ${gbch_cpus} ${gbch_gpus_opencl} ${gbch_gpus_vulkan}
gbch_parse := ./tmp/geekbench-parse.json

psmk_gpus := ./tmp/scrape/pass-mark-scrape-gpus.html
psmk_scrape := ${psmk_gpus}
psmk_parse := ./tmp/pass-mark-parse.json

prod := false

development: ${n_sentinel} ${dev_guard} ${css_output} ${js_output}
@@ -82,20 +84,13 @@ ${sw_output} : ${sw_m_input}
${sw_output} 2>/dev/null

${spec_output} ${map_output} : ${athr_output} ${intc_parse} ${ubch_parse} ${3dmk_parse} \
${gbch_parse} build/combine-specs.js build/combine-util.js build/util.js
${gbch_parse} ${psmk_parse} build/combine-specs.js build/combine-util.js build/util.js
${node} build/combine-specs.js ${spec_output} ${map_output} \
${athr_output} ${ubch_parse} ${3dmk_parse} ${gbch_parse} ${intc_parse}
${athr_output} ${ubch_parse} ${3dmk_parse} ${gbch_parse} ${psmk_parse} ${intc_parse}

${athr_output} : ${athr_input} build/gen-specs.js
${node} build/gen-specs.js ${athr_folder} ${athr_output}

${intc_scrape} :
${curl} ${intc_procs} 'https://markasoftware.com/specdb-intel/intel-scrape.json'
${curl} ${intc_codes} 'https://markasoftware.com/specdb-intel/intel-scrape-codenames.json'

${intc_parse} : build/intel-parse.js build/intel-config.js ${intc_scrape}
${node} build/intel-parse.js ${intc_scrape} ${intc_parse}

${ubch_scrape} :
${curl} ${ubch_cpus} 'http://www.userbenchmark.com/resources/download/csv/CPU_UserBenchmarks.csv'
${curl} ${ubch_gpus} 'http://www.userbenchmark.com/resources/download/csv/GPU_UserBenchmarks.csv'
@@ -111,26 +106,38 @@ ${3dmk_parse} : ${3dmk_scrape} build/3dmark-parse.js
${node} build/3dmark-parse.js ${3dmk_scrape} ${3dmk_parse}

${gbch_scrape} :
${curl} ${gbch_scrape} 'https://browser.geekbench.com/processor-benchmarks'
@echo "Downloading Geekbench data..."
${curl} ${gbch_cpus} 'https://browser.geekbench.com/processor-benchmarks'
${curl} ${gbch_gpus_opencl} 'https://browser.geekbench.com/opencl-benchmarks'
${curl} ${gbch_gpus_vulkan} 'https://browser.geekbench.com/vulkan-benchmarks'
@echo "Geekbench data downloaded."

# MAYBE: an implicit rule for -parse.json
${gbch_parse} : ${gbch_scrape} build/geekbench-parse.js
${node} build/geekbench-parse.js ${gbch_scrape} ${gbch_parse}

${psmk_scrape} :
@echo "Downloading PassMark GPU data..."
${curl} ${psmk_gpus} 'https://www.videocardbenchmark.net/high_end_gpus.html'
@echo "PassMark GPU data download complete."

${psmk_parse} : ${psmk_scrape} build/passmark-parse.js
${node} build/passmark-parse.js ${psmk_scrape} ${psmk_parse}

${n_sentinel} : package.json
npm install
touch ${n_sentinel}

# clean everything
clean:
${MAKE} clean-nonet
rm -f ${n_sentinel} ${intc_scrape} ${3dmk_scrape} ${ubch_scrape} ${gbch_scrape}
rm -f ${n_sentinel} ${intc_scrape} ${3dmk_scrape} ${ubch_scrape} ${gbch_scrape} ${psmk_scrape}

# only clean things that can be regenerated without a network connection
clean-nonet:
rm -f ${css_output} ${js_output} ${sw_output} \
${spec_output} ${map_output} ${intc_parse} \
${ubch_parse} ${3dmk_parse} ${gbch_parse} \
${athr_output}
${psmk_parse} ${athr_output}

.PHONY: development production test clean clean-nonet watch
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -43,4 +43,4 @@ To contribute, please make a fork, and in your fork branch off from master to so

![BrowserStack logo](https://www.browserstack.com/images/layout/browserstack-logo-600x315.png)

Browserstack won't let me get their open-source plan without including their logo here. I can tell they really love open source and aren't just trying to get free advertising. Especially since the Browserstack backend/whatever is used to do real-device testing remotely isn't open source. But whatever, they're the only ones who provide decent real-device testing so I guess I have to use them because I don't want to buy Apple shit.
Browserstack won't let me get their open-source plan without including their logo here. I can tell they really love open source and aren't just trying to get free advertising. Especially since the Browserstack backend/whatever is used to do real-device testing remotely isn't open source. But whatever, they're the only ones who provide decent real-device testing so I guess I have to use them because I don't want to buy Apple shit.
40 changes: 28 additions & 12 deletions build/3dmark-parse.js
Original file line number Diff line number Diff line change
@@ -13,19 +13,35 @@ const parse = (path, partType, benchmarkType) => {
}).get();
// c => c.score sometimes gets rid of new GPUs which are listed, but
// whose score is displayed as "0" (this is good)
const niceData = rawData.filter(c => c.score).map(c => ({
combineMetadata: {
matcherInfo: {
name: c.name,
type: partType,
source: '3dmark',
if(partType == "gpu"){
const niceData = rawData.filter(c => c.score).map(c => ({
combineMetadata: {
matcherInfo: {
name: c.name,
type: partType,
source: '3dmark',
},
},
},
data: {
[`3DMark Fire Strike ${benchmarkType} Score`]: c.score,
},
}));
return niceData;
data: {
[`3DMark ${benchmarkType} Score`]: c.score,
},
}));
return niceData;
}else {
const niceData = rawData.filter(c => c.score).map(c => ({
combineMetadata: {
matcherInfo: {
name: c.name,
type: partType,
source: '3dmark',
},
},
data: {
[`3DMark Fire Strike ${benchmarkType} Score`]: c.score,
},
}));
return niceData;
}
}

const [cpuPath, gpuPath, outPath] = process.argv.slice(2);
99 changes: 87 additions & 12 deletions build/combine-util.js
Original file line number Diff line number Diff line change
@@ -85,23 +85,76 @@ const combineUtil = {
hints.type = hints.type.toLowerCase();
}



const series = [
// Intel Arc
{
nameTest: /^(\(R\).)?Arc(\(TM\))?.A[0-9]{3}(.Graphics)?$/i,
brand: 'intel',
type: 'gpu',
parser: () => {
return hints.cleanName.replace('(R)-','').replace('(TM)','').replace('-Graphics','');
},
// Intel(R) Arc(TM) A770 Graphics
},
// RX
{
nameTest: /^R[579X]-\d\d\d(?!.*[Ll]aptop)/,
nameTest: /(\(TM\)-)?(Pro.)?RX-(\(TM\)-)?\d{3,4}(?!.*[Ll]aptop)(.XT)?(.XTX)?$/i,
brand: 'amd',
type: 'gpu',
parser: () => {
// TODO: how do we give data with GB specified higher priority than data w/o?
const regexMatch = hints.cleanName.match(/(R[579X]-\d\d\dX?)(-(\d+)GB)?/);
if (regexMatch) {
const [ , rxXxx, , memorySize ] = regexMatch;
return combineUtil.toMatcher(
memorySize ?
`${rxXxx}-${memorySize}GiB` :
new RegExp(`^${rxXxx}(-\\d+GiB)?$`)
);
if(hints.cleanName.includes("Radeon")){
return hints.cleanName;
}
return `Radeon-${hints.cleanName}`;
},
},
// RTX / GTX
{
nameTest: /^(GeForce.)?[RG]TX.([a-z])?[0-9]{3,4}(M)?(.Ti)?(.SUPER)?(.D)?(.Max.Q)?(.(\()?Mobile(\))?)?(.(\()?Laptop.GPU(\))?)?(.Ada.Generation)?\s*$/i,
brand: 'nvidia',
type: 'gpu',
parser: () => {
return hints.cleanName.replace("(Mobile)","Mobile").replace("Laptop-GPU","Mobile");
},
},
// passmark max-q- geekbench sometimes too
{
nameTest: /^(GeForce.)?[RG]TX.[0-9]{3,4}(M)?(.Ti)?(.Super)?(.D)?(.with.Max.Q.Design)\s*$/i,
brand: 'nvidia',
type: 'gpu',
parser: () => {
//passmark has max-q like `with Max-Q Design`
return hints.cleanName.replace('with-Max-Q-Design',"Max-Q");
},
},
// Titans
{
nameTest: /^(NVIDIA)?(GeForce)?(.[RG]TX)?TITAN(.[a-z]*)?/i,
brand: 'nvidia',
type: 'gpu',
parser: () => {
return hints.cleanName.replace(/titan/i,"TITAN");
}
},
// 3DMark special GTX
{
nameTest: /^Geforce.[0-9]{3,4}(M)?(.Ti)?(.SUPER)?(.D)?(.Max.Q)?\s*$/i,
brand: 'nvidia',
type: 'gpu',
parser: () => {
return hints.cleanName.replace('GeForce-', 'GeForce-GTX-');
},
},
// Quadro
{
nameTest: /^Quadro/i,
brand: 'nvidia',
type: 'gpu',
parser: () => {
//passmark has max-q like `with Max-Q Design`
return hints.cleanName.replace('with-Max-Q-Design',"Max-Q");
},
},
// Vega
@@ -116,6 +169,19 @@ const combineUtil = {
`RX-Vega-${num}`;
},
},
// Radeon R9/7/5
{
nameTest: /^(Radeon.)?R(5|7|8|9)/i,
brand: 'amd',
type: 'gpu',
parser: () => {

if(hints.cleanName.includes("Radeon")){
return hints.cleanName.replace("Fury", "FURY");
}
return `Radeon-${hints.cleanName.replace("Fury", "FURY")}`;
},
},
// Radeon VII
{
nameTest: /radeon.vii\s*$/i,
@@ -126,7 +192,7 @@ const combineUtil = {
},
// HD
{
nameTest: /HD-.*\d{4}(-|$)/,
nameTest: /^(Radeon.)?HD-.*\d{4}(-|$)/,
brand: 'amd',
type: 'gpu',
parser: () => {
@@ -163,9 +229,18 @@ const combineUtil = {
return hints.cleanName.replace('Ryzen-TR-', '');
}
},
// Epyc
{
nameTest: /^Epyc/i,
brand: 'amd',
type: 'cpu',
parser: () => {
return hints.cleanName.replace('EPYC-', 'Epyc-');
}
},
// simple Intel
{
nameTest: /^(Pentium|Core|Xeon|Celeron|Atom)/,
nameTest: /^(Pentium|Core|Xeon|Celeron|Atom|core)/,
brand: 'intel',
type: 'cpu',
parser: () => {
Loading