测量计算的环境影响

energyusage的Python项目详细描述


能量消耗

测量计算对环境影响的python包。提供一个函数 评估其他职能部门的能源使用和相关碳排放。 通过GeoJS API根据用户的位置计算排放量,该位置 能源结构数据(来源:2016年美国能源机构和egrid)。

安装

要安装,只需$pip install energyusage

用法

要计算函数的排放量,只需使用函数调用energyusage.evaluate 名称及其所需的参数。

importenergyusage# user function to be evaluateddefrecursive_fib(n):if(n<=2):return1else:returnrecursive_fib(n-1)+recursive_fib(n-2)energyusage.evaluate(recursive_fib,40,pdf=True)# returns 102,334,155

它将返回函数的值,同时在命令行上打印出能源使用报告。 可选关键字参数:

  • pdf(默认值为false):生成一个pdf报告,与命令行实用程序一起
  • powerloss(默认值=0.8):表示PSU丢失,如果已知结果精度更高,则可以由用户设置
  • energyoutput(默认值为false):打印进程使用的能量量

能源报告

将要打印出来的报告将如下所示。第二行和第三行将显示一个实时读数,该读数将在评估过程完成后消失。

Location:                                                           Pennsylvania
--------------------------------------------------------------------------------
-------------------------------  Final Readings  -------------------------------
--------------------------------------------------------------------------------
Average baseline wattage:                                             4.99 watts
Average total wattage:                                               18.32 watts
Average process wattage:                                             13.33 watts
Process duration:                                                        0:00:16
--------------------------------------------------------------------------------
-------------------------------   Energy Data    -------------------------------
--------------------------------------------------------------------------------
                           Energy mix in Pennsylvania                           
Coal:                                                                     25.40%
Oil:                                                                       0.20%
Natural Gas:                                                              31.60%
Low Carbon:                                                               42.50%
--------------------------------------------------------------------------------
-------------------------------    Emissions     -------------------------------
--------------------------------------------------------------------------------
Effective emission:                                              3.00e-05 kg CO2
Equivalent miles driven:                                          1.23e-11 miles
Equivalent minutes of 32-inch LCD TV watched:                   1.85e-02 minutes
Percentage of CO2 used in a US household/day:                          9.86e-12%
--------------------------------------------------------------------------------
------------------------- Assumed Carbon Equivalencies -------------------------
--------------------------------------------------------------------------------
Coal:                                                             996 kg CO2/MWh
Petroleum:                                                        817 kg CO2/MWh
Natural gas:                                                      744 kg CO2/MWh
Low carbon:                                                         0 kg CO2/MWh
--------------------------------------------------------------------------------
-------------------------     Emissions Comparison     -------------------------
--------------------------------------------------------------------------------
                      Quantities below expressed in kg CO2                      
        US                      Europe                  Global minus US/Europe
Max:    Wyoming        7.10e-05 Kosovo         7.28e-05 Mongolia        7.13e-05
Median: Mississippi    3.29e-05 Ukraine        5.09e-05 Korea, South    5.82e-05
Min:    Vermont        1.99e-06 Iceland        1.31e-05 Bhutan          8.11e-06
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Process used:                                                       7.72e-05 kWh

报告分为几个部分。

  • 最终读数:表示平均值:

    • 平均基线功率:计算机的平均功耗减去进程,在启动进程之前运行10秒
    • 平均总功率:进程运行时计算机的平均功耗
    • 平均进程使用量:基线与总计之间的差异,突出显示仅来自您评估的特定进程的使用量
    • 处理持续时间:程序运行的时间
  • 能源数据:地点的能源组合。

  • 排放量:运行程序一次的有效co2排放量以及与这些排放量相当的一些实际排放量。

  • 假定碳当量:根据所在地的能源组合,将kWh转换为co2的公式(有关国际地点的更多信息,请参见下文)。

  • 排放比较:美国各州和国家的代表性能源组的相同能源的排放量是多少。

不属于一个部分的是过程使用的能量,可以选择打印出来。

pdf报告包含相同的章节,但不包括过程持续时间或瞬间排放比较。

方法论

功率测量

CPU

我们通过英特尔处理器上的RAPL(运行平均功率限制)接口计算CPU功耗。这些是非体系结构模型特定的寄存器,提供与电源相关的信息 关于CPU。它们主要用于限制功耗,但能源状况 寄存器(msr_pkg_energy_status)允许功率测量。

rapl接口根据处理器的数量在几个域之间进行区分。对于单处理器计算机:

  • 套餐
  • 动力飞机:
    • 核心
    • 打开
  • DRAM

