\hypertarget{kdsyrk_8c}{}\section{src/kdsyrk.c File Reference}
\label{kdsyrk_8c}\index{src/kdsyrk.\+c@{src/kdsyrk.\+c}}


L\+A\+Ss-\/\+D\+D\+Ss kdsyrk routine.  


{\ttfamily \#include \char`\"{}../include/lass.\+h\char`\"{}}\\*
Include dependency graph for kdsyrk.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{kdsyrk_8c__incl}
\end{center}
\end{figure}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
enum L\+A\+S\+S\+\_\+\+R\+E\+T\+U\+RN \hyperlink{kdsyrk_8c_a8ffc4fc508b14a7ccda98be54ded18bc}{kdsyrk} (enum D\+D\+S\+S\+\_\+\+U\+P\+LO U\+P\+LO, enum D\+D\+S\+S\+\_\+\+T\+R\+A\+NS T\+R\+A\+N\+S\+\_\+A, int N, int K, const double A\+L\+P\+HA, double $\ast$A, int L\+DA, const double B\+E\+TA, double $\ast$C, int L\+DC)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
L\+A\+Ss-\/\+D\+D\+Ss kdsyrk routine. 

L\+A\+Ss-\/\+D\+D\+Ss is a software package provided by\+: Barcelona Supercomputing Center -\/ Centro Nacional de Supercomputacion

\begin{DoxyAuthor}{Author}
Pedro Valero-\/\+Lara \href{mailto:pedro.valero@bsc.es}{\tt pedro.\+valero@bsc.\+es} 

Boro Sofranac \href{mailto:boro.sofranac@bsc.es}{\tt boro.\+sofranac@bsc.\+es} 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
2018-\/02-\/13   
\end{DoxyDate}


\subsection{Function Documentation}
\index{kdsyrk.\+c@{kdsyrk.\+c}!kdsyrk@{kdsyrk}}
\index{kdsyrk@{kdsyrk}!kdsyrk.\+c@{kdsyrk.\+c}}
\subsubsection[{\texorpdfstring{kdsyrk(enum D\+D\+S\+S\+\_\+\+U\+P\+L\+O U\+P\+L\+O, enum D\+D\+S\+S\+\_\+\+T\+R\+A\+N\+S T\+R\+A\+N\+S\+\_\+\+A, int N, int K, const double A\+L\+P\+H\+A, double $\ast$\+A, int L\+D\+A, const double B\+E\+T\+A, double $\ast$\+C, int L\+D\+C)}{kdsyrk(enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, int N, int K, const double ALPHA, double *A, int LDA, const double BETA, double *C, int LDC)}}]{\setlength{\rightskip}{0pt plus 5cm}enum L\+A\+S\+S\+\_\+\+R\+E\+T\+U\+RN kdsyrk (
\begin{DoxyParamCaption}
\item[{enum D\+D\+S\+S\+\_\+\+U\+P\+LO}]{U\+P\+LO, }
\item[{enum D\+D\+S\+S\+\_\+\+T\+R\+A\+NS}]{T\+R\+A\+N\+S\+\_\+A, }
\item[{int}]{N, }
\item[{int}]{K, }
\item[{const double}]{A\+L\+P\+HA, }
\item[{double $\ast$}]{A, }
\item[{int}]{L\+DA, }
\item[{const double}]{B\+E\+TA, }
\item[{double $\ast$}]{C, }
\item[{int}]{L\+DC}
\end{DoxyParamCaption}
)}\hypertarget{kdsyrk_8c_a8ffc4fc508b14a7ccda98be54ded18bc}{}\label{kdsyrk_8c_a8ffc4fc508b14a7ccda98be54ded18bc}
Performs one of the symmetric rank k operations\+: \begin{DoxyVerb}C = ALPHA * A * op( A ) + BETA * C  or
C = ALPHA * op( A ) * A + BETA * C
\end{DoxyVerb}


where op( X ) is\+: \begin{DoxyVerb}op( X ) = X**T
\end{DoxyVerb}


A\+L\+P\+HA and B\+E\+TA are scalars, C is an N by N symmetric matrix and A is an N by K matrix in the first case and a K by N matrix in the second case. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em U\+P\+LO} & enum D\+D\+S\+S\+\_\+\+U\+P\+LO. U\+P\+LO specifies the form in which C is stored\+:
\begin{DoxyItemize}
\item Lower\+: Lower triangular part of C is stored. The upper traingular part is not referenced.
\item Upper\+: Upper triangular part of C is stored. The lower triangular part is not referenced.
\end{DoxyItemize}\\
\hline
\mbox{\tt in}  & {\em T\+R\+A\+N\+S\+\_\+A} & enum D\+D\+S\+S\+\_\+\+T\+R\+A\+NS. T\+R\+A\+N\+S\+\_\+A specifies the operation to be performed as follows\+:
\begin{DoxyItemize}
\item No\+Trans\+: C = A\+L\+P\+HA $\ast$ A $\ast$ A$\ast$$\ast$T + B\+E\+TA $\ast$ C
\item Trans\+: C = A\+L\+P\+HA $\ast$ A$\ast$$\ast$T $\ast$ A + B\+E\+TA $\ast$ C
\end{DoxyItemize}\\
\hline
\mbox{\tt in}  & {\em N} & int. N specifies the order of matrix C. N must be at least zero.\\
\hline
\mbox{\tt in}  & {\em K} & int. With T\+R\+A\+N\+S\+\_\+A = No\+Trans, K specifies the number of columns of the matrix A, and with T\+R\+A\+N\+S\+\_\+A = Trans, K specifies the number of rows of the matrix A. K must be at least zero.\\
\hline
\mbox{\tt in}  & {\em A\+L\+P\+HA} & double. A\+L\+P\+HA specifies the scalar alpha.\\
\hline
\mbox{\tt in}  & {\em A} & double $\ast$. A is a pointer to a matrix of dimension Na ( rows ) by Ka ( columns ), where Na is N and Ka is K when T\+R\+A\+N\+S\+\_\+A = No\+Trans, and Na is K and Ka is N otherwise.\\
\hline
\mbox{\tt in}  & {\em L\+DA} & int. L\+DA specifies the number of columns of A ( row-\/major order ). When T\+R\+A\+N\+S\+\_\+A = No\+Trans then L\+DA must be at least max( 1, K ), otherwise L\+DA must be at least max( 1, N ).\\
\hline
\mbox{\tt in}  & {\em B\+E\+TA} & double. B\+E\+TA specifies the scalar beta.\\
\hline
\mbox{\tt in,out}  & {\em C} & double $\ast$. C is a pointer to a matrix of dimension N by N. When U\+P\+LO = Uppper the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of C is overwritten by the upper triangular part of the updated solution matrix C. When U\+P\+LO = Lower the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated solution matrix C.\\
\hline
\mbox{\tt in}  & {\em L\+DC} & int. L\+DC specifies the number of columns of C ( row-\/major order ). L\+DC must be at least max( 1, N ).\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em Success} & successful exit \\
\hline
{\em No\+Success} & unsuccessful exit\\
\hline
\end{DoxyRetVals}
\begin{DoxySeeAlso}{See also}
ddss\+\_\+tile 

