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

Merging v1 into main #236

Merged
merged 298 commits into from
Oct 10, 2023
Merged

Merging v1 into main #236

merged 298 commits into from
Oct 10, 2023

Conversation

da-ekchajzer
Copy link
Collaborator

@da-ekchajzer da-ekchajzer commented Oct 10, 2023

v1.0.0

New features

  • Add new end-user devices from Base Empreinte (ADEME)
  • Add PEF impacts criteria from Base Empreinte (ADEME)
  • Add IoT device impacts from Pierson & Bol adapted by TIDE
  • Add min/max values depending on user input completeness
  • Round value based on distance between min and max
  • 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
"gwp": {
      "manufacture": 1900,
      "use": 260,
      "unit": "kgCO2eq"
    },

or

"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"
"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
"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.
  "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
@JacobValdemar

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 platform layer

da-ekchajzer and others added 30 commits April 11, 2023 00:26
fixing format in user terminal archetype
Create cpu_specs_raw_techpowerup.csv
Create cpu_specs_final_techpowerup.csv
Update cpu_specs_final_techpowerup.csv
Update cpu_specs_final_techpowerup.csv
Add source and total_die_size_source columns
Update cpu_specs_final_techpowerup.csv
da-ekchajzer and others added 28 commits September 29, 2023 10:22
Needed so that the model can fit very divergent cpu profiles like a Intel Xeon vs AWS Graviton.
TODO: add a warning for the end-user if the power is negative. This could be caused by wrong input data or model initialization.
Adding IoT devices impacts. Pirson & Bol approach adapted by TIDE
@da-ekchajzer da-ekchajzer merged commit 93d803e into main Oct 10, 2023
2 checks passed
@JacobValdemar
Copy link
Contributor

@AirLoren @csauge @da-ekchajzer @samuelrince @dorev @demeringo @PierreRust
Good job everyone! 👏 This is a big milestone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants