New features
* Add new end-user devices from Base Empreinte
* Add PEF impacts criteria
* Add IoT device impacts
* Add min/max values depending on user input completeness
* Add warnings
* Improvement of the completion process from CPU name
* Adding around 2000 CPUs for completion
* Adding utils routers (list available data for string fields, archetypes routers, etc.)
* Users can now choose the impact factors to compute
* Users can now add a special message to the home page of the API
* Refactor and normalize routes names
* CPU die is now express in mm2 instead of cm2
* Refactor the allocation process based on duration
Internal changes
* Facilitating the completion process
* Facilitating the process of adding new devices
* Facilitating the archetype process
* Externalize the impact factors in a separate file
* Create a config file
* CPU die completion now use cpu spec file
* CPU uses die_size instead of die_size_per_core
Breaking changes
Cloud routers
Before
* We add one rout per cloud provider (e.g. /v1/cloud/aws)
Now
* We have only one route for all cloud providers (e.g. /v1/cloud/instance)
* Each route has a parameter called provider (in the url for GET requests, in the body for POST requests).
Duration & allocation
Before
* Duration was a field in the usage object called hours_use_time.
{
"usage": {
"hours_use_time": 2,
}
}
* Allocation was a route parameter.
Now
* Duration is now a route parameter. Allocation is no longer used
* If not provided, we use the lifetime of the device as duration.
* We compute usage impacts hover the duration and allocate embedded impacts on the duration hover the lifetime of the device.
* We introduce the notion of use_time_ratio which is the proportion of time the device is used during the given duration. When a device is always used, the usage ratio is 1. When a device is never used, the usage ratio is 0.
{
"usage": {
"use_time_ratio": 0.5,
}
}
Impacts format
Before
json
"gwp": {
"manufacture": 1900,
"use": 260,
"unit": "kgCO2eq"
},
or
json
"manufacture_impacts": {
"gwp": {
"value": 23.8,
"unit": "kgCO2eq"
},
"pe": {
"value": 353,
"unit": "MJ"
},
"adp": {
"value": 0.02,
"unit": "kgSbeq"
}
}
}
Now
* Impact formats are now unified.
* "manufacture" is now called "embedded"
json
"impacts": {
"gwp": {
"embedded": {
"value": 6.68,
"min": 6.68,
"max": 6.68,
"warnings": [
"End of life is not included in the calculation"
]
},
"use": "not implemented",
"unit": "kgCO2eq",
"description": "Total climate change"
},
Verbose format
Before
json
"USAGE": {
...
"usage_impacts": {
...
}
"avg_power": {
"value": 94.62364134445255,
"unit": "W",
"status": "COMPLETED",
"source": null
},
...
}
Now
* For each component, all attributes are now at the same level in the dictionary.
* Usage impacts are now in the "impacts" dictionary
* Usage attributes are now at the same level as the other attributes
* Attributes may have a "min", a "max" and a "warnings" field.
json
"CPU-1": {
"impacts": {
"gwp": {
"embedded": {
"value": 64.7,
"significant_figures": 3,
"min": 24.6,
"max": 149,
"warnings": [
"End of life is not included in the calculation"
]
},
"use": {
"value": 160,
"significant_figures": 2,
"min": 160,
"max": 160
},
"unit": "kgCO2eq",
"description": "Total climate change"
}
},
"die_size_per_core": {
"value": 0.47078947368421054,
"status": "COMPLETED",
"unit": "mm2",
"source": "Average for Skylake",
"min": 0.07,
"max": 1.02
}
...
}
Contributors
airloren
csauge
da-ekchajzer
samuelrince
dorev
demeringo
PierreRust
Known future requirements
* Mobile and fix network impacts
* Generalize the AWS process to other cloud providers
* GPU impacts
* Add multiple impact factors for depending on the engraving process size
* Screen impacts from characteristics
* Take into account the uncertainty of the impact factors
* Adding a system layer