Tool to evaluate the carbon footprint of FPGA-based computing across its lifetime. The tool can also perform comparisons with ASIC counterpart considering differnt aspects such as manufacturing, recycling, disposal, reconfigurability (reuse), operation and design. The sustainable benifits of FPGA compared to ASIC is shown in this work.
- src/
- tech_params
- README.md
- test_example
- Agilex
- ASIC_analysis
- FPGA_analysis
- Moffett
- Stratix
- TPU
- images
GreenFPGA requires the following:
- python 3.8
- pip 20.0.2
- python3.8-venv
Additionally, please refer steps below that provide instructions to install the packages inside requirements.txt in a virtual environment.
git clone https://github.com/ASU-VDA-Lab/GreenFPGA.git
cd GreenFPGA
python3 -m venv greenfpga
source greenfpga/bin/activate
pip3 install -r requirements.txt
GreenFPGA uses input parameters from the JSON files under the test_examples and computes the CFP for multiple scenarios.
The architecture and other important specification parameters of the FPGA or the ASIC are added to the fpga_spec.json. The area of the design (mm2), power of the design (W), number of parts that are manufactured (Volume), lifetime of the evaluation (hrs), and based on the type of experiment and type of chip that is analyzed, number of applications and number of designs are provided as input in the fpga_spec.json.
The node_list.txt comprises the technology node associated with the design that needs to be analyzed.
The remaining parameters regarding the design CFP, application-development CFP, EOL CFP, are all provided in green_fpga_param.json based on user preferences.
├── fpga_spec.json
├── node_list.txt
└── green_fpga_param.json
GreenFPGA tool can also accept parameters from the command line and below are some of the main parameters that could be used to help sweep and analyze the variations in embodied and operational CFP.
--design_dir : Directory for design analysis
--num_app : Number of application
--num_lifetime : Total evaluation lifetime
--num_des : Number of designs needed to run the experiment
--nfpga : Number of FPGAs, Appsize/fpga_capacity
--power : Power of the device under analysis
--chip_area : Area of the device
--ope_vol : Opertaion Volume
--emb_vol : Embodied Volume
Commands to run GreenFPGA with these parameters are provided in the next section below.
Modify the input parameters according to the design and experiment being analyzed. The command to run GreenFPGA to obtain the breakdown of CFP for the design :
python3 src/ECO_chip.py --design_dir test_example/TPU/
To run the analysis using command line parameters :
python3 src/ECO_chip.py --design_dir test_example/TPU/ --num_des 1 --num_app 5 --num_lifetime 8 --power 150 --chip_area 650
python3 src/ECO_chip.py --design_dir test_example/Agilex/ --num_des 3 --num_app 3 --num_lifetime 5 --power 80 --chip_area 450
Below is an example output for a test_example TPU showing the breakdown in Total CFP :
-------------------------
Using below files
test_example/TPU/green_fpga_param.json
test_example/TPU/fpga_spec.json
test_example/TPU/node_list.txt
-------------------------
-------------------------
Design CFP : 2.590000e+07
Mfg CFP : 3.141413e+08
EOL CFP : 3.900000e+03
Operation CFP : 1.098548e+09
App Dev CFP : 5.040000e+01
-------------------------
Embodied CFP : 3.400452e+08
Operation CFP : 1.098548e+09
-------------------------
Total CFP : 1.438593e+09
-------------------------
The variation in CFP for some parameter sweep exploration is shown for a DNN test case.
The extra embodied CFP that comes with manufacturing FPGA can be amortized across its multiple applications due to its ability to re-configure and its extended life for an iso-performance DNN application. A savings of 25% CFP can be seen using FPGAs compared to ASIC.
If you find GreenFPGA useful or relevant to your research, please kindly cite our paper:
@misc{sudarshan2023greenfpga,
title={GreenFPGA: Evaluating FPGAs as Environmentally Sustainable Computing Solutions},
author={Chetan Choppali Sudarshan and Aman Arora and Vidya A. Chhabria},
year={2023},
eprint={2311.12396},
archivePrefix={arXiv},
primaryClass={cs.AR}
}