Skip to content

Commit 43cb8ad

Browse files
Ryan GrantRyan Grant
authored andcommitted
facility object proposal
1 parent ddcc18b commit 43cb8ad

3 files changed

Lines changed: 26 additions & 17 deletions

File tree

Common.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
Core functions include the following areas:
1919
\begin{itemize}[noitemsep,nolistsep]
2020
\item{\textbf{Initialization}, required to use any of the functionality described in this specification, }
21-
\item{\textbf{Navigation} functions allow the user to traverse the system description and discover information about the underlying platform, }
21+
\item{\textbf{Navigation} functions allow the user to traverse the system description and discover information about the underlying facility/platform, }
2222
\item{\textbf{Group} functions, primarily a convenience abstraction,}
2323
\item{\textbf{Attribute} functions expose measurement and control functionality, }
2424
\item{\textbf{Metadata} functions allow the user to access additional information about objects and attributes (often device or instrumentation specific information), }
@@ -146,7 +146,7 @@ \section{Hierarchy Navigation Functions}\label{sec:Navigation}
146146
%==============================================================================%
147147
%int PWR_ObjGetParent( PWR_Obj object, PWR_Obj* parent );
148148
\begin{prototype}{ObjGetParent}
149-
\longdescription{The \texttt{PWR_ObjGetParent} function is used to find the object immediately above the specified object in the system description available to the user through the current context. Note, currently, there are some cases where an object has no parent, namely the platform object.}
149+
\longdescription{The \texttt{PWR_ObjGetParent} function is used to find the object immediately above the specified object in the system description available to the user through the current context. Note, currently, there are some cases where an object has no parent, namely the facility object.}
150150
\returntype{int}
151151
\parameter{PWR_Obj object} {\pInput} {The object that the user wishes to determine the parent of.}
152152
\parameter{PWR_Obj* parent}{\pOutput} {The parent object of the specified input object.}
@@ -555,7 +555,7 @@ \section{Metadata Functions}\label{sec:METADATA}
555555
string, is for a Power API user to capture these strings with each run
556556
to record configuration and provenance information. For example, a
557557
user may chose to log the \texttt{PWR\_MD\_VENDOR\_INFO} string for
558-
the top-level platform object in the output of each run.
558+
the top-level platform or facility object in the output of each run.
559559

560560
The metadata interface consists of three functions. The
561561
\texttt{PWR_ObjAttrGetMeta} and \texttt{PWR_ObjAttrSetMeta} functions allow

LangPythonTOO.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ \subsection{System Description}\label{sec:PythonSystemDescription}
521521

522522
The C API on page \pageref{sec:PowerAPIBaseSysDesc}, states that a variety
523523
of object types are to be defined, but not necessarily used or supported. These
524-
are: ``Platform'', ``Cabinet'', ``Chassis'', ``Board'', ``Node'', ``Socket'',
524+
are: ``Facility'', ``Platform'', ``Cabinet'', ``Chassis'', ``Board'', ``Node'', ``Socket'',
525525
``Power Plane'', ``Core'', ``Memory'', and ``NIC''. In the C API specification,
526526
opaque handles, which can be pointers, are used to point to these various abstracted
527527
objects. However, in Python, separate child classes to the \texttt{pwr.Obj} class

TheoryOfOperation.tex

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ \section{Overview}
1111
It should be noted that many terms commonly used when discussing object oriented languages are used in this section and the document as a whole.
1212
The use of these terms in no way implies that the Power API specification must be implemented using an object oriented language.
1313
%The authors of this specification in fact, recommend the contrary.
14-
We have attempted to achieve two goals, listed in order of priority: 1) programmer portability, where the programmer is the user of the API, and 2) the latitude of the implementor who will often become the user of the API benefitting from our first priority.
14+
We have attempted to achieve two goals, listed in order of priority: 1) programmer portability, where the programmer is the user of the API, and 2) the latitude of the implementor who will often become the user of the API benefiting from our first priority.
1515

1616
%=============================================================================%
1717
%=============================================================================%
@@ -24,7 +24,7 @@ \section{Power API Initialization}\label{sec:PowerAPIInit}
2424

2525

2626
Using any of the Power API interfaces requires initialization.
27-
Initializaton returns a context.
27+
Initialization returns a context.
2828
In the specification, the context is defined as an opaque pointer.
2929
This approach was taken to allow the maximum amount of flexibility to the implementor.
3030
The context returned will contain (act as the entry point to) the system description that is exposed to the user, all policy and privilege information, basically everything the user of the API requires to perform the functionality specified by the API.
@@ -50,9 +50,9 @@ \section{Roles}\label{sec:Roles}
5050
\item{\textbf{Operating System} Linux or specialized Light Weight Kernels which are found on HPC platforms and potentially portions of run-time systems. }
5151
\item{\textbf{User} The user of the HPC platform. }
5252
\item{\textbf{Resource Manager} This can include work load managers, schedulers, allocators and even portions of run-time systems. }
53-
\item{\textbf{Administrator} The system administrator or HPC platform manager. }
54-
\item{\textbf{HPCS Manager} The individual or individuals responsible for managing policy for the HPC platform, for example. }
55-
\item{\textbf{Accounting} Individual or software that produces reports of metrics for the HPC platform. }
53+
\item{\textbf{Administrator} The system administrator or HPC facility/platform manager. }
54+
\item{\textbf{HPCS Manager} The individual or individuals responsible for managing policy for the HPC facility and platforms, for example. }
55+
\item{\textbf{Accounting} Individual or software that produces reports of metrics for the HPC facility and associated platforms. }
5656
\end{itemize}
5757
These brief definitions are not meant to be exhaustive.
5858
Roles are analogous with the \textit{Actors} discussed in section \ref{sec:UseCase}.
@@ -106,26 +106,27 @@ \section{System Description}\label{sec:PowerAPIBaseSysDesc}
106106
\end{figure}
107107

108108
The system description is the \textit{view} of the system exposed to the user upon initialization via the context that is returned.
109-
Figure \ref{fig:BaseSystemMap} depicts an example of a system description showing a hierarchical arrangement of objects.
109+
Figure \ref{fig:BaseSystemMap} depicts an example of a system description showing a hierarchical arrangement of objects where there is only one platform.
110110
All object types listed in the specification must be defined by any implementation, but do not have to be used in the system description.
111111
The implementation chooses which objects will be employed in the system description and how they will be arranged.
112112
An object can only have a single parent but may have multiple children.
113-
Currently, a system description may only describe a single platform and have a single object of type \texttt{Platform} which represents the top of the hierarchy.
114-
Later revisions of the specification may include the ability to combine multiple platforms in the system description.
115-
This might be useful, for example, in representing an entire datacenter.
113+
A system description may describe more than a single platform as a facility object where the facility object has multiple objects of type \texttt{Platform} and the facility represents the top of the hierarchy.
114+
Due to the large number of variations in software, hardware and security profiles between platforms and the difficulty in providing a universal Power API implementation that would work between any and all platforms, control over platform objects is confined to within that platform object or above in the hierarchy at the facility level.
115+
For example, a compute node in a given platform cannot query or modify the CPU frequency of a object on another platform. However, that compute node could query the facility object to inquire about the overall facility power usage.
116+
A user with a role initialized at the facility level is meant to interact with high-level platform objects, it is not intended for low-level object control (i.e. controlling per socket power budgets). Such low level controls should be done with roles initialized at the platform level.
116117
While figure \ref{fig:BaseSystemMap} depicts a homogeneous system description, homogeneity is \textit{not} a requirement.
117118
In practice a system description can be heterogeneous and unbalanced.
118119

119120
To summarize the requirements:
120121
\begin{itemize}[noitemsep,nolistsep] %
121122
\item{
122-
The \texttt{Platform} object type must be defined by the implementation and must appear at the top of the system description.
123+
At least one \texttt{Platform} object type must be defined by the implementation and may appear at the top of the system description or immediately underneath a facility object.
123124
}
124125
\item{
125126
All object types in this specification must be defined in any implementation. The use of the object types, with the exception of the \texttt{Platform} object type, is optional.
126127
}
127128
\item{
128-
Objects can only have one parent but may have many children. Currently the \texttt{Platform} object has no parent since it appears at the top of the system description. This will likely change in future versions of the specification.
129+
Objects can only have one parent but may have many children. Currently the \texttt{Facility} object has no parent as it represents the top of the system description.
129130
}
130131
\item{
131132
If an implementation chooses to add objects not defined in the specification they should only be exposed to the user in a vendor specific context to avoid unpredictable or non-portable behaviour (see \funcref{CntxtInit}).
@@ -141,7 +142,15 @@ \section{System Description}\label{sec:PowerAPIBaseSysDesc}
141142
The following is a list of the object types currently included in the specification along with a short description of each.
142143
\begin{itemize}[noitemsep,nolistsep] %
143144
\item{
144-
Platform - Currently, the one and only Platform object is the top level object of the system description exposed to the user of the API.
145+
Facility - The Facility object is the highest level object allowed in a system description.
146+
It represents an entire computing facility that may be made up of multiple platforms.
147+
Facility objects are useful for including resources like cooling or power delivery that may be shared by multiple platforms.
148+
Facility objects are not necessarily traversible between users on different platforms.
149+
That is, users may not be able to interact or even discover other platforms within the same facility.
150+
}
151+
\item{
152+
Platform - A Platform object is the top level object of the system description exposed to a typical user of the API.
153+
It represents one of the main system divisions in a given compute facility and may be the highest level object in facilities that have only one platform.
145154
The Platform object is intended to conceptually represent the entire Platform.
146155
For example, if the Platform object has a power or energy measurement or control capability exposed through the Platform objects attributes the scope of these attributes should be platform wide.
147156
}
@@ -230,7 +239,7 @@ \section{Attributes}\label{sec:TheoryAttributes}
230239

231240
Note, in the list above all the attributes are implicit.
232241
Explicit attributes are defined in the \typeref{AttrName} type definition.
233-
The majority of the attributes defined in the specification, and likely those added by an implementator, are, and will be, explicit.
242+
The majority of the attributes defined in the specification, and likely those added by an implementor, are, and will be, explicit.
234243
The implicit attributes defined above are primarily used for navigation and are accessed through attribute specific functions which are described in Section \ref{sec:Navigation}.
235244

236245
Explicit attributes are either accessed through the generic attribute interface (Section \ref{sec:Attributes}) or attribute specific functions found in either the section describing the specific interface in which they are used or in Chapter \ref{chap:Common}, \textit{Core (Common) Interface Functions}.

0 commit comments

Comments
 (0)