对于具有多个处理器的机器:

  • 套餐0
  • 套餐1
  • …/LI>
  • N包
  • DRAM

目前,我们使用包域(或所有域的总和,用于多处理器计算机),它表示完整的处理器包。

正如vince weaver所概述的,访问rapl接口数据有多种方法,namelY:

我们选择使用final方法,因为它是唯一不需要sudo访问的方法。我们阅读了包文件夹中的energy_j.txt文件intel rapl:*。这些文件代表了微焦耳所用的能量,它们大约每毫秒更新一次。文件中的值增加到溢出点,然后重置。我们取两个延迟的读数,然后根据差值(能量)和延迟(时间)计算功率。为了避免由于文件重置而导致的错误,我们放弃负值。

有关RAPL接口的详细信息,请参阅《英特尔64与IA-32体系结构软件开发人员手册》

GPU

对于支持nvidia smi程序的nvidia gpu机器,我们还将gpu的功耗添加到包测量中。

nvidia smi是一个命令行实用程序,允许查询有关gpu的信息。如果GPU被识别为有效,我们使用内置方法查询当前瓦数,然后将输出转换为浮点值。

有关nvidia smi的更多信息,请访问nvidia网站

计算CO2排放量

位置

为了准确计算与所用计算能力相关的二氧化碳排放量,我们通过用户的IP地址,借助于GeoJS的API来确定用户的地理位置。如果无法确定位置,我们将使用美国作为默认值。

地点尤其重要,因为排放量因国家(以及美国的情况)能源结构而异。

能源组合信息

我们从2016年美国能源信息管理数据。具体来说,我们研究了按能源分类的世界各国的能源消耗情况。对于标记为(s)的数据点(意味着该值对于所示的小数位数来说太小),我们将其近似为0。没有关于下列国家的数据,因此我们不考虑这些国家:前捷克斯洛伐克、前塞尔维亚和黑山、前苏联、前南斯拉夫、夏威夷贸易区、东德和西德。

我们的美国能源结构和排放数据来自美国环境保护署2016年的egrid数据。我们使用州资源组合部分显示能源组合,使用州输出排放率部分计算美国的排放量。我们没有使用其他化石数据,因为这些值主要是0(如果值不是0,则低于1%)。

截至2019年7月,最新的egrid数据来自2016年。我们选择使用2016年美国国际投资署数据,以确保数据源之间的一致性。

转换成co2

由于国际数据只包含一个能源组合,没有排放数据,我们对egrid数据中使用的公式进行了逆向工程。这给了我们额外的C独立数据集之间的一致性。

  • :2195.20磅一氧化碳2/mwh=995.725971千克一氧化碳2/mwh
  • 石油:lbs co2/mwh=816.6885263 kg co2/mwh
  • 天然气:1639.89磅一氧化碳2/mwh=743.8415916千克一氧化碳2/mwh

相关工作

  • Strubell等人在其论文中不仅分析了在NLP中训练深度学习模型所需的计算能力,但进一步将数据转化为碳排放量和成本。我们的工具旨在帮助开发人员在单个包中进行此分析。我们不考虑成本,而是选择只关注环境影响。此外,我们不关注特定的计算区域。我们还扩展了他们对碳排放的分析,包括能源消耗和二氧化碳排放的国际数据,以便对测试项目的碳足迹进行本地化分析。

限制

  • 由于能量测量的方法(通过Intel RAPL 接口和nvidia smi),我们的包仅在具有 RAPL接口和/或带NVIDIA GPU的机器。

  • 一个国家的总体能源消费组合不一定代表用于发电的能源组合(甚至电力生产也不一定代表进出口造成的电力消费)。然而,E.I.A.数据是我们发现的地理上最全面的数据。我们正在努力获得更准确的数据。

致谢

我们要感谢jon wilson对我们项目的环境方面的宝贵见解。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven通过pom文件增加最大java堆大小   java如何在Kojo IDE输出窗格中打印到同一行?   如何使用特定的JRE交付Java应用程序?   java Cordova插件调用日志找不到符号   Java上Redis哈希中的spring列表   java ThreadSafeClientConnManager不是多线程   java如何在激活器中获取IEclipseContext   java如何通过编程更改除法器偏差   在中找不到maven Java/Mvn本地资源。罐包装   JOptionPane的java用户输入验证。showInputDialog   java编辑:如何更改日期对象的日期格式?   文件编写器Java;如何覆盖   一行中包含多个值的java读取属性   java如何在安卓中使用截击上传视频