ddss\+\_\+flat2tiled 

\hyperlink{lass_8h_afc5c48ad2172946afab6c9e989c4e81a}{ddss\+\_\+dsymflat2tiled} 

\hyperlink{lass_8h_a7a0f7b98f2430148a5f99fc403309816}{ddss\+\_\+dsymtiled2flat} 
\end{DoxySeeAlso}


Definition at line 117 of file kdsyrk.\+c.



References ddss\+\_\+dflat2tiled(), ddss\+\_\+dsymflat2tiled(), ddss\+\_\+dsymtiled2flat(), and ddss\+\_\+tile\+\_\+size().



Referenced by ddss\+\_\+dsyrk().


\begin{DoxyCode}
121 \{
122     
123     \textcolor{comment}{// Local variables}
124     \textcolor{keywordtype}{int} nt, kt;
125     \textcolor{keywordtype}{int} mi, ni, ki;
126     \textcolor{keywordtype}{int} Am, An;
127     \textcolor{keywordtype}{int} Cm, Cn;
128     \textcolor{keywordtype}{int} tile\_size\_m;
129     \textcolor{keywordtype}{int} tile\_size\_n;
130     \textcolor{keywordtype}{int} tile\_size\_k;
131     \textcolor{keywordtype}{int} ka;
132     \textcolor{keywordtype}{double} beta;
133 
134     \textcolor{comment}{// Number of tiles}
135     \textcolor{keywordflow}{if} ( N % TILE\_SIZE == 0 ) 
136     \{
137         nt = N / TILE\_SIZE;
138     \}
139     \textcolor{keywordflow}{else}
140     \{
141         nt = ( N / TILE\_SIZE ) + 1;
142     \}
143 
144     \textcolor{keywordflow}{if} ( K % TILE\_SIZE == 0 )
145     \{
146         kt = K / TILE\_SIZE;
147     \}
148     \textcolor{keywordflow}{else}
149     \{
150         kt = ( K / TILE\_SIZE ) + 1;
151     \}
152 
153     \textcolor{comment}{/****************************}
154 \textcolor{comment}{     --Tile matrices declaration--}
155 \textcolor{comment}{     ****************************/}
156 
157     \textcolor{keywordflow}{if} ( TRANS\_A == NoTrans )
158     \{
159         Am = nt;
160         An = kt;
161         ka = N;
162     \}
163     \textcolor{keywordflow}{else}
164     \{
165         Am = kt;
166         An = nt;
167         ka = K;
168     \}
169     
170     Cm = Cn = nt;
171     
172     \textcolor{comment}{/***************************}
173 \textcolor{comment}{     --Tile matrices allocation--}
174 \textcolor{comment}{     ***************************/}
175 
176     double ( *TILE\_A )[An][TILE\_SIZE * TILE\_SIZE] = malloc(
177             Am * An * TILE\_SIZE * TILE\_SIZE * \textcolor{keyword}{sizeof}( \textcolor{keywordtype}{double} ) );
178 
179     \textcolor{keywordflow}{if} ( TILE\_A == NULL )
180     \{
181         fprintf( stderr, \textcolor{stringliteral}{"Failure in ddss\_dtile\_alloc for matrix TILE\_A\(\backslash\)n"} );
182         \textcolor{keywordflow}{return} NoSuccess;
183     \}
184 
185     double ( *TILE\_C )[Cn][TILE\_SIZE * TILE\_SIZE] = malloc(
186             Cm * Cn * TILE\_SIZE * TILE\_SIZE * \textcolor{keyword}{sizeof}( \textcolor{keywordtype}{double} ) );
187 
188     \textcolor{keywordflow}{if} ( TILE\_C == NULL )
189     \{
190         fprintf( stderr, \textcolor{stringliteral}{"Failure in ddss\_dtile\_alloc for matrix TILE\_C\(\backslash\)n"} );
191         \textcolor{keywordflow}{return} NoSuccess;
192     \}
193 
194     \textcolor{comment}{/*********************************************}
195 \textcolor{comment}{     --From flat data layout to tiled data layout-- }
196 \textcolor{comment}{     *********************************************/}
197     
198     \textcolor{comment}{// From flat matrix A to tile matrix TILE\_A}
199     \hyperlink{ddss__flat2tiled_8c_ab411e9b05a203c7905f0285ef4200a9e}{ddss\_dflat2tiled}( ka, LDA, A, LDA, Am, An, TILE\_A );
200     
201     \textcolor{comment}{// From flat matrix C to tile matrix TILE\_C}
202     \hyperlink{ddss__flat2tiled_8c_afc5c48ad2172946afab6c9e989c4e81a}{ddss\_dsymflat2tiled}( N, N, C, LDC, Cm, Cn, TILE\_C, UPLO );
203 
204     \textcolor{comment}{/*************}
205 \textcolor{comment}{     --DSYRK tile--}
206 \textcolor{comment}{     *************/}
207     
208     \textcolor{comment}{// --TRANS\_A = NoTrans & UPLO = Upper-- }
209     \textcolor{keywordflow}{if} ( TRANS\_A == NoTrans )
210     \{
211         \textcolor{keywordflow}{if} ( UPLO == Upper )
212         \{
213             \textcolor{keywordflow}{for} ( mi = 0; mi < nt; mi++ )
214             \{
215                 tile\_size\_m = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, mi );
216                 \textcolor{keywordflow}{for} ( ni = 0; ni < kt; ni++ )
217                 \{
218                     tile\_size\_n = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( K, ni );
219 
220                     \textcolor{keywordflow}{if} ( ni == 0 )
221                     \{
222                         beta = BETA;
223                     \}
224                     \textcolor{keywordflow}{else}
225                     \{
226                         beta = 1.0;
227                     \}
228 
229 \textcolor{preprocessor}{                    #pragma oss task in( TILE\_A[mi][ni] ) \(\backslash\)}
230 \textcolor{preprocessor}{                        inout( TILE\_C[mi][mi] ) \(\backslash\)}
231 \textcolor{preprocessor}{                        shared( TILE\_A, TILE\_C ) \(\backslash\)}
232 \textcolor{preprocessor}{                        firstprivate( mi, ni ) \(\backslash\)}
233 \textcolor{preprocessor}{                        label( dsyrk )}
234                     cblas\_dsyrk( CblasRowMajor,
235                                  ( CBLAS\_UPLO ) UPLO, 
236                                  ( CBLAS\_TRANSPOSE ) TRANS\_A,
237                                  tile\_size\_m,
238                                  tile\_size\_n,
239                                  ALPHA, TILE\_A[mi][ni], tile\_size\_n,
240                                  beta,  TILE\_C[mi][mi], tile\_size\_m );
241 
242                     \textcolor{keywordflow}{for} ( ki = mi + 1; ki < nt; ki++ )
243                     \{
244                         tile\_size\_k = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, ki );
245 
246 \textcolor{preprocessor}{                        #pragma oss task in( TILE\_A[mi][ni] ) \(\backslash\)}
247 \textcolor{preprocessor}{                            in( TILE\_A[ki][ni] ) \(\backslash\)}
248 \textcolor{preprocessor}{                            inout( TILE\_C[mi][ki] ) \(\backslash\)}
249 \textcolor{preprocessor}{                            shared( TILE\_A, TILE\_C ) \(\backslash\)}
250 \textcolor{preprocessor}{                            firstprivate( mi, ni, ki ) \(\backslash\)}
251 \textcolor{preprocessor}{                            label( dgemm )}
252                         cblas\_dgemm( CblasRowMajor,
253                                      CblasNoTrans, CblasTrans,
254                                      tile\_size\_m,
255                                      tile\_size\_k,
256                                      tile\_size\_n,
257                                      ALPHA, TILE\_A[mi][ni], tile\_size\_n,
258                                             TILE\_A[ki][ni], tile\_size\_n,
259                                      beta,  TILE\_C[mi][ki], tile\_size\_k );
260                     \}
261 
262                 \}
263             \}
264         \}
265         \textcolor{comment}{// --TRANS\_A = NoTrans & UPLO = Lower-- }
266         \textcolor{keywordflow}{else}
267         \{
268             \textcolor{keywordflow}{for} ( mi = 0; mi < nt; mi++ ) 
269             \{
270                 tile\_size\_m = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, mi );
271                 \textcolor{keywordflow}{for} ( ni = 0; ni < kt; ni++ )
272                 \{
273                     tile\_size\_n = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( K, ni );
274 
275                     \textcolor{keywordflow}{if} ( ni == 0 )
276                     \{
277                         beta = BETA;
278                     \} 
279                     \textcolor{keywordflow}{else} 
280                     \{
281                         beta = 1.0;
282                     \}
283 
284 \textcolor{preprocessor}{                    #pragma oss task in( TILE\_A[mi][ni] ) \(\backslash\)}
285 \textcolor{preprocessor}{                        inout( TILE\_C[mi][mi] ) \(\backslash\)}
286 \textcolor{preprocessor}{                        shared( TILE\_A, TILE\_C ) \(\backslash\)}
287 \textcolor{preprocessor}{                        firstprivate( mi, ni ) \(\backslash\)}
288 \textcolor{preprocessor}{                        label( dsyrk )}
289                     cblas\_dsyrk( CblasRowMajor,
290                                  ( CBLAS\_UPLO ) UPLO, 
291                                  ( CBLAS\_TRANSPOSE ) TRANS\_A,
292                                  tile\_size\_m,
293                                  tile\_size\_n,
294                                  ALPHA, TILE\_A[mi][ni], tile\_size\_n,
295                                  beta,  TILE\_C[mi][mi], tile\_size\_m );
296 
297                     \textcolor{keywordflow}{for} ( ki = mi + 1; ki < nt; ki++ )
298                     \{
299                         tile\_size\_k = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, ki );
300 
301 \textcolor{preprocessor}{                        #pragma oss task in( TILE\_A[ki][ni] ) \(\backslash\)}
302 \textcolor{preprocessor}{                            in( TILE\_A[mi][ni] ) \(\backslash\)}
303 \textcolor{preprocessor}{                            inout( TILE\_C[ki][mi] ) \(\backslash\)}
304 \textcolor{preprocessor}{                            shared( TILE\_A, TILE\_C ) \(\backslash\)}
305 \textcolor{preprocessor}{                            firstprivate( mi, ni, ki ) \(\backslash\)}
306 \textcolor{preprocessor}{                            label( dgemm )}
307                         cblas\_dgemm( CblasRowMajor,
308                                      CblasNoTrans, CblasTrans,
309                                      tile\_size\_k,
310                                      tile\_size\_m,
311                                      tile\_size\_n,
312                                      ALPHA, TILE\_A[ki][ni], tile\_size\_n,
313                                             TILE\_A[mi][ni], tile\_size\_n,
314                                      beta,  TILE\_C[ki][mi], tile\_size\_m );
315                     \}
316 
317                 \}
318             \}
319         \}
320     \} 
321     \textcolor{comment}{// --TRANS\_A = Trans & UPLO = Upper-- }
322     \textcolor{keywordflow}{else}
323     \{
324         \textcolor{keywordflow}{if} ( UPLO == Upper )
325         \{
326             \textcolor{keywordflow}{for} ( mi = 0; mi < kt; mi++ )
327             \{
328                 tile\_size\_m = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( K, mi );
329                 \textcolor{keywordflow}{for} ( ni = 0; ni < nt; ni++ )
330                 \{
331                     tile\_size\_n = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, ni );
332 
333                     \textcolor{keywordflow}{if} ( mi == 0 )
334                     \{
335                         beta = BETA;
336                     \}
337                     \textcolor{keywordflow}{else}
338                     \{
339                         beta = 1.0;
340                     \}
341 
342 \textcolor{preprocessor}{                    #pragma oss task in( TILE\_A[mi][ni] ) \(\backslash\)}
343 \textcolor{preprocessor}{                        inout( TILE\_C[ni][ni] ) \(\backslash\)}
344 \textcolor{preprocessor}{                        shared( TILE\_A, TILE\_C ) \(\backslash\)}
345 \textcolor{preprocessor}{                        firstprivate( mi, ni ) \(\backslash\)}
346 \textcolor{preprocessor}{                        label( dsyrk )}
347                     cblas\_dsyrk( CblasRowMajor,
348                                  ( CBLAS\_UPLO ) UPLO, 
349                                  ( CBLAS\_TRANSPOSE ) TRANS\_A,
350                                  tile\_size\_n,
351                                  tile\_size\_m,
352                                  ALPHA, TILE\_A[mi][ni], tile\_size\_n,
353                                  beta,  TILE\_C[ni][ni], tile\_size\_n );
354 
355                     \textcolor{keywordflow}{for} ( ki = ni + 1; ki < nt; ki++ ) 
356                     \{
357                         tile\_size\_k = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, ki );
358 
359 \textcolor{preprocessor}{                        #pragma oss task in( TILE\_A[mi][ni] ) \(\backslash\)}
360 \textcolor{preprocessor}{                            in( TILE\_A[mi][ki] ) \(\backslash\)}
361 \textcolor{preprocessor}{                            inout( TILE\_C[ni][ki] ) \(\backslash\)}
362 \textcolor{preprocessor}{                            shared( TILE\_A, TILE\_C ) \(\backslash\)}
363 \textcolor{preprocessor}{                            firstprivate( mi, ni, ki ) \(\backslash\)}
364 \textcolor{preprocessor}{                            label( dgemm )}
365                         cblas\_dgemm( CblasRowMajor,
366                                      CblasTrans, CblasNoTrans,
367                                      tile\_size\_n,
368                                      tile\_size\_k,
369                                      tile\_size\_m,
370                                      ALPHA, TILE\_A[mi][ni], tile\_size\_n,
371                                             TILE\_A[mi][ki], tile\_size\_k,
372                                      beta,  TILE\_C[ni][ki], tile\_size\_k );
373                     \}
374                 \}
375             \}
376         \} 
377         \textcolor{comment}{// --TRANS\_A = Trans & UPLO = Lower-- }
378         \textcolor{keywordflow}{else} 
379         \{
380             \textcolor{keywordflow}{for} ( mi = 0; mi < kt; mi++ )
381             \{
382                 tile\_size\_m = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( K, mi );
383                 \textcolor{keywordflow}{for} ( ni = 0; ni < nt; ni++ ) 
384                 \{
385                     tile\_size\_n = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, ni );
386 
387                     \textcolor{keywordflow}{if} ( mi == 0 )
388                     \{
389                         beta = BETA;
390                     \} 
391                     \textcolor{keywordflow}{else}
392                     \{
393                         beta = 1.0;
394                     \}
395 
396 \textcolor{preprocessor}{                    #pragma oss task in( TILE\_A[mi][ni] ) \(\backslash\)}
397 \textcolor{preprocessor}{                        inout( TILE\_C[ni][ni] ) \(\backslash\)}
398 \textcolor{preprocessor}{                        shared( TILE\_A, TILE\_C ) \(\backslash\)}
399 \textcolor{preprocessor}{                        firstprivate( mi, ni ) \(\backslash\)}
400 \textcolor{preprocessor}{                        label( dsyrk )}
401                     cblas\_dsyrk( CblasRowMajor,
402                                  ( CBLAS\_UPLO ) UPLO, 
403                                  ( CBLAS\_TRANSPOSE ) TRANS\_A,
404                                  tile\_size\_n,
405                                  tile\_size\_m,
406                                  ALPHA, TILE\_A[mi][ni], tile\_size\_n,
407                                  beta,  TILE\_C[ni][ni], tile\_size\_n );
408 
409                     \textcolor{keywordflow}{for} ( ki = ni + 1; ki < nt; ki++ )
410                     \{
411                         tile\_size\_k = \hyperlink{ddss__tile_8c_a931442adba78807015ff9a076fb2ae49}{ddss\_tile\_size}( N, ki );
412 
413 \textcolor{preprocessor}{                        #pragma oss task in( TILE\_A[mi][ki] ) \(\backslash\)}
414 \textcolor{preprocessor}{                            in( TILE\_A[mi][ni] ) \(\backslash\)}
415 \textcolor{preprocessor}{                            inout( TILE\_C[ki][ni] ) \(\backslash\)}
416 \textcolor{preprocessor}{                            shared( TILE\_A, TILE\_C ) \(\backslash\)}
417 \textcolor{preprocessor}{                            firstprivate( mi, ni, ki ) \(\backslash\)}
418 \textcolor{preprocessor}{                            label( dgemm )}
419                         cblas\_dgemm( CblasRowMajor,
420                                      CblasTrans, CblasNoTrans,
421                                      tile\_size\_k,
422                                      tile\_size\_n,
423                                      tile\_size\_m,
424                                      ALPHA, TILE\_A[mi][ki], tile\_size\_k,
425                                             TILE\_A[mi][ni], tile\_size\_n,
426                                      beta,  TILE\_C[ki][ni], tile\_size\_n );
427                     \}
428                 \}
429             \}
430         \}
431     \}
432 
433     \textcolor{comment}{/*********************************************}
434 \textcolor{comment}{     --From tiled data layout to flat data layout-- }
435 \textcolor{comment}{     *********************************************/}
436     
437     \hyperlink{ddss__tiled2flat_8c_a7a0f7b98f2430148a5f99fc403309816}{ddss\_dsymtiled2flat}( N, N, C, LDC, Cm, Cn, TILE\_C, UPLO );
438 
439     \textcolor{comment}{// --Tile matrices free--}
440     free( TILE\_A );
441     free( TILE\_C );
442 
443     \textcolor{keywordflow}{return} Success;
444 
445 \}
\end{DoxyCode}
