Skip to content

Commit ae20879

Browse files
authored
Merge pull request #4 from hubblo-org/dev
GPU calculator publication
2 parents 68ee14c + 9634d62 commit ae20879

58 files changed

Lines changed: 3352 additions & 1199 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: docker_release
2+
3+
on:
4+
push:
5+
branches: main
6+
paths-ignore:
7+
- "docs/**"
8+
- "README.md"
9+
tags: [ 'v*.*.*' ]
10+
11+
jobs:
12+
build_and_release:
13+
name: build_and_release_docker_image
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v6
18+
- name: Docker metadata
19+
id: meta
20+
uses: docker/metadata-action@v5
21+
with:
22+
images: |
23+
hubblo/gpu-calculator
24+
tags:
25+
type=semver,pattern={{version}}
26+
- name: Login to DockerHub
27+
uses: docker/login-action@v3
28+
with:
29+
username: ${{ secrets.DOCKERHUB_USERNAME }}
30+
password: ${{ secrets.DOCKERHUB_TOKEN }}
31+
- name: Setup Docker Buildx
32+
uses: docker/setup-buildx-action@v3
33+
- name: Build and push
34+
id: docker_build
35+
uses: docker/build-push-action@v6
36+
with:
37+
context: .
38+
push: true
39+
tags: ${{ steps.meta.outputs.tags }}

.github/workflows/test.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: unit and integration testing
2+
3+
on:
4+
push:
5+
branches: main
6+
paths-ignore:
7+
- "docs/**"
8+
- "README.md"
9+
pull_request:
10+
branches: [main, dev]
11+
paths-ignore:
12+
- "docs/**"
13+
- "README.md"
14+
15+
jobs:
16+
test:
17+
name: test_gpu_calculator
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v6
22+
- name: Setup Node.js
23+
uses: actions/setup-node@v6
24+
with:
25+
node-version: v24.14.0
26+
- name: Install dependencies
27+
run: npm ci
28+
- name: Run tests
29+
run: npm run test

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ node_modules
1515
.DS_Store
1616
Thumbs.db
1717

18+
# JetBrains
19+
.idea
20+
1821
# Env
1922
.env
2023
.env.*

Dockerfile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
FROM node:20.11-alpine
2+
3+
LABEL org.opencontainers.image.authors="contact@hubblo.org"
4+
LABEL org.opencontainers.image.description="Docker image for Hubblo GPU calculator, a calculator for evaluating a graphics card's environmental impacts"
5+
LABEL org.opencontainers.image.licenses=Apache-2.0
6+
LABEL org.opencontainers.image.title="gpu-calculator"
7+
8+
ENV PORT=5000
9+
ENV ORIGIN=https://data.hubblo.org
10+
11+
WORKDIR /gpu-calculator
12+
13+
COPY package.json package-lock.json ./
14+
15+
RUN npm install
16+
17+
COPY . .
18+
19+
RUN npm run build
20+
21+
EXPOSE 5000
22+
23+
CMD ["node", "build"]

