• Stars
    star
    122
  • Rank 291,069 (Top 6 %)
  • Language
    C++
  • Created over 10 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An integrated power, area, and timing modeling framework for multicore and manycore architectures
  __  __      ____   _  _____    
 |  \/  | ___|  _ \ / \|_   _| 
 | |\/| |/ __| |_) / _ \ | |   
 | |  | | (__|  __/ ___ \| |   
 |_|  |_|\___|_| /_/   \_\_|    
                                        
McPAT: (M)ulti(c)ore (P)ower, (A)rea, and (T)iming
Current version 1.3
==================================================

* What McPAT is: 

	--Architectural integrated power, area, and timing modeling framework, focuses on power and area modeling, with a target clock rate as a design constraint. 
	  		-Consider power, area, and timing simultaneously 
			-Complete power envelope
			-Power management techniques
	---Manycore processor modeling framework
			-Different cores, uncore, and system (I/O) components
			-Holistically modeling across stacks: Technology models from ITRS projections (also supports user defined vdd), processor modeling based on modern processors
	---Flexible, extensible, and high (i.e., architecture) level framework
			-A framework for architecture research
			-Flexible to make researchers's life easier
				Pre-populated micro-architecture configurations (can be changed by experienced users too!)
				Multilevel automatic optimization 
			-Hierarchical modeling framework for easy extension and porting  
				Standalone for TDP
				Paired up with performance simulators (or machine profiling statistics) for fine-grained study

* What McPAT is NOT

	---a hardware design EDA platform; nor a performance simulator
			-Use RTL/SPICE/...(not McPAT) if focusing on details of complex logic or analog components 
				Empirical and curve-fitting based modeling for complex logic and analog building blocks (the most practical modeling methodology for high level framework). 
					Solution1: Users replace those models with in-house models obtained from EDA tools
 					Solution2: Users contribute their EDA based detailed models back to the community for sharing
			-Use performance simulators for performance (McPAT cannot do performance simulations)
	---a restrictive environment 
			-It is a framework (rather than a black-box tool)
			-Its built-in models are for references and for providing methodological examples. 
				McPAT's built-in model includes simplified assumptions (e.g. unified instruction window for all instruction types)
				McPAT provides building blocks so that it is composable 
				Users should always understand the methodology when using the built-in models or compose their own models.				
	---finished!
			-There is always room for improvement . . .
			-Thanks for the continueous contributing from the user community!  

====================
For complete documentation of the McPAT, please refer to the following paper,
"McPAT: An Integrated Power, Area, and Timing Modeling
 Framework for Multicore and Manycore Architectures", 
that appears in MICRO 2009. Please cite the paper, if you use
McPAT in your work. The bibtex entry is provided below for your convenience.

 @inproceedings{mcpat:micro,
 author = {Sheng Li and Jung Ho Ahn and Richard D. Strong and Jay B. Brockman and Dean M. Tullsen and Norman P. Jouppi},
 title =  "{McPAT: An Integrated Power, Area, and Timing Modeling Framework for Multicore and Manycore Architectures}",
 booktitle = {MICRO 42: Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture},
 year = {2009},
 pages = {469--480},
 }


How to use the tool?
====================

McPAT takes input parameters from an XML-based interface,
then it computes area and peak power of the 
Please note that the peak power is the absolute worst case power, 
which could be even higher than TDP. 

1. Steps to run McPAT:
   -> define the target processor using inorder.xml or OOO.xml 
   -> run the "mcpat" binary:
      ./mcpat -infile <*.xml>  -print_level < level of detailed output>
      ./mcpat -h (or mcpat --help) will show the quick help message.

2. Optimization:
   McPAT will try its best to satisfy the target clock rate. 
   When it cannot find a valid solution, it gives out warnings, 
   while still giving a solution that is closest to the timing 
   constraints and calculate power based on it. The optimization 
   will lead to larger power/area numbers for target higher clock
   rate. McPAT also provides the option "-opt_for_clk" to turn on 
   ("-opt_for_clk 1") and off this strict optimization for the 
   timing constraint. When it is off, McPAT always optimize 
   component for ED^2P without worrying about meeting the 
   target clock frequency. By turning it off, the computation time 
   can be reduced, which suites for situations where target clock rate
   is conservative.
  
3. Outputs:
   McPAT outputs results in a hierarchical manner. Increasing 
   the "-print_level" will show detailed results inside each 
   component. For each component, major parts are shown, and associated 
   pipeline registers/control logic are added up in total area/power of each 
   components. In general, McPAT does not model the area/overhead of the pad 
   frame used in a processor die.
   
4. How to use the XML interface for McPAT 
   4.1 Set up the parameters
   		Parameters of target designs need to be set in the *.xml file for 
   		entries tagged as "param". McPAT have very detailed parameter settings. 
   		please remove the structure parameter from the file if you want 
   		to use the default values. Otherwise, the parameters in the xml file 
   		will override the default values. 
   
   4.2 Pass the statistics
   		There are two options to get the correct stats: a) the performance 
   		simulator can capture all the stats in detail and pass them to McPAT;
   		b). Performance simulator can only capture partial stats and pass 
   		them to McPAT, while McPAT can reason about the complete stats using 
        the partial information and the configuration. Therefore, there are 
        some overlap for the stats. 
   
   4.3 Interface XML file structures (PLEASE READ!)
   			The XML is hierarchical from processor level to micro-architecture 
   		level. McPAT support both heterogeneous and homogeneous manycore processors. 
   		
   			1). For heterogeneous processor setup, each component (core, NoC, cache, 
   		and etc) must have its own instantiations (core0, core1, ..., coreN). 
   		Each instantiation will have different parameters as well as its stats.
   		Thus, the XML file must have multiple "instantiation" of each type of 
   		heterogeneous components and the corresponding hetero flags must be set 
   		in the XML file. Then state in the XML should be the stats of "a" instantiation 
   		(e.g. "a" cores). The reported runtime dynamic is of a single instantiation 
   		(e.g. "a" cores). Since the stats for each (e.g. "a" cores) may be different,
   		we will see a whole list of (e.g. "a" cores) with different dynamic power,
   		and total power is just a sum of them.  
   		
   			2). For homogeneous processors, the same method for heterogeneous can 
   		also be used by treating all homogeneous instantiations as heterogeneous. 
   		However, a preferred approach is to use a single representative for all 
   		the same components (e.g. core0 to represent all cores) and set the 
   		processor to have homogeneous components (e.g. <param name="homogeneous_cores
   		" value="1"/> ). Thus, the XML file only has one instantiation to represent 
   		all others with the same architectural parameters. The corresponding homo 
   		flags must be set in the XML file.  Then, the stats in the XML should be 
   		the aggregated stats of the sum of all instantiations (e.g. aggregated stats 
   		of all cores). In the final results, McPAT will only report a single 
   		instantiation of each type of component, and the reported runtime dynamic power
   		is the sum of all instantiations of the same type. This approach can run fast 
   		and use much less memory.        

5. Guide for integrating McPAT into performance simulators and bypassing the XML interface
   		The detailed work flow of McPAT has two phases: the initialization phase and
   the computation phase. Specifically, in order to start the initialization phase a 
   user specifies static configurations, including parameters at all three levels, 
   namely, architectural, circuit, and technology levels. During the initialization 
   phase, McPAT will generate the internal chip representation using the configurations 
   set by the user. 
   		The computation phase of McPAT is called by McPAT or the performance simulator 
   during simulation to generate runtime power numbers. Before calling McPAT to 
   compute runtime power numbers, the performance simulator needs to pass the 
   statistics, namely, the activity factors of each individual components to McPAT 
   via the XML interface. 
   		The initialization phase is very time-consuming, since it will repeat many 
   times until valid configurations are found or the possible configurations are 
   exhausted. To reduce the overhead, a user can let the simulator to call McPAT 
   directly for computation phase and only call initialization phase once at the 
   beginning of simulation. In this case, the XML interface file is bypassed, 
   please refer to processor.cc to see how the two phases are called.
   
6. Sample input files:
   This package provide sample XML files for validating target processors. Please find the 
   enclosed Niagara1.xml (for the Sun Niagara1 processor), Niagara2.xml (for the Sun Niagara2 
   processor), Alpha21364.xml (for the Alpha21364 processor), Xeon.xml (for the Intel 
   Xeon Tulsa processor), and ARM_A9_2GHz.xml (for ARM Cortex A9 hard core 2GHz implementation from 
   ARM) 
   
7. Modeling of power management techniques:   
   McPAT supports both DVS and power-gating. For DVS, users can use default ITRS projected vdd 
   at each technology node as supply voltage at DVS level 0 (DVS0) or define voltage at DVS0. 
   For power-gating, McPAT supports both default power-saving virtual supply voltage computed 
   automatically using technology parameters. Default means using technology (ITRS based) 
   lowest value for state-retaining power-gating User can also defined voltage for Power-saving states, 
   as shown in example file of Xeon.xml (search for power_gating_vcc). When using user-defined power-saving 
   virtual supply voltage, please understand the implications when setting up voltage for different sleep states. 
   For example, when deep sleep state is used (voltage lower than the technology allowed state retaining supply voltage), 
   the effects of losing data and cold start effects (beyond the scope of McPAT) must be considered when waking up the architecture.  
   Power-gating and DVS cannot happen at the same time. Because power-gating happens when circuit is idle, while DVS happens when 
   circuit blocks are active. 
    
   
====================   
McPAT includes its special version of Cacti (called Cacti-P) based on Cacti6.5 release. The major changes of 
the special Cacti, called Cacti-P in this distro, (compared to cacti6.5) include the following new features. 
The inclosed Cacti-P can run stand-alone if users want to use these features.
 
 * CAM and fully associative cache modeling
 * Improved leakage power modeling with consideration of device/gate topology
 * long channel device for reduce sub-threshold leakage power 
 * Sleep transistor based power-gating modeling
 * gate leakage power
 * Support user defined voltage supply (Vdd)
 * Dynamic voltage scaling (DVS)
 
For complete documentation of Cacti-P, please refer to the following paper,
"CACTI-P: Architecture-Level Modeling for SRAM-based Structures with Advanced Leakage Reduction Techniques", 
that appeared in ICCAD2011. Please cite the paper, if you use
Cacti-P in your work. The bibtex entry is provided below for your convenience.

@inproceedings{cacti-p:iccad,
  author = {Sheng Li and Ke Chen and Jung Ho Ahn and Jay B. Brockman and Norman P. Jouppi},
  title = {CACTI-P: Architecture-level modeling for SRAM-based structures with advanced leakage reduction techniques},
  booktitle = {ICCAD: International Conference on Computer-Aided Design},
  year = {2011},
  pages = {694-701},
}

 
====================
McPAT uses an opensource XML parser written and kindly specially licensed by Mr. Frank Vanden Berghen. 
The detailed information about this XML parser can be found at the license information in xmlParse.cc/xmlParse.h       

====================            
McPAT is in its beginning stage. We are still improving the tool. 
Please come back to its website for newer versions.
McPAT has been constantly and rapidly improved with new models and latest technology. 
Please always refer to its code for most up-to-date and most accurate information. 
If you have any comments, questions, or suggestions, please write to us:


Sheng Li             
[email protected] 




More Repositories

1

netperf

Netperf is a benchmark that can be used to measure the performance of many different types of networking. It provides tests for both unidirectional throughput, and end-to-end latency.
C
725
star
2

swarm-learning

A simplified library for decentralized, privacy preserving machine learning
Python
328
star
3

cacti

An integrated cache and memory access time, cycle time, area, leakage, and dynamic power model
C++
301
star
4

squest

Service request portal on top of Ansible Tower/AWX
Python
294
star
5

LinuxKI

LinuxKI Toolset (Trace-based performance analysis tool)
C
224
star
6

quartz

Quartz: A DRAM-based performance emulator for NVM
C
158
star
7

dlcookbook-dlbs

Deep Learning Benchmarking Suite
Python
130
star
8

POSH-HPEOneView

PowerShell language bindings library for HPE OneView.
PowerShell
125
star
9

oneview-ansible

This project is no longer being developed and has limited support. Please use the newer Ansible Collection project: https://github.com/HewlettPackard/oneview-ansible-collection
Python
104
star
10

PacketRusher

High performance 5G UE/gNB Simulator and CP/UP load tester.
Go
99
star
11

yoda

GitHub extension for agile project management using the issues subsystem.
JavaScript
90
star
12

python-hpOneView

DEPRECATED - no longer actively maintained. New repository: https://github.com/HewlettPackard/oneview-python
Python
87
star
13

python-ilorest-library-old

Python library for iLO RESTful API
Python
85
star
14

wireless-tools

Wireless Tools for Linux
C
85
star
15

PowerShell-ProLiant-SDK

PowerShell sample scripts for managing HPE servers
PowerShell
85
star
16

kraal

Enables the use of Kotlin coroutines and GraalVM native-image together
Kotlin
84
star
17

monkeyble

End-to-end testing framework for Ansible
Python
78
star
18

Atlas

Atlas: Programming for Persistent Memory
C++
74
star
19

foedus

FOEDUS: Fast Optimistic Engine for Data Unification Services
65
star
20

foedus_code

FOEDUS main source code repository
C++
64
star
21

structex

Go structure annotations that supports encoding and decoding; similar to C-style bitfields. Supports bitfield packing, self-describing layout parameters, and alignment.
Go
58
star
22

ansible-ilorest-role

Ansible role for installing the Python iLOrest library and showcasing a few examples.
Python
52
star
23

terraform-provider-oneview

Automates the provisioning of physical infrastructure from a private cloud using templates from HPE OneView with Terraform
Go
49
star
24

reconbf

Recon system hardening scanner
Python
47
star
25

sandpiper

Implementation of the Loopy Belief Propagation algorithm for Apache Spark
Scala
42
star
26

sparkle

C++
38
star
27

ilo-ansible-collection

Ansible Collection and Sample Playbooks for HPE iLO
Python
38
star
28

dockerfile-parser-rs

a Rust library for parsing, validating, and modifying Dockerfiles
Rust
37
star
29

jupyterhub-samlauthenticator

jupyterhub-samlauthenticator
Python
34
star
30

cloudformation-plus

A tool that adds features to AWS CloudFormation that reduce the amount of code you must write to deploy non-trivial applications.
Python
31
star
31

cmf

CMF library helps to collect and store information associated with ML pipelines. It tracks the lineages for artifacts and executions of distributed AI pipelines. It provides API's to record and query the metadata associated with ML pipelines. The framework adopts a data first approach and all artifacts recorded in the framework are versioned and identified by the content hash.
Python
30
star
32

lustre_exporter

Prometheus exporter for use with the Lustre parallel filesystem
Go
29
star
33

nvthreads

C
27
star
34

nagios-plugins-hpilo

Nagios plug-in for iLO Agentless Management
Shell
26
star
35

mds

Managed Data Structures
Java
26
star
36

oneview-golang

Golang bindings for OneView api's
Go
26
star
37

dpp

Device Provisioning Protocol is a Wi-Fi Alliance program to securely provision devices to obtain network access.
C
25
star
38

mdc-toolkit

24
star
39

Docker-SimpliVity

Ansible deployment playbooks with detailed deployment guides to rapidly provision a Docker dev and Docker ops environment in less than 30 minutes
Shell
24
star
40

woodchipper

An interactive command-line log processor
Rust
23
star
41

oneview-ansible-collection

Ansible Collection and Sample Playbooks for HPE OneView
Python
22
star
42

hpe-solutions-openshift

This GitHub site contains deployment guides and resources for deploying Red Hat OpenShift on HPE platforms.
Python
22
star
43

chef-provisioning-oneview

Chef Provisioning Driver for HPE OneView
Ruby
21
star
44

lustre-csi-driver

A Lustre container storage interface that allows Kubernetes to mount/unmount provisioned Lustre filesystems into containers.
Go
20
star
45

supersim

A flexible event-driven cycle-accurate network simulator
C++
19
star
46

hpe3par_ansible_module

HPE Alletra 9000 and HPE Primera and HPE 3PAR ansible module to configure, provision and manage storage systems and resources
Python
18
star
47

csa-ce

This repo contains scripts which start HPE Cloud Service Automation Community Edition 4.7 (HPE CSA CE) in Docker.
Shell
17
star
48

ezdemo

HPE Ezmeral Deployment tool for demos
Shell
17
star
49

ilo-chef

iLO Resource Provider for Chef
Ruby
17
star
50

oneview-chef

This project is no longer being developed and has limited support. In the near future this repository will be fully deprecated. Please consider using other OneView projects, such as Terraform and Ansible Collection
Ruby
17
star
51

oneview-osdeployment

Sample HPE OneView OS deployment integration
Python
16
star
52

oneview-sdk-java

Java SDK for HPE OneView
Java
16
star
53

galadriel

SPIFFE Federation the easy way
Go
16
star
54

ilo-sdk-ruby

iLO Software Development Kit for Ruby Programmers.
Ruby
15
star
55

criu-pmem

C
15
star
56

oneview-redfish-toolkit

HPE OneView Redfish Toolkit provides a REST service to answer DMTF's Redfish compliant requests by querying HPE OneView
Python
15
star
57

javascript-ilorest-library

JavaScript
15
star
58

mpgc

Multi-Process Garbage Collector
C++
15
star
59

logger

A log parsing engine written in Java for high performance. Additionally, logger is also highly configurable.
Java
14
star
60

pcp_exporter

Exporter for Performance CoPilot Metrics
Go
14
star
61

Aruba-FlaskwithNetworking

Python
14
star
62

zabbix-plugins-hpeilo

Shell
13
star
63

hpe-oneview-hubot

HPE OneView Chatbot Integration
JavaScript
13
star
64

osfci

Go
13
star
65

prometheus-parser-rs

a Rust library for parsing and validating Prometheus query expressions
Rust
12
star
66

nagios-hpeilo-restful-extension

Nagios Plug-in for iLO RESTful Extension
Shell
12
star
67

c-spiffe

C
12
star
68

LSGI

Large-Scale Graph Inference
HTML
12
star
69

oneview-powershell-samples

HPE OneView PowerShell sample scripts
PowerShell
12
star
70

oneview-sdk-ruby

This project is no longer being developed and has limited support. In the near future this repository will be fully deprecated. Please consider using other OneView projects, such as Golang and Python.
Ruby
12
star
71

zing-stats

Tool for generating summary stat reports and graphs from Gerrit (https://www.gerritcodereview.com/) and GitHub Enterprise review and pull requests data using https://plot.ly/.
Python
12
star
72

py-spiffe

Python library for SPIFFE support
Python
11
star
73

Jenkins-stats

Tool for gathering job data from the Jenkins CI system (https://jenkins-ci.org/) and generating summary stat reports and graphs. These reports cover metrics such as success/failure rates and job duration.
Python
11
star
74

image-streamer-tools

PowerShell
10
star
75

OpenShift-on-SimpliVity

10
star
76

lsrrb

Linux Software Raid Redundant Boot
Python
10
star
77

Docker-Synergy

Shell
10
star
78

shoveller

Rust
10
star
79

hpecli

Command-line interface for HPE products and services
Go
10
star
80

hpe3par_pstoolkit

The HPE Alletra 9000 and Primera and 3PAR PowerShell Toolkit supports cmdlets, which are wrappers around the native HPE Alletra 9000 or HPE Primera or HPE 3PAR storage CLI commands and Web Services API (WSAPI).
PowerShell
10
star
81

image-streamer-esxi

9
star
82

chef-ilorest-cookbook

Chef cookbook for installing the Python iLOrest library and showcasing a few examples.
Python
9
star
83

GlobalDashboardPS

A Powershell module for working with HPE OneView Global Dashboard
PowerShell
9
star
84

hpe-notebooks

Jupyter Notebook
9
star
85

hpe3par_python_sdk

HPE Alletra 9000 and HPE Primera and HPE 3PAR Software Development Kit for Python
Python
9
star
86

RiscVEdk2

C
9
star
87

HPEDSCC-PowerShell-Toolkit

A PowerShell Toolkit that enables management of a HPE GreenLake DSCC (Data Storage Cloud Console) environment via easy to use PowerShell commands which interface with the publically available RestAPI.
PowerShell
9
star
88

gull

a multi-node fabric-attached memory manager that provides simple abstractions for accessing and allocating NVM from fabric-attached memory
C++
9
star
89

iLOAmpPack-Redfish-API-Docs

iLO Amplifier Pack Redfish API Documentation
JavaScript
8
star
90

python-opsramp

Python binding for the OpsRamp API
Python
8
star
91

ironic-driver-oneview

HPE OneView driver for OpenStack Ironic bare-metal machine provisioning
8
star
92

simplivity-ansible

Ansible Modules for HPE SimpliVity
Python
8
star
93

hpe-nvm

Documentation and utilities for NVDIMM-N device management and support
8
star
94

oneview-puppet

This project is no longer being developed and has limited support. In the near future this repository will be fully deprecated. Please consider using other OneView projects, such as Terraform and Ansible Collection
Ruby
8
star
95

SHARP

Python
7
star
96

devid-provisioning-tool

Go
7
star
97

oneview-ansible-samples

A collection of sample code for oneview-ansible
7
star
98

dc-rl

HTML
7
star
99

KrakenMare

KrakenMare is a containerized software stack providing a versatile data pipeline to monitor HPC clusters using Redfish monitoring information, MQTT and Kafka data buses, druid timeseries DB and Grafana visualization.
Python
7
star
100

simplivity-python

This library provides a Python interface to the HPE SimpliVity REST APIs
Python
7
star