37 |
\end{center}% |
\end{center}% |
38 |
\NOTE{should we use the namespace qualifier for these symbols?} |
\NOTE{should we use the namespace qualifier for these symbols?} |
39 |
|
|
40 |
|
\subsection{Generated header file} |
41 |
|
In normal operation, the Diderot compiler generates a binary object file and an associated |
42 |
|
header file that defines the public interface to the Diderot program. |
43 |
|
The interface includes the following parts: |
44 |
|
\begin{itemize} |
45 |
|
\item |
46 |
|
types and functions for initializing the runtime system. |
47 |
|
\item |
48 |
|
functions for handling Diderot input variables |
49 |
|
\item |
50 |
|
functions to initialize and run the Diderot computation |
51 |
|
\item |
52 |
|
functions to retrieve the results of the computation |
53 |
|
\item |
54 |
|
functions to shutdown and deallocation the runtime system structures. |
55 |
|
\end{itemize}% |
56 |
|
|
57 |
% structure of header file |
% structure of header file |
58 |
% world creation |
% world creation |
59 |
% initializing inputs; descriptions; defaults |
% initializing inputs; descriptions; defaults |
63 |
% shutdown |
% shutdown |
64 |
|
|
65 |
\subsection{Types} |
\subsection{Types} |
66 |
|
\begin{center} |
67 |
|
\begin{tabular}{|c|c|p{2.5in}|} |
68 |
|
\hline |
69 |
|
\textbf{Diderot type} & \textbf{C type} & \multicolumn{1}{c|}{\textbf{Notes}} \\\hline |
70 |
|
\kw{bool} & \texttt{bool} & \textit{from} \texttt{<stdbool.h>} \\\hline |
71 |
|
\kw{int} & \texttt{int32\char`\_t} \textit{or} \texttt{int64\char`\_t} |
72 |
|
& \textit{type is controlled by command-line flag} \\\hline |
73 |
|
\kw{string} & \texttt{char *} & \\\hline |
74 |
|
\kw{real} & \texttt{float} \textit{or} \texttt{double} |
75 |
|
& \textit{type is controlled by command-line flag} \\\hline |
76 |
|
\kw{image(}$d$\kw{)[}$\sigma$\kw{]} & \texttt{Nrrd *} |
77 |
|
& \textit{see \secref{sec:nrrd-files} for details} \\\hline |
78 |
|
\kw{tensor[}$\sigma$\kw{]} |
79 |
|
& \texttt{float[}$n$\texttt{]} \textit{or} \texttt{double[}$n$\texttt{]} & |
80 |
|
\textit{where $n = \Pi \sigma$} \\ |
81 |
|
\hline |
82 |
|
\end{tabular}% |
83 |
|
\end{center}% |
84 |
|
|
85 |
|
%A tensor type \kw{tensor[}$d_1,d_2,\ldots,d_k$\kw{]} will be represented by a flat array |
86 |
|
%of $n$ floating point values, where $n = d_1 \times d_2 \times \cdots \times d_k$. |
87 |
|
|
88 |
|
\subsection{Target-specific functions} |
89 |
|
% parallel target: {Get,Set}NumWorkers |
90 |
|
|
91 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
92 |
\section{Standalone executables} |
\section{Standalone executables} |
93 |
|
|
94 |
% inputs map to command-line options |
% inputs map to command-line options |
95 |
% outputs map to nrrd files |
% outputs map to nrrd files |
96 |
|
|
97 |
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
98 |
|
\section{Nrrd files} |
99 |
|
\label{sec:nrrd-files} |