47 #include "control/common.h" 111 MORSE_desc_t *
AUV, MORSE_desc_t *Ark,
112 MORSE_desc_t *
BUV, MORSE_desc_t *Brk,
114 MORSE_desc_t *
CUV, MORSE_desc_t *Crk,
120 MORSE_context_t *morse;
121 MORSE_sequence_t *sequence = NULL;
122 MORSE_request_t request = MORSE_REQUEST_INITIALIZER;
125 morse = morse_context_self();
127 morse_fatal_error(
"MORSE_zgemm_Tile",
"MORSE not initialized");
128 return MORSE_ERR_NOT_INITIALIZED;
130 morse_sequence_create(morse, &sequence);
140 MORSE_Desc_Flush(
AUV, sequence );
141 MORSE_Desc_Flush(
BUV, sequence );
142 MORSE_Desc_Flush(
CUV, sequence );
143 MORSE_Desc_Flush( Ark, sequence );
144 MORSE_Desc_Flush( Brk, sequence );
145 MORSE_Desc_Flush( Crk, sequence );
146 morse_sequence_wait(morse, sequence);
154 status = sequence->status;
155 morse_sequence_destroy(morse, sequence);
178 MORSE_desc_t *
AUV, MORSE_desc_t *Ark,
179 MORSE_desc_t *
BUV, MORSE_desc_t *Brk,
181 MORSE_desc_t *
CUV, MORSE_desc_t *Crk,
185 MORSE_sequence_t *sequence, MORSE_request_t *request)
187 MORSE_context_t *morse;
189 int Am, An, Ai, Aj, Amb, Anb;
190 int Bm, Bn, Bi, Bj, Bmb, Bnb;
192 morse = morse_context_self();
194 morse_fatal_error(
"MORSE_zgemm_Tile_Async",
"MORSE not initialized");
195 return MORSE_ERR_NOT_INITIALIZED;
197 if (sequence == NULL) {
198 morse_fatal_error(
"MORSE_zgemm_Tile_Async",
"NULL sequence");
199 return MORSE_ERR_UNALLOCATED;
201 if (request == NULL) {
202 morse_fatal_error(
"MORSE_zgemm_Tile_Async",
"NULL request");
203 return MORSE_ERR_UNALLOCATED;
206 if (sequence->status == MORSE_SUCCESS)
207 request->status = MORSE_SUCCESS;
209 return morse_request_fail(sequence, request, MORSE_ERR_SEQUENCE_FLUSHED);
213 (morse_desc_check(
AUV) != MORSE_SUCCESS)
214 ||(morse_desc_check(
BUV) != MORSE_SUCCESS)
215 ||(morse_desc_check(
CUV) != MORSE_SUCCESS)
216 ||(morse_desc_check(Ark) != MORSE_SUCCESS)
217 ||(morse_desc_check(Brk) != MORSE_SUCCESS)
218 ||(morse_desc_check(Crk) != MORSE_SUCCESS)
221 morse_error(
"MORSE_zgemm_Tile_Async",
"some invalid descriptors");
222 return morse_request_fail(sequence, request, MORSE_ERR_ILLEGAL_VALUE);
225 if ((transA != MorseNoTrans) && (transA != MorseTrans) && (transA != MorseConjTrans)) {
226 morse_error(
"MORSE_zgemm_Tile_Async",
"illegal value of transA");
227 return morse_request_fail(sequence, request, -1);
229 if ((transB != MorseNoTrans) && (transB != MorseTrans) && (transB != MorseConjTrans)) {
230 morse_error(
"MORSE_zgemm_Tile_Async",
"illegal value of transB");
231 return morse_request_fail(sequence, request, -2);
234 if ( transA == MorseNoTrans ) {
250 if ( transB == MorseNoTrans ) {
290 if (M == 0 || N == 0 ||
291 ((alpha == 0.0 || K == 0) && beta == 1.0))
293 return MORSE_SUCCESS;
302 return MORSE_SUCCESS;
int HICMA_zgemm_Tile(MORSE_enum transA, MORSE_enum transB, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *Ark, MORSE_desc_t *BUV, MORSE_desc_t *Brk, double beta, MORSE_desc_t *CUV, MORSE_desc_t *Crk, int rk, int maxrk, double acc)
void hicma_pzgemm(MORSE_enum transA, MORSE_enum transB, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *Ark, MORSE_desc_t *BUV, MORSE_desc_t *Brk, double beta, MORSE_desc_t *CUV, MORSE_desc_t *Crk, MORSE_sequence_t *sequence, MORSE_request_t *request, int rk, int maxrk, double acc)
int HICMA_zgemm_Tile_Async(MORSE_enum transA, MORSE_enum transB, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *Ark, MORSE_desc_t *BUV, MORSE_desc_t *Brk, double beta, MORSE_desc_t *CUV, MORSE_desc_t *Crk, int rk, int maxrk, double acc, MORSE_sequence_t *sequence, MORSE_request_t *request)