docs/doc-en.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Methodology
2+
3+
## Introduction
4+
5+
The calculator is based on the parametric model developed for ADEME by Tide, Hubblo, and TND as part of research published in 2025 (Falk et al., 2025). The model is the result of extensive data collection, including the dismantling of a dozen graphics cards and a dozen elemental analyses. The following references give more detail on the data collected in question.
6+
7+
- [ADEME report](TBD)
8+
- [Research paper](https://arxiv.org/abs/2509.00093)
9+
10+
## Objective
11+
12+
This parametric model was developed to make available a simple quantitative framework useful in the evaluation of embedded environmental impacts of graphics cards. *Embedded* impacts are the impacts for raw materials extraction and transformation, manufacturing, distribution and end-of-life.
13+
14+
Through the analysis of seven graphics cards performed during research (ADEME, 2026 ; Falk et al., 2025), we have been able to identify key parameters useful in sizing the environmental impacts of a given graphics card. These parameters can be found rather easily, without extensive data collection such as the one accomplished in our research.
15+
16+
The upstream impacts (raw material extraction and transformation, manufacturing) are sized to the scale of a component, in order to distinguish their discrete characteristics. Transport and end-of-life impacts are sized to the scale of a whole card, given that these steps are linked to the assembled graphics card.
17+
18+
The methodology and data are detailed in the following sections.
19+
20+
## Parameters
21+
22+
The key parameters are detailed in the following table. Default parameters are suggested when data is not publicly available.
23+
24+
| Parameter | Default value | Note |
25+
|-----------------------------------------|--------------------------------------------------|----------------------------------------------------------------------|
26+
| Card weight | This should be public | Usually documented in product information |
27+
| Heatsink weight share | 53% | |
28+
| Electronic card surface | Graphics card surface | |
29+
| Video memory capacity (VRAM) | This should be public | Usually found in https://www.techpowerup.com/ |
30+
| Number of VRAM dies | This should be public | Usually found in https://www.techpowerup.com/ |
31+
| GPU chip surface | This should be public | Usually found in https://www.techpowerup.com/ |
32+
| Travel distance - plane | 19,000 km | Distance between Shenzhen and Paris |
33+
| Travel distance - truck | 1,000 km | Default inland distance |
34+
| Travel distance - boat | 0 km | |
35+
36+
**Table 1:** Model parameters
37+
38+
## Model by component
39+
40+
### Manufacturing
41+
42+
The cards manufacturing impacts equal the sums of the following components impacts.
43+
44+
#### Casing
45+
46+
The casing impacts are the ratio of its weight to the average impact of all casings (by kilogram) from the cards analyzed during research. The casing impacts by kilogram are summarized in table 2.
47+
48+
#### Heatsink
49+
50+
The heatsink impacts are the ratio of its weight to the average impact of all heatsinks (by kilogram) from the cards analyzed during research. On average, heatsink represents 53% of the card total weight. The heatsink impacts by kilogram are summarized in table 2.
51+
52+
#### Printed Wiring Board (PWB) without GPU and VRAM
53+
54+
The PWB impacts, composed of electronic and digital components aside from the GPU and VRAM, are the ratio of its surface to the average impacts of all PWBs (by square centimeter) from the cards analyzed during research. The PWB impacts by square centimeter are summarized in table 2.
55+
56+
#### GPU
57+
58+
The GPU impacts are the ratio of its surface to the average impacts of all GPUs (by square millimeter) from the cards analyzed during research, including losses. The total surface, including losses, is calculated from the surface of the chips provided as parameters.
59+
60+
61+
Semiconductor manufacturing is a complex process, even more so for the more advanced and larger chips.
62+
Losses occur on three occasions:
63+
- Wafer edge losses, where the dies are on the edge of the wafer and are therefore incomplete;
64+
- Kerf losses, due to the kerf width when cutting the dies;
65+
- Defect losses, such as dust, mistakes, etc.
66+
67+
The whole accounting for losses result in the dies yield rate, according to their dimensions. Yield rate can be calculated according to different models, in the absence of primary data coming from the manufacturer.
68+
69+
In our model, losses are accounted through Murphy's model, with a defect rate of O.1/cm².
70+
71+
GPU impacts, per square centimeter and including losses, are summarized in table 2.
72+
73+
#### VRAM
74+
75+
The VRAM impacts are the ratio of its surface to the average impacts of all VRAMs (by square millimeter) from the cards analyzed during research. The total surface, including losses, is calculated from the chips surface provided as parameters, in the same manner as detailed in the previous section related to GPUs. VRAM impacts, per square millimeter and including losses, are summarized in table 2.
76+
77+
#### Upstream transport
78+
79+
The upstream transport impacts, meaning the impacts of the different transport operations needed from the manufacturing process to the card assembly, are the ratio of its weight to the average impacts (by kilogram) of all cards analyzed during research. Upstream transport by kilogram are summarized in table 2.
80+
81+
#### Distribution
82+
83+
The distribution impacts, from the assembly plant to the final destination, are the sum of impacts for transport by plane, by boat and by truck, based on a ratio kilogram / kilometer. The distribution impacts by kilogram / kilometer for each mean of transportation are documented in the [EIME database](https://www.cps.bureauveritas.com/electronics/services/innovation-digital-leadership/eco-design-software) and are summarized in table 2. The default parameters are a distance of 19.000 kilometers by plane and 1000 kilometers by truck.
84+
85+
86+
#### Use
87+
88+
Use impacts are not considered in our parametric model. They can nonetheless be evaluated by accounting the cards energy consumption across their life-cycle, along with the local energy mix. Electrical consumption can be established from the average consumption calculated through benchmarks or measures, or can be based on the card Thermal Design Power documented by the manufacturer.
89+
90+
#### End-of-life
91+
92+
End-of-life impacts are the ratio of the card weight to the average impacts (by kilogram) of all cards analyzed during research. End-of-life impacts (by kilogram) are summarized in table 2.
93+
94+
| Name | Unit | PEF-AP (mol H+ eq.) | PEF-GWP (kg CO2 eq.) | PEF-CTUe (CTUe) | PEF-PM (Disease occurrence) | PEF-Epf (kg P eq.) | PEF-Epm (kg N eq.) | PEF-Ept (mol N eq.) | PEF-CTUh-c (CTUh) | PEF-CTUh-nc (CTUh) | PEF-IR (kBq U235 eq.) | PEF-LU (No dimension) | PEF-ODP (kg CFC-11 eq.) | PEF-POCP (kg NMVOC eq.) | PEF-ADPf (MJ) | PEF-ADPe (kg SB eq.) | PEF-WU (m3 eq.) |
95+
|------------------------------|---------------------------|----------------------------|-----------------------------|------------------------|------------------------------------|---------------------------|---------------------------|----------------------------|--------------------------|---------------------------|------------------------------|------------------------------|--------------------------------|--------------------------------|----------------------|-----------------------------|------------------------|
96+
| Casing | 1 kilogram | 5,96E-02 | 8,25E+00 | 4,09E+02 | 3,74E-07 | 3,90E-05 | 6,62E-03 | 7,24E-02 | 3,47E-08 | 3,22E-06 | 4,78E+00 | 5,07E-01 | 1,26E-06 | 2,51E-02 | 2,43E+02 | 4,08E-04 | 3,89E+00 |
97+
| Heatsink | 1 kilogram | 2,18E-01 | 5,74E+00 | 4,20E+02 | 1,36E-06 | 1,50E-03 | 5,22E-03 | 6,04E-02 | 2,15E-05 | 2,78E-06 | 3,25E+02 | 3,54E+00 | 1,15E-06 | 2,99E-02 | 8,50E+01 | 1,87E-03 | 1,05E+01 |
98+
| PCB | 1 square centimeter | 3,16E-04 | 3,25E-02 | 5,24E-01 | 1,70E-09 | 1,21E-07 | 2,45E-05 | 2,64E-04 | 4,22E-09 | 1,69E-09 | 9,69E-02 | 1,39E-04 | 4,80E-09 | 9,71E-05 | 5,10E-01 | 1,27E-05 | 1,62E-02 |
99+
| GPU | 1 square millimeter | 2,35E-04 | 4,26E-02 | 5,44E-01 | 1,30E-09 | 1,33E-07 | 2,83E-05 | 2,94E-04 | 9,72E-12 | 2,32E-10 | 4,60E-04 | 1,70E-04 | 1,86E-08 | 9,25E-05 | 5,56E-01 | 1,55E-08 | 1,48E-02 |
100+
| VRAM | 1 square millimeter | 1,01E-03 | 1,84E-01 | 2,35E+00 | 5,59E-09 | 5,72E-07 | 1,22E-04 | 1,27E-03 | 1,72E-11 | 9,95E-10 | 1,54E-03 | 7,31E-04 | 8,01E-08 | 3,99E-04 | 2,40E+00 | 5,07E-09 | 7,08E-02 |
101+
| Upstream transport | 1 kilogram | 1,73E-03 | 2,60E-01 | 1,75E-01 | 1,50E-08 | 9,71E-08 | 8,16E-04 | 8,96E-03 | 4,63E-12 | 5,73E-10 | 6,31E-04 | 0,00E+00 | 3,97E-10 | 2,27E-03 | 3,61E+00 | 1,02E-08 | 9,84E-04 |
102+
| Transport - truck | 1 kg.km | 3,19E-07 | 5,04E-05 | 3,39E-05 | 2,59E-12 | 1,89E-11 | 1,50E-07 | 1,64E-06 | 8,85E-16 | 9,58E-14 | 1,23E-07 | 0,00E+00 | 7,72E-14 | 4,14E-07 | 7,03E-04 | 1,98E-12 | 1,91E-07 |
103+
| Transport - boat | 1 kg.km | 5,34E-07 | 1,33E-05 | 7,92E-06 | 2,76E-12 | 4,46E-12 | 1,22E-07 | 1,34E-06 | 1,89E-16 | 4,28E-14 | 2,63E-08 | 0,00E+00 | 1,65E-14 | 3,45E-07 | 1,63E-04 | 4,62E-13 | 4,20E-08 |
104+
| Transport - plane | 1 kg.km | 8,77E-06 | 2,11E-03 | 1,37E-03 | 5,44E-11 | 7,44E-10 | 3,95E-06 | 4,32E-05 | 3,19E-14 | 1,67E-12 | 3,89E-06 | 0,00E+00 | 2,44E-12 | 1,06E-05 | 2,95E-02 | 8,31E-11 | 8,38E-06 |
105+
| End-of-life | 1 kilogram | 3,17E-02 | 1,51E+00 | 7,62E+02 | 9,63E-08 | 3,11E-05 | 2,11E-02 | 1,47E-02 | 5,89E-09 | 2,33E-07 | 1,23E-01 | 6,74E+00 | 1,39E-07 | 5,37E-03 | 1,95E+01 | 3,71E-06 | 7,30E+02 |
106+
107+
**Table 2:** Average impact factors by component

0 commit comments

Comments
 (0)