48 #include "control/common.h" 54 #define A(m,n) A, m, n 55 #define B(m,n) B, m, n 70 MORSE_sequence_t *sequence, MORSE_request_t *request)
73 printf(
"%d:%s rk:%d maxrk:%d acc:%e alpha:%e\n",
75 rk, maxrk, acc, alpha);
77 MORSE_desc_t*
A =
AUV;
78 MORSE_desc_t*
B =
BUV;
80 MORSE_context_t *morse;
81 MORSE_option_t options;
84 int ldak, ldam, ldan, ldbk, ldbm;
85 int tempkm, tempkn, tempmm, tempnn;
87 double zone = (double) 1.0;
88 double mzone = (double)-1.0;
89 double minvalpha = (double)-1.0 / alpha;
92 morse = morse_context_self();
93 if (sequence->status != MORSE_SUCCESS)
95 RUNTIME_options_init(&options, morse, sequence, request);
99 2 * AD->mb * 2 * maxrk
103 + (2*maxrk) * (2*maxrk)
106 ws_worker *=
sizeof(double);
108 RUNTIME_options_ws_alloc( &options, ws_worker, ws_host );
112 if (
side == MorseLeft) {
113 if (
uplo == MorseUpper) {
114 assert(
"Not implemented yet" == 0);
115 if (
trans == MorseNoTrans) {
116 for (k = 0; k <
B->mt; k++) {
117 tempkm = k == 0 ?
B->m-(
B->mt-1)*
B->mb :
B->mb;
118 ldak = BLKLDD(
A,
B->mt-1-k);
119 ldbk = BLKLDD(
B,
B->mt-1-k);
120 lalpha = k == 0 ? alpha : zone;
121 for (n = 0; n <
B->nt; n++) {
122 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
126 tempkm, tempnn,
A->mb,
127 lalpha,
A(
B->mt-1-k,
B->mt-1-k), ldak,
128 B(
B->mt-1-k, n), ldbk);
131 RUNTIME_data_flush( sequence,
A(
B->mt-1-k,
B->mt-1-k) );
132 for (m = k+1; m <
B->mt; m++) {
133 ldam = BLKLDD(
A,
B->mt-1-m);
134 ldbm = BLKLDD(
B,
B->mt-1-m);
135 for (n = 0; n <
B->nt; n++) {
136 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
139 MorseNoTrans, MorseNoTrans,
140 B->mb, tempnn, tempkm,
A->mb,
141 mzone,
A(
B->mt-1-m,
B->mt-1-k), ldam,
142 B(
B->mt-1-k, n ), ldbk,
143 lalpha,
B(
B->mt-1-m, n ), ldbm);
146 RUNTIME_data_flush( sequence,
A(
B->mt-1-m,
B->mt-1-k) );
148 for (n = 0; n <
B->nt; n++) {
150 RUNTIME_data_flush( sequence,
B(
B->mt-1-k, n) );
158 for (k = 0; k <
B->mt; k++) {
159 tempkm = k ==
B->mt-1 ?
B->m-k*
B->mb :
B->mb;
162 lalpha = k == 0 ? alpha : zone;
163 for (n = 0; n <
B->nt; n++) {
164 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
168 tempkm, tempnn,
A->mb,
169 lalpha,
A(k, k), ldak,
173 RUNTIME_data_flush( sequence,
A(k, k) );
174 for (m = k+1; m <
B->mt; m++) {
175 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
177 for (n = 0; n <
B->nt; n++) {
178 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
182 tempmm, tempnn,
B->mb,
A->mb,
183 mzone,
A(k, m), ldak,
185 lalpha,
B(m, n), ldbm);
188 RUNTIME_data_flush( sequence,
A(k, m) );
190 for (n = 0; n <
B->nt; n++) {
192 RUNTIME_data_flush( sequence,
B(k, n) );
202 if (
trans == MorseNoTrans) {
205 for (k = 0; k <
B->mt; k++) {
206 int ldbkuv = BLKLDD(
BUV, k);
207 int ldakd = BLKLDD(AD, k);
208 tempkm = k ==
B->mt-1 ?
B->m-k*
B->mb :
B->mb;
211 lalpha = k == 0 ? alpha : zone;
212 for (n = 0; n <
B->nt; n++) {
213 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
218 tempkm, tempnn,
A->mb,
219 lalpha,
A(k, k), ldak,
236 RUNTIME_data_flush( sequence,
A(k, k) );
237 for (m = k+1; m <
B->mt; m++) {
238 int ldamuv = BLKLDD(
AUV, m);
239 int ldbmuv = BLKLDD(
BUV, m);
240 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
243 for (n = 0; n <
B->nt; n++) {
244 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
248 MorseNoTrans, MorseNoTrans,
249 tempmm, tempnn,
B->mb,
A->mb,
250 mzone,
A(m, k), ldam,
252 lalpha,
B(m, n), ldbm);
256 MorseNoTrans, MorseNoTrans,
260 AUV, Ark, m, k, ldamuv,
261 BUV, Brk, k, n, ldbkuv,
263 BUV, Brk, m, n, ldbmuv,
268 RUNTIME_data_flush( sequence,
A(m, k) );
270 for (n = 0; n <
B->nt; n++) {
272 RUNTIME_data_flush( sequence,
B(k, n) );
282 for (k = 0; k <
B->mt; k++) {
283 int ldakuv = BLKLDD(
AUV,
B->mt-1-k);
284 int ldbkuv = BLKLDD(
BUV,
B->mt-1-k);
285 int ldakd = BLKLDD(AD,
B->mt-1-k);
286 tempkm = k == 0 ?
B->m-(
B->mt-1)*
B->mb :
B->mb;
287 ldak = BLKLDD(
A,
B->mt-1-k);
288 ldbk = BLKLDD(
B,
B->mt-1-k);
289 lalpha = k == 0 ? alpha : zone;
290 for (n = 0; n <
B->nt; n++) {
291 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
296 tempkm, tempnn,
A->mb,
297 lalpha,
A(
B->mt-1-k,
B->mt-1-k), ldak,
298 B(
B->mt-1-k, n), ldbk);
305 lalpha, AD,
B->mt-1-k,
314 RUNTIME_data_flush( sequence,
A(
B->mt-1-k,
B->mt-1-k) );
315 for (m = k+1; m <
B->mt; m++) {
316 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
317 ldbm = BLKLDD(
B,
B->mt-1-m);
318 int ldbmuv = BLKLDD(
BUV,
B->mt-1-m);
319 for (n = 0; n <
B->nt; n++) {
320 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
325 B->mb, tempnn, tempkm,
A->mb,
326 mzone,
A(
B->mt-1-k,
B->mt-1-m), ldak,
327 B(
B->mt-1-k, n ), ldbk,
328 lalpha,
B(
B->mt-1-m, n ), ldbm);
336 AUV, Ark,
B->mt-1-k,
B->mt-1-m, ldakuv,
337 BUV, Brk,
B->mt-1-k, n, ldbkuv,
339 BUV, Brk,
B->mt-1-m, n, ldbmuv,
344 RUNTIME_data_flush( sequence,
A(
B->mt-1-k,
B->mt-1-m) );
346 for (n = 0; n <
B->nt; n++) {
348 RUNTIME_data_flush( sequence,
B(
B->mt-1-k, n) );
358 assert(
"Not implemented yet" == 0);
359 if (
uplo == MorseUpper) {
360 if (
trans == MorseNoTrans) {
361 for (k = 0; k <
B->nt; k++) {
362 tempkn = k ==
B->nt-1 ?
B->n-k*
B->nb :
B->nb;
364 lalpha = k == 0 ? alpha : zone;
365 for (m = 0; m <
B->mt; m++) {
366 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
371 tempmm, tempkn,
A->mb,
372 lalpha,
A(k, k), ldak,
376 RUNTIME_data_flush( sequence,
A(k, k) );
377 for (m = 0; m <
B->mt; m++) {
378 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
380 for (n = k+1; n <
B->nt; n++) {
381 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
384 MorseNoTrans, MorseNoTrans,
385 tempmm, tempnn,
B->mb,
A->mb,
386 mzone,
B(m, k), ldbm,
388 lalpha,
B(m, n), ldbm);
391 RUNTIME_data_flush( sequence,
B(m, k) );
393 for (n = k+1; n <
B->nt; n++) {
395 RUNTIME_data_flush( sequence,
A(k, n) );
403 for (k = 0; k <
B->nt; k++) {
404 tempkn = k == 0 ?
B->n-(
B->nt-1)*
B->nb :
B->nb;
405 ldak = BLKLDD(
A,
B->nt-1-k);
406 for (m = 0; m <
B->mt; m++) {
407 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
412 tempmm, tempkn,
A->mb,
413 alpha,
A(
B->nt-1-k,
B->nt-1-k), ldak,
414 B( m,
B->nt-1-k), ldbm);
416 RUNTIME_data_flush( sequence,
A(
B->nt-1-k,
B->nt-1-k) );
418 for (n = k+1; n <
B->nt; n++) {
419 ldan = BLKLDD(
A,
B->nt-1-n);
423 tempmm,
B->nb, tempkn,
A->mb,
424 minvalpha,
B(m,
B->nt-1-k), ldbm,
425 A(
B->nt-1-n,
B->nt-1-k), ldan,
426 zone,
B(m,
B->nt-1-n), ldbm);
429 RUNTIME_data_flush( sequence,
B(m,
B->nt-1-k) );
431 for (n = k+1; n <
B->nt; n++) {
433 RUNTIME_data_flush( sequence,
A(
B->nt-1-n,
B->nt-1-k) );
442 if (
trans == MorseNoTrans) {
443 for (k = 0; k <
B->nt; k++) {
444 tempkn = k == 0 ?
B->n-(
B->nt-1)*
B->nb :
B->nb;
445 ldak = BLKLDD(
A,
B->nt-1-k);
446 lalpha = k == 0 ? alpha : zone;
447 for (m = 0; m <
B->mt; m++) {
448 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
453 tempmm, tempkn,
A->mb,
454 lalpha,
A(
B->nt-1-k,
B->nt-1-k), ldak,
455 B( m,
B->nt-1-k), ldbm);
457 RUNTIME_data_flush( sequence,
A(
B->nt-1-k,
B->nt-1-k) );
459 for (n = k+1; n <
B->nt; n++) {
462 MorseNoTrans, MorseNoTrans,
463 tempmm,
B->nb, tempkn,
A->mb,
464 mzone,
B(m,
B->nt-1-k), ldbm,
465 A(
B->nt-1-k,
B->nt-1-n), ldak,
466 lalpha,
B(m,
B->nt-1-n), ldbm);
469 RUNTIME_data_flush( sequence,
B(m,
B->nt-1-k) );
471 for (n = k+1; n <
B->nt; n++) {
473 RUNTIME_data_flush( sequence,
A(
B->nt-1-k,
B->nt-1-n) );
481 for (k = 0; k <
B->nt; k++) {
482 tempkn = k ==
B->nt-1 ?
B->n-k*
B->nb :
B->nb;
484 for (m = 0; m <
B->mt; m++) {
485 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
490 tempmm, tempkn,
A->mb,
491 alpha,
A(k, k), ldak,
494 RUNTIME_data_flush( sequence,
A(k, k) );
496 for (n = k+1; n <
B->nt; n++) {
497 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
502 tempmm, tempnn,
B->mb,
A->mb,
503 minvalpha,
B(m, k), ldbm,
505 zone,
B(m, n), ldbm);
507 RUNTIME_data_flush( sequence,
B(m, k) );
509 for (n = k+1; n <
B->nt; n++) {
510 RUNTIME_data_flush( sequence,
A(n, k) );
517 RUNTIME_options_ws_free(&options);
518 RUNTIME_options_finalize(&options, morse);
526 MORSE_desc_t *Bdense,
528 MORSE_sequence_t *sequence, MORSE_request_t *request)
531 printf(
"%d:%s maxrk:%d alpha:%e\n",
535 MORSE_desc_t*
A =
AUV;
536 MORSE_desc_t*
B = Bdense;
538 MORSE_context_t *morse;
539 MORSE_option_t options;
542 int ldak, ldam, ldan, ldbk, ldbm;
543 int tempkm, tempkn, tempmm, tempnn;
545 double zone = (double) 1.0;
546 double mzone = (double)-1.0;
547 double minvalpha = (double)-1.0 / alpha;
550 morse = morse_context_self();
551 if (sequence->status != MORSE_SUCCESS)
553 RUNTIME_options_init(&options, morse, sequence, request);
555 size_t ws_worker = 0;
559 ws_worker *=
sizeof(double);
561 RUNTIME_options_ws_alloc( &options, ws_worker, ws_host );
565 if (
side == MorseLeft) {
566 if (
uplo == MorseUpper) {
567 assert(
"Not implemented yet" == 0);
568 if (
trans == MorseNoTrans) {
569 for (k = 0; k <
B->mt; k++) {
570 tempkm = k == 0 ?
B->m-(
B->mt-1)*
B->mb :
B->mb;
571 ldak = BLKLDD(
A,
B->mt-1-k);
572 ldbk = BLKLDD(
B,
B->mt-1-k);
573 lalpha = k == 0 ? alpha : zone;
574 for (n = 0; n <
B->nt; n++) {
575 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
579 tempkm, tempnn,
A->mb,
580 lalpha,
A(
B->mt-1-k,
B->mt-1-k), ldak,
581 B(
B->mt-1-k, n), ldbk);
583 RUNTIME_data_flush( sequence,
A(
B->mt-1-k,
B->mt-1-k) );
584 for (m = k+1; m <
B->mt; m++) {
585 ldam = BLKLDD(
A,
B->mt-1-m);
586 ldbm = BLKLDD(
B,
B->mt-1-m);
587 for (n = 0; n <
B->nt; n++) {
588 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
591 MorseNoTrans, MorseNoTrans,
592 B->mb, tempnn, tempkm,
A->mb,
593 mzone,
A(
B->mt-1-m,
B->mt-1-k), ldam,
594 B(
B->mt-1-k, n ), ldbk,
595 lalpha,
B(
B->mt-1-m, n ), ldbm);
597 RUNTIME_data_flush( sequence,
A(
B->mt-1-m,
B->mt-1-k) );
599 for (n = 0; n <
B->nt; n++) {
600 RUNTIME_data_flush( sequence,
B(
B->mt-1-k, n) );
608 for (k = 0; k <
B->mt; k++) {
609 tempkm = k ==
B->mt-1 ?
B->m-k*
B->mb :
B->mb;
612 lalpha = k == 0 ? alpha : zone;
613 for (n = 0; n <
B->nt; n++) {
614 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
618 tempkm, tempnn,
A->mb,
619 lalpha,
A(k, k), ldak,
622 RUNTIME_data_flush( sequence,
A(k, k) );
623 for (m = k+1; m <
B->mt; m++) {
624 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
626 for (n = 0; n <
B->nt; n++) {
627 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
631 tempmm, tempnn,
B->mb,
A->mb,
632 mzone,
A(k, m), ldak,
634 lalpha,
B(m, n), ldbm);
636 RUNTIME_data_flush( sequence,
A(k, m) );
638 for (n = 0; n <
B->nt; n++) {
639 RUNTIME_data_flush( sequence,
B(k, n) );
649 if (
trans == MorseNoTrans) {
652 for (k = 0; k <
B->mt; k++) {
653 int ldbkd = BLKLDD(Bdense, k);
654 int ldakd = BLKLDD(AD, k);
655 tempkm = k ==
B->mt-1 ?
B->m-k*
B->mb :
B->mb;
658 lalpha = k == 0 ? alpha : zone;
659 for (n = 0; n <
B->nt; n++) {
660 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
667 lalpha, AD, k, 0, ldakd,
668 Bdense, k, n, ldbkd);
670 RUNTIME_data_flush( sequence,
A(k, k) );
671 for (m = k+1; m <
B->mt; m++) {
672 int ldamuv = BLKLDD(
AUV, m);
673 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
675 int ldbmd = BLKLDD(Bdense, m);
676 for (n = 0; n <
B->nt; n++) {
677 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
681 MorseNoTrans, MorseNoTrans,
682 tempmm, tempnn,
B->mb,
A->mb,
683 mzone,
A(m, k), ldam,
685 lalpha,
B(m, n), ldbm);
696 MorseNoTrans, MorseNoTrans,
700 AUV, Ark, m, k, ldamuv,
703 Bdense, m, n, ldbmd);
706 RUNTIME_data_flush( sequence,
A(m, 0) );
708 for (n = 0; n <
B->nt; n++) {
709 RUNTIME_data_flush( sequence,
B(k, n) );
718 printf(
"%s %d Left Lower Trans B->m,n:%d,%d B->mt,nt:%d,%d\n", __FILE__, __LINE__,
B->m,
B->n,
B->mt,
B->nt);
719 for (k = 0; k <
B->mt; k++) {
720 int ldakuv = BLKLDD(
AUV,
B->mt-1-k);
721 int ldakd = BLKLDD(AD,
B->mt-1-k);
722 int ldbkd = BLKLDD(Bdense,
B->mt-1-k);
723 tempkm = k == 0 ?
B->m-(
B->mt-1)*
B->mb :
B->mb;
724 ldak = BLKLDD(AD,
B->mt-1-k);
725 ldbk = BLKLDD(
B,
B->mt-1-k);
726 lalpha = k == 0 ? alpha : zone;
727 for (n = 0; n <
B->nt; n++) {
728 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
734 if(1)MORSE_TASK_dtrsm(
739 tempkm, tempnn,
A->mb,
740 lalpha, AD,
B->mt-1-k, 0, ldak,
741 Bdense,
B->mt-1-k, n, ldbk);
743 RUNTIME_data_flush( sequence,
A(
B->mt-1-k,
B->mt-1-k) );
744 for (m = k+1; m <
B->mt; m++) {
746 if (
B->mt-1-k ==
B->mt-1) {
747 if (AD->m %
AUV->mb == 0) {
750 tempmm = AD->m %
AUV->mb;
755 ldbm = BLKLDD(
B,
B->mt-1-m);
756 for (n = 0; n <
B->nt; n++) {
757 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
762 B->mb, tempnn, tempkm,
A->mb,
763 mzone,
A(
B->mt-1-k,
B->mt-1-m), ldak,
764 B(
B->mt-1-k, n ), ldbk,
765 lalpha,
B(
B->mt-1-m, n ), ldbm);
779 AUV, Ark,
B->mt-1-k,
B->mt-1-m, ldakuv,
780 Bdense,
B->mt-1-k, n, ldbk,
782 Bdense,
B->mt-1-m, n, ldbm);
785 RUNTIME_data_flush( sequence,
A(
B->mt-1-k, 0) );
787 for (n = 0; n <
B->nt; n++) {
788 RUNTIME_data_flush( sequence,
B(
B->mt-1-k, n) );
798 assert(
"Not implemented yet" == 0);
799 if (
uplo == MorseUpper) {
800 if (
trans == MorseNoTrans) {
801 for (k = 0; k <
B->nt; k++) {
802 tempkn = k ==
B->nt-1 ?
B->n-k*
B->nb :
B->nb;
804 lalpha = k == 0 ? alpha : zone;
805 for (m = 0; m <
B->mt; m++) {
806 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
811 tempmm, tempkn,
A->mb,
812 lalpha,
A(k, k), ldak,
815 RUNTIME_data_flush( sequence,
A(k, k) );
816 for (m = 0; m <
B->mt; m++) {
817 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
819 for (n = k+1; n <
B->nt; n++) {
820 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
823 MorseNoTrans, MorseNoTrans,
824 tempmm, tempnn,
B->mb,
A->mb,
825 mzone,
B(m, k), ldbm,
827 lalpha,
B(m, n), ldbm);
829 RUNTIME_data_flush( sequence,
B(m, k) );
831 for (n = k+1; n <
B->nt; n++) {
832 RUNTIME_data_flush( sequence,
A(k, n) );
840 for (k = 0; k <
B->nt; k++) {
841 tempkn = k == 0 ?
B->n-(
B->nt-1)*
B->nb :
B->nb;
842 ldak = BLKLDD(
A,
B->nt-1-k);
843 for (m = 0; m <
B->mt; m++) {
844 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
849 tempmm, tempkn,
A->mb,
850 alpha,
A(
B->nt-1-k,
B->nt-1-k), ldak,
851 B( m,
B->nt-1-k), ldbm);
852 RUNTIME_data_flush( sequence,
A(
B->nt-1-k,
B->nt-1-k) );
854 for (n = k+1; n <
B->nt; n++) {
855 ldan = BLKLDD(
A,
B->nt-1-n);
859 tempmm,
B->nb, tempkn,
A->mb,
860 minvalpha,
B(m,
B->nt-1-k), ldbm,
861 A(
B->nt-1-n,
B->nt-1-k), ldan,
862 zone,
B(m,
B->nt-1-n), ldbm);
864 RUNTIME_data_flush( sequence,
B(m,
B->nt-1-k) );
866 for (n = k+1; n <
B->nt; n++) {
867 RUNTIME_data_flush( sequence,
A(
B->nt-1-n,
B->nt-1-k) );
876 if (
trans == MorseNoTrans) {
877 for (k = 0; k <
B->nt; k++) {
878 tempkn = k == 0 ?
B->n-(
B->nt-1)*
B->nb :
B->nb;
879 ldak = BLKLDD(
A,
B->nt-1-k);
880 lalpha = k == 0 ? alpha : zone;
881 for (m = 0; m <
B->mt; m++) {
882 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
887 tempmm, tempkn,
A->mb,
888 lalpha,
A(
B->nt-1-k,
B->nt-1-k), ldak,
889 B( m,
B->nt-1-k), ldbm);
890 RUNTIME_data_flush( sequence,
A(
B->nt-1-k,
B->nt-1-k) );
892 for (n = k+1; n <
B->nt; n++) {
895 MorseNoTrans, MorseNoTrans,
896 tempmm,
B->nb, tempkn,
A->mb,
897 mzone,
B(m,
B->nt-1-k), ldbm,
898 A(
B->nt-1-k,
B->nt-1-n), ldak,
899 lalpha,
B(m,
B->nt-1-n), ldbm);
901 RUNTIME_data_flush( sequence,
B(m,
B->nt-1-k) );
903 for (n = k+1; n <
B->nt; n++) {
904 RUNTIME_data_flush( sequence,
A(
B->nt-1-k,
B->nt-1-n) );
912 for (k = 0; k <
B->nt; k++) {
913 tempkn = k ==
B->nt-1 ?
B->n-k*
B->nb :
B->nb;
915 for (m = 0; m <
B->mt; m++) {
916 tempmm = m ==
B->mt-1 ?
B->m-m*
B->mb :
B->mb;
921 tempmm, tempkn,
A->mb,
922 alpha,
A(k, k), ldak,
924 RUNTIME_data_flush( sequence,
A(k, k) );
926 for (n = k+1; n <
B->nt; n++) {
927 tempnn = n ==
B->nt-1 ?
B->n-n*
B->nb :
B->nb;
932 tempmm, tempnn,
B->mb,
A->mb,
933 minvalpha,
B(m, k), ldbm,
935 zone,
B(m, n), ldbm);
937 RUNTIME_data_flush( sequence,
B(m, k) );
939 for (n = k+1; n <
B->nt; n++) {
940 RUNTIME_data_flush( sequence,
A(n, k) );
947 RUNTIME_options_ws_free(&options);
948 RUNTIME_options_finalize(&options, morse);
void hicma_pztrsm(MORSE_enum side, MORSE_enum uplo, MORSE_enum trans, MORSE_enum diag, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *AD, MORSE_desc_t *Ark, MORSE_desc_t *BUV, MORSE_desc_t *Brk, int rk, int maxrk, double acc, MORSE_sequence_t *sequence, MORSE_request_t *request)
void HICMA_TASK_zgemm_bdcd(const MORSE_option_t *options, MORSE_enum transA, int transB, int m, int n, double alpha, const MORSE_desc_t *AUV, const MORSE_desc_t *Ark, int Am, int An, int lda, const MORSE_desc_t *BD, int Bm, int Bn, int ldb, double beta, const MORSE_desc_t *CD, int Cm, int Cn, int ldc)
void HICMA_TASK_zgemm(const MORSE_option_t *options, MORSE_enum transA, int transB, int m, int n, double alpha, const MORSE_desc_t *AUV, const MORSE_desc_t *Ark, int Am, int An, int lda, const MORSE_desc_t *BUV, const MORSE_desc_t *Brk, int Bm, int Bn, int ldb, double beta, const MORSE_desc_t *CUV, const MORSE_desc_t *Crk, int Cm, int Cn, int ldc, int rk, int maxrk, double acc)
void hicma_pztrsmd(MORSE_enum side, MORSE_enum uplo, MORSE_enum trans, MORSE_enum diag, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *AD, MORSE_desc_t *Ark, MORSE_desc_t *Bdense, int maxrk, MORSE_sequence_t *sequence, MORSE_request_t *request)
int HICMA_get_print_index()
void HICMA_TASK_ztrsm(const MORSE_option_t *options, MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, int m, double alpha, const MORSE_desc_t *A, int Am, int An, int lda, const MORSE_desc_t *BUV, int Bm, int Bn, int ldb, const MORSE_desc_t *Brk)