Skip to content
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

Gpu data #86

Draft
wants to merge 42 commits into
base: beta
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 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
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
Expand Down Expand Up @@ -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}
Expand Down Expand Up @@ -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'
Expand All @@ -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
Expand Up @@ -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
Expand Up @@ -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);
Expand Down
99 changes: 87 additions & 12 deletions build/combine-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -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: /^(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
Expand All @@ -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,
Expand All @@ -126,7 +192,7 @@ const combineUtil = {
},
// HD
{
nameTest: /HD-.*\d{4}(-|$)/,
nameTest: /^(Radeon.)?HD-.*\d{4}(-|$)/,
brand: 'amd',
type: 'gpu',
parser: () => {
Expand Down Expand Up @@ -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: () => {
Expand Down
Loading