Skip to content

Commit 07bbe68

Browse files
rayegunjim22kDrTimothyAldenDavistgmattsoeriknw
authored
Get/Set Proposal (#73)
- Issue BB-28 (#14), BB-27 (#13), BB-13 (#5), BB-7 (#4): We added a capability for meta-data associated with each GraphBLAS object and the library implementation (the global scope) as well. This was done through the new `GrB_get` and `GrB_set` methods with `(field, value)` pairs. We also needed a new error code for the case where an attempt is made to write to a write-once feild, `GrB_ALREADY_SET`. - Issue BB-15 (#7), BB-14 (#6): The definition of meta-data on GraphBLAS objects added the ability to interact directly with the type system behind these objects. This required the addition of type codes `(GrB_Type_Code)` and the ability to manage the type system through strings. - We augmented the deserialization method so if passed a type parameter of `GrB_NULL` it will infer type information needed for deserialization of a GraphBLAS matrix. - We added a new built-in descriptor `GrB_COMP_STRUCTURE` and an explicit reference to the default value of a descriptor field, `GrB_DEFAULT` --------- Co-authored-by: Jim Kitchen <[email protected]> Co-authored-by: Tim Davis <[email protected]> Co-authored-by: tgmattso <[email protected]> Co-authored-by: Erik Welch <[email protected]>
1 parent 787da75 commit 07bbe68

14 files changed

+561
-47
lines changed

.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
graph-api-c/GraphBLAS_API_C.aux
2+
graph-api-c/GraphBLAS_API_C.fdb_latexmk
3+
graph-api-c/GraphBLAS_API_C.fls
4+
graph-api-c/GraphBLAS_API_C.lof
5+
graph-api-c/GraphBLAS_API_C.log
6+
graph-api-c/GraphBLAS_API_C.lot
7+
graph-api-c/GraphBLAS_API_C.out
8+
graph-api-c/GraphBLAS_API_C.pdf
9+
graph-api-c/GraphBLAS_API_C.toc
10+
graph-api-c/GraphBLAS_API_C.synctex.gz
11+
# Vi
12+
*.sw?

graph-api-c/GraphBLAS_API_C.tex

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,10 @@
133133
\title{
134134
The GraphBLAS C API Specification
135135
\footnote{Based on \emph{GraphBLAS Mathematics} by Jeremy Kepner}: \\
136-
{\large Version 2.0.1} \\
137-
{\normalsize \scott{THIS IS A DRAFT VERION. Update acks and remove DRAFT before release.}}
136+
{\large Version 2.1} \\
138137
}
139138

140-
\author{Benjamin Brock, Ayd\i n Bulu\c{c}, Timothy Mattson, Scott McMillan, Jos\'e Moreira}
139+
\author{Benjamin Brock, Ayd\i n Bulu\c{c}, Raye Kimmerer, Jim Kitchen, Manoj Kumar, Timothy Mattson, Scott McMillan, Jos\'e Moreira, Erik Welch}
141140

142141
\date{Generated on \today\ at \currenttime\ EDT}
143142

@@ -149,19 +148,18 @@
149148

150149
\vfill
151150

152-
Copyright \copyright\ 2017-2021 Carnegie Mellon University, The Regents
151+
Copyright \copyright\ 2017-2023 Carnegie Mellon University, The Regents
153152
of the University of California, through Lawrence Berkeley National
154153
Laboratory (subject to receipt of any required approvals from the
155154
U.S. Dept. of Energy), the Regents of the University of California
156155
(U.C. Davis and U.C. Berkeley), Intel Corporation, International Business Machines
157-
Corporation, and Massachusetts Institute of Technology Lincoln
158-
Laboratory.
156+
Corporation, NVIDIA Corporation, Anaconda Inc., and Massachusetts Institute of Technology.
159157

160158
Any opinions, findings and conclusions or recommendations expressed in
161159
this material are those of the author(s) and do not necessarily reflect
162160
the views of the United States Department of Defense, the United States
163161
Department of Energy, Carnegie Mellon University, the Regents of the
164-
University of California, Intel Corporation, or the IBM Corporation.
162+
University of California, Intel Corporation, NVIDIA Corporation, Anaconda Inc., or IBM Corporation.
165163

166164
NO WARRANTY. THIS MATERIAL IS FURNISHED ON AN AS-IS BASIS. THE COPYRIGHT
167165
OWNERS AND/OR AUTHORS MAKE NO WARRANTIES OF ANY KIND, EITHER EXPRESSED
@@ -225,6 +223,16 @@ \section*{Acknowledgments}
225223
This document represents the work of the people who have served on the C API
226224
Subcommittee of the GraphBLAS Forum.
227225

226+
Those who served as C API Subcommittee members for GraphBLAS 2.1 are (in alphabetical order):
227+
\begin{itemize}
228+
\item Raye Kimmerer (MIT)
229+
\item Jim Kitchen (Anaconda)
230+
\item Manoj Kumar (IBM) % FIXME
231+
\item Timothy G. Mattson (Human Learning Group)
232+
\item Erik Welch (NVIDIA Corporation)
233+
\end{itemize}
234+
235+
228236
Those who served as C API Subcommittee members for GraphBLAS 2.0 are (in alphabetical order):
229237
\begin{itemize}
230238
\item Benjamin Brock (UC Berkeley)
@@ -250,10 +258,12 @@ \section*{Acknowledgments}
250258
\item Intel Corporation
251259
\item Department of Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute [DM-0003727, DM19-0929, DM21-0090]
252260
\item International Business Machines Corporation
261+
\item NVIDIA Corporation
262+
\item Anaconda Inc.
253263
\end{itemize}
254264

255265
The following people provided valuable input and feedback during the development of the specification (in alphabetical order): David Bader,
256-
Hollen Barmer, Bob Cook, Tim Davis, Jeremy Kepner, James Kitchen, Peter Kogge, Manoj Kumar, Roi Lipman, Andrew Mellinger,
266+
Hollen Barmer, Bob Cook, Tim Davis, Jeremy Kepner, Jim Kitchen, Peter Kogge, Manoj Kumar, Roi Lipman, Andrew Mellinger,
257267
Maxim Naumov, Nancy M. Ott, Michel Pelletier, Gabor Szarnyas, Ping Tak Peter Tang, Erik Welch, Michael Wolf, Albert-Jan Yzelman.
258268
\vfill
259269
\pagebreak
@@ -337,6 +347,7 @@ \section{Object methods}
337347
This section describes methods that setup and operate on GraphBLAS opaque objects
338348
but are not part of the the GraphBLAS math specification.
339349

350+
\input{query_methods.tex}
340351
\input{algebra_methods}
341352
\input{scalar_methods}
342353
\input{vector_matrix_methods}

graph-api-c/algebra_methods.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ \subsubsection{{\sf Semiring\_new}: Construct a new GraphBLAS semiring}
349349

350350
%-----------------------------------------------------------------------------
351351

352-
\subsubsection{{\sf IndexUnaryOp\_new}: Construct a new GraphBLAS index unary operator \scott{NEW CONTENT}}
352+
\subsubsection{{\sf IndexUnaryOp\_new}: Construct a new GraphBLAS index unary operator}
353353

354354
Initializes a new GraphBLAS index unary operator with a specified user-defined
355355
function and its types (domains).

graph-api-c/appendices.tex

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,44 @@ \chapter{Revision history}
22
\label{Chp:RevHistory}
33
%--------------------------------------------------------------
44

5-
Changes in 2.0.1 (Released: \#\# Xxxxx 2022:
5+
Changes in 2.1.0 (Released: 22 December 2023): % FIXME
6+
\begin{itemize}
7+
\item (Issue BB-28, BB-27, BB-13, BB-7) We added a capability for meta-data associated with each GraphBLAS
8+
object and the library implementation (the global scope) as well. This was done through the new
9+
{\sf GrB\_get} and {\sf GrB\_set} methods with {({\sf field}, {\sf value})} pairs. We also needed
10+
a new error code for the case where an attempt is made to write to a write-once feild,
11+
{\sf GrB\_ALREADY\_SET}
12+
13+
\item (Issue BB-15, BB-14) The definition of meta-data on GraphBLAS objects added the ability to interact
14+
directly with the type system behind these objects. This required the addition of type
15+
codes ({\sf GrB\_Type\_Code}) and the ability to manage the type system through strings.
16+
17+
\item We augmented the deserialization method so if passed a type parameter of {\sf GrB\_NULL}
18+
it will infer type information needed for deserialization of a GraphBLAS matrix.
19+
20+
\item We added a new built-in descriptor {\sf GrB\_COMP\_STRUCTURE} and an explicit reference
21+
to the default value of a descriptor field, {\sf GrB\_DEFAULT}.
22+
23+
%%% Originial Text .... <<<< remove once we finalize on the above text>>>>
24+
%\item Added {\sf GrB\_get} and {\sf GrB\_set} methods, and associated
25+
%field values to {\sf GrB\_Field}.
26+
%\item Added {\sf GrB\_Type\_Code}.
27+
%\item Added {\sf GrB\_DEFAULT}.
28+
%\item Added {\sf GrB\_COMP\_STRUCTURE}.
29+
%\item Added {\sf GrB\_ALREADY\_SET}.
30+
%\item Allow deserialization when input type parameter is NULL.
31+
\end{itemize}
32+
33+
%--------------------------------------------------------------
34+
35+
Changes in 2.0.1 (Released: 9 December 2022): % Verify Date
636
\begin{itemize}
737
\item (Issue GH-69) Fix error in description of contents of matrix constructed from {\sf GrB\_Matrix\_diag}.
838
\end{itemize}
939

1040
%--------------------------------------------------------------
1141

12-
Changes in 2.0.0 (Released: 15 November 2021:
42+
Changes in 2.0.0 (Released: 15 November 2021):
1343
\begin{itemize}
1444
\item Reorganized Chapters 2 and 3: Chapter 2 contains prose regarding the basic concepts captured in the API; Chapter 3 presents all of the enumerations, literals, data types, and predefined objects required by the API. Made short captions for the List of Tables.
1545
\item (Issue BB-49, BB-50) Updated and corrected language regarding multithreading and completion, and requirements regarding acquire-release memory orders. Methods that used to force complete no longer do.

graph-api-c/context_methods.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ \subsection{{\sf getVersion}: Get the version number of the standard.}
106106
\begin{itemize}[leftmargin=1.1in]
107107
\item[{\sf version}] ({\sf OUT}) On successful return will hold the value
108108
of the major version number.
109-
\item[{\sf version}] ({\sf OUT}) On successful return will hold the value
109+
\item[{\sf subversion}] ({\sf OUT}) On successful return will hold the value
110110
of the subversion number.
111111
\end{itemize}
112112

graph-api-c/free_methods.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ \subsection{{\sf free}: Destroy an object and release its resources}
3838
so they are available for use by other GraphBLAS objects.
3939

4040
The parameter passed into {\sf GrB\_free} is a handle referencing a
41-
GraphBLAS opaque object of a data type from table~\ref{Tab:ObjTypes}.
41+
GraphBLAS opaque object of a data type from Table~\ref{Tab:ObjTypes}.
4242
The object must have been created by an explicit call to a GraphBLAS
4343
constructor. The behavior of a program that calls {\sf GrB\_free}
4444
on a pre-defined object is implementation defined.

0 commit comments

Comments
 (0)