diff --git a/CMakeLists.txt b/CMakeLists.txt index b5ea70886363d9129ec67bc51367e725ce85ac57..38788dd4c961cfe912da784aeb2351fd8f325391 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -706,6 +706,11 @@ if( CHAMELEON_SCHED_STARPU ) set(HAVE_STARPU_IDLE_PREFETCH 1) message("-- ${Blue}Add definition HAVE_STARPU_IDLE_PREFETCH${ColourReset}") endif() + check_function_exists(starpu_set_iteration STARPU_SET_ITERATION_FOUND) + if ( STARPU_SET_ITERATION_FOUND ) + set(HAVE_STARPU_SET_ITERATION 1) + message("-- ${Blue}Add definition HAVE_STARPU_SET_ITERATION${ColourReset}") + endif() check_function_exists(starpu_data_wont_use STARPU_DATA_WONT_USE_FOUND) if ( STARPU_DATA_WONT_USE_FOUND ) set(HAVE_STARPU_DATA_WONT_USE 1) diff --git a/compute/pzgelqf.c b/compute/pzgelqf.c index 416f043e8b2a169138a5d801823e5bae4620b40f..0608f6d36f40064fceb066d601204a8cfdd783b0 100644 --- a/compute/pzgelqf.c +++ b/compute/pzgelqf.c @@ -115,6 +115,8 @@ void morse_pzgelqf(MORSE_desc_t *A, MORSE_desc_t *T, #endif for (k = 0; k < minMNT; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pzgelqfrh.c b/compute/pzgelqfrh.c index caefaf5c82e53145047e6c07c57dfedb7622c6db..9295ac65748e99bb5ecadecbe3f15a7dc32643ff 100644 --- a/compute/pzgelqfrh.c +++ b/compute/pzgelqfrh.c @@ -119,6 +119,8 @@ void morse_pzgelqfrh(MORSE_desc_t *A, MORSE_desc_t *T, int BS, #endif for (k = 0; k < chameleon_min(A->mt, A->nt); k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); for (N = k; N < A->nt; N += BS) { diff --git a/compute/pzgeqrf.c b/compute/pzgeqrf.c index ca0dfb2e9e3573b4e52cb573eff41710b1cdf7db..c3d6fa742f8be5b16b73e760687da8e7914b967a 100644 --- a/compute/pzgeqrf.c +++ b/compute/pzgeqrf.c @@ -110,6 +110,8 @@ void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, #endif for (k = 0; k < minMNT; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pzgeqrfrh.c b/compute/pzgeqrfrh.c index fd002fc64cfba3750172019861fa05477e2c4bc1..b96eddc07f1b82228a5869a1c8c5e671b5e43e20 100644 --- a/compute/pzgeqrfrh.c +++ b/compute/pzgeqrfrh.c @@ -118,6 +118,8 @@ void morse_pzgeqrfrh(MORSE_desc_t *A, MORSE_desc_t *T, int BS, K = chameleon_min(A->mt, A->nt); for (k = 0; k < K; k++) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; for (M = k; M < A->mt; M += BS) { tempMm = M == A->mt-1 ? A->m-M*A->mb : A->mb; diff --git a/compute/pzgetrf_incpiv.c b/compute/pzgetrf_incpiv.c index 43bd1628703ee9a3681057838036cf44f4558452..c280a693c4d59d286e3d7ab95e7f42c7a43b4364 100644 --- a/compute/pzgetrf_incpiv.c +++ b/compute/pzgetrf_incpiv.c @@ -78,6 +78,8 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, morse_zdesc_alloc_diag(*DIAG, A->mb, A->nb, chameleon_min(A->m, A->n), A->nb, 0, 0, chameleon_min(A->m, A->n), A->nb, A->p, A->q); for (k = 0; k < minMNT; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pzgetrf_nopiv.c b/compute/pzgetrf_nopiv.c index 5eea46d894f76cac504ee4232fd2168f2872ada4..75a980138dd2248c904c8bd77736847bb03f5af6 100644 --- a/compute/pzgetrf_nopiv.c +++ b/compute/pzgetrf_nopiv.c @@ -54,6 +54,8 @@ void morse_pzgetrf_nopiv(MORSE_desc_t *A, ib = MORSE_IB; for (k = 0; k < chameleon_min(A->mt, A->nt); k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pzhetrd_he2hb.c b/compute/pzhetrd_he2hb.c index e1bf3dc84c3f53915aba49308378181d9056ef3f..0fed5cc88b63f29c6d82d27a537f7f5cc25eea75 100644 --- a/compute/pzhetrd_he2hb.c +++ b/compute/pzhetrd_he2hb.c @@ -137,6 +137,8 @@ void morse_pzhetrd_he2hb(MORSE_enum uplo, if (uplo == MorseLower) { for (k = 0; k < A->nt-1; k++){ + RUNTIME_set_iteration(k); + tempkm = k+1 == A->mt-1 ? A->m-(k+1)*A->mb : A->mb; tempkn = k == A->nt-1 ? A->n- k *A->nb : A->nb; ldak1 = BLKLDD(A, k+1); @@ -290,6 +292,8 @@ void morse_pzhetrd_he2hb(MORSE_enum uplo, } else { for (k = 0; k < A->nt-1; k++){ + RUNTIME_set_iteration(k); + tempkn = k+1 == A->nt-1 ? A->n-(k+1)*A->nb : A->nb; tempkm = k == A->mt-1 ? A->m- k *A->mb : A->mb; ldak = BLKLDD(A, k); diff --git a/compute/pzpotrf.c b/compute/pzpotrf.c index 711bc236e4e890991ce0b6e1784ffc4f31a658df..fe8143714ce19bf072b23ce90afcbe5d1907edca 100644 --- a/compute/pzpotrf.c +++ b/compute/pzpotrf.c @@ -71,6 +71,8 @@ void morse_pzpotrf(MORSE_enum uplo, MORSE_desc_t *A, */ if (uplo == MorseLower) { for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); @@ -128,6 +130,8 @@ void morse_pzpotrf(MORSE_enum uplo, MORSE_desc_t *A, */ else { for (k = 0; k < A->nt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pzpotrimm.c b/compute/pzpotrimm.c index d388cb3de6cc4d4ef4218818d4d6947b63143b1f..8f5f83f7ed0ed7c3ab41f5686f1f6430fefdb80a 100644 --- a/compute/pzpotrimm.c +++ b/compute/pzpotrimm.c @@ -76,6 +76,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZPOTRF */ for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); @@ -124,6 +126,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZTRTRI */ for (k = 0; k < A->nt; k++) { + RUNTIME_set_iteration(A->nt + k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); for (m = k+1; m < A->mt; m++) { @@ -170,6 +174,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZLAUUM */ for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(2*A->nt + k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); for(n = 0; n < k; n++) { @@ -211,6 +217,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZSYMM Right / Lower */ for (k = 0; k < C->nt; k++) { + RUNTIME_set_iteration(3*A->nt + k); + tempkn = k == C->nt-1 ? C->n-k*C->nb : C->nb; ldak = BLKLDD(A, k); zbeta = k == 0 ? beta : zone; @@ -269,6 +277,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZPOTRF */ for (k = 0; k < A->nt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); MORSE_TASK_zpotrf( @@ -317,6 +327,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZTRTRI */ for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(A->nt + k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); for (n = k+1; n < A->nt; n++) { @@ -363,6 +375,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZLAUUM */ for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(2*A->nt + k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -406,6 +420,8 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de * ZSYMM Right / Upper */ for (k = 0; k < C->nt; k++) { + RUNTIME_set_iteration(3*A->nt + k); + tempkn = k == C->nt-1 ? C->n-k*C->nb : C->nb; ldak = BLKLDD(A, k); zbeta = k == 0 ? beta : zone; diff --git a/compute/pzsytrf.c b/compute/pzsytrf.c index de662bee8f4c0d351ba1e735ec5077c4b4f37b1a..622a4d0b2a8d302e475cc18afad67da720da2d34 100644 --- a/compute/pzsytrf.c +++ b/compute/pzsytrf.c @@ -60,6 +60,8 @@ void morse_pzsytrf(MORSE_enum uplo, MORSE_desc_t *A, */ if (uplo == MorseLower) { for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); @@ -110,6 +112,8 @@ void morse_pzsytrf(MORSE_enum uplo, MORSE_desc_t *A, */ else { for (k = 0; k < A->nt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); MORSE_TASK_zsytrf_nopiv( diff --git a/compute/pztpgqrt.c b/compute/pztpgqrt.c index 5b0672d031d537dcfaf402f655720a86e0a194e4..7b31f39c2889abb369295c0de78bbded528835d0 100644 --- a/compute/pztpgqrt.c +++ b/compute/pztpgqrt.c @@ -101,6 +101,8 @@ void morse_pztpgqrt( int L, #endif for (k = V1->nt-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkm = k == V1->mt-1 ? V1->m-k*V1->mb : V1->mb; tempkk = k == V1->nt-1 ? V1->n-k*V1->nb : V1->nb; tempkn = k == Q1->nt-1 ? Q1->n-k*Q1->nb : Q1->nb; diff --git a/compute/pztpqrt.c b/compute/pztpqrt.c index 9b60ef164a62cb22288894358fa050262d05c06f..a1c6c9149ee11469ba8dee209e6caa7815e55d64 100644 --- a/compute/pztpqrt.c +++ b/compute/pztpqrt.c @@ -91,6 +91,8 @@ void morse_pztpqrt( int L, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *T, RUNTIME_options_ws_alloc( &options, ws_worker, ws_host ); for (k = 0; k < A->nt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pztrtri.c b/compute/pztrtri.c index ba77c7a90cc82b37e2ffd5f9f73b9fddc0de4f95..b6777d212818feb4a07d3161f5acce157178dbee 100644 --- a/compute/pztrtri.c +++ b/compute/pztrtri.c @@ -56,6 +56,8 @@ void morse_pztrtri(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A, */ if (uplo == MorseLower) { for (k = 0; k < A->nt; k++) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; ldak = BLKLDD(A, k); for (m = k+1; m < A->mt; m++) { @@ -104,6 +106,8 @@ void morse_pztrtri(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A, */ else { for (k = 0; k < A->mt; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); for (n = k+1; n < A->nt; n++) { diff --git a/compute/pzunglq.c b/compute/pzunglq.c index 37ecea8efb8b0d2d37aad2672123b1df868a0d2a..56d43c833babb5bf5428cd4f8a6e2e555a92d7df 100644 --- a/compute/pzunglq.c +++ b/compute/pzunglq.c @@ -98,6 +98,8 @@ void morse_pzunglq(MORSE_desc_t *A, MORSE_desc_t *Q, MORSE_desc_t *T, #endif for (k = minMT-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempAkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempAkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; tempkmin = chameleon_min( tempAkn, tempAkm ); diff --git a/compute/pzunglqrh.c b/compute/pzunglqrh.c index 59717f431e43a9c333f899e85cf28be8f3de8b1d..09b67e012599eb9b1fdc8597c6cf8a07b9f5a1e2 100644 --- a/compute/pzunglqrh.c +++ b/compute/pzunglqrh.c @@ -99,6 +99,8 @@ void morse_pzunglqrh(MORSE_desc_t *A, MORSE_desc_t *Q, K = chameleon_min(A->mt, A->nt); for (k = K-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); lastRD = 0; diff --git a/compute/pzungqr.c b/compute/pzungqr.c index 23f33b7e816e74b5b727655441ab839bec18cf03..a93983d1e7b7be3f5f7e03c2405b79f3738ab4a5 100644 --- a/compute/pzungqr.c +++ b/compute/pzungqr.c @@ -98,6 +98,8 @@ void morse_pzungqr(MORSE_desc_t *A, MORSE_desc_t *Q, MORSE_desc_t *T, #endif for (k = minMT-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempAkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; tempAkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; tempkmin = chameleon_min( tempAkn, tempAkm ); diff --git a/compute/pzungqrrh.c b/compute/pzungqrrh.c index 1a2470eceb767f9c7d40f269c222d84b9b17cbdc..dcacc344f37446a192f43102daee1f6a328dd366 100644 --- a/compute/pzungqrrh.c +++ b/compute/pzungqrrh.c @@ -101,6 +101,8 @@ void morse_pzungqrrh(MORSE_desc_t *A, MORSE_desc_t *Q, K = chameleon_min(A->mt, A->nt); for (k = K-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; lastRD = 0; for (RD = BS; RD < A->mt-k; RD *= 2) diff --git a/compute/pzunmlq.c b/compute/pzunmlq.c index 3cb7d8591eeed71062aaa4456372918dd7b1f962..448eff9efe98dcf9780d52af9f818d8792da9c4a 100644 --- a/compute/pzunmlq.c +++ b/compute/pzunmlq.c @@ -105,6 +105,8 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseNoTrans */ for (k = 0; k < minMT; k++) { + RUNTIME_set_iteration(k); + tempkm = k == B->mt-1 ? B->m-k*B->mb : B->mb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -155,6 +157,8 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseConjTrans */ for (k = minMT-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkm = k == B->mt-1 ? B->m-k*B->mb : B->mb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -207,6 +211,8 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, * MorseRight / MorseNoTrans */ for (k = minMT-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkn = k == B->nt -1 ? B->n -k*B->nb : B->nb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -257,6 +263,8 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, * MorseRight / MorseConjTrans */ for (k = 0; k < minMT; k++) { + RUNTIME_set_iteration(k); + tempkn = k == B->nt -1 ? B->n -k*B->nb : B->nb; tempkmin = k == minMT-1 ? minM-k*A->mb : A->mb; ldak = BLKLDD(A, k); diff --git a/compute/pzunmlqrh.c b/compute/pzunmlqrh.c index 2963bf5537c7b35157d1dba86b640d6db8bc1086..21f1805e1e705fb6bebebc66433c366d7399e58c 100644 --- a/compute/pzunmlqrh.c +++ b/compute/pzunmlqrh.c @@ -105,6 +105,8 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseNoTrans */ for (k = 0; k < K; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); for (N = k; N < A->nt; N += BS) { @@ -178,6 +180,8 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseConjTrans */ for (k = K-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); lastRD = 0; @@ -257,6 +261,8 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, * MorseRight / MorseNoTrans */ for (k = K-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); lastRD = 0; @@ -332,6 +338,8 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, * MorseRight / MorseConjTrans */ for (k = 0; k < K; k++) { + RUNTIME_set_iteration(k); + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; ldak = BLKLDD(A, k); for (N = k; N < A->nt; N += BS) { diff --git a/compute/pzunmqr.c b/compute/pzunmqr.c index f860f7f04b795bcf6f8151084afe49a94ea575f5..4cbcf7b62a2df5620086fb4d15a596580872b916 100644 --- a/compute/pzunmqr.c +++ b/compute/pzunmqr.c @@ -105,6 +105,8 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseConjTrans */ for (k = 0; k < minMT; k++) { + RUNTIME_set_iteration(k); + tempkm = k == B->mt-1 ? B->m-k*B->mb : B->mb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -156,6 +158,8 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, */ else { for (k = minMT-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkm = k == B->mt-1 ? B->m-k*B->mb : B->mb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -209,6 +213,8 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, else { if (trans == MorseConjTrans) { for (k = minMT-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkn = k == B->nt-1 ? B->n-k*B->nb : B->nb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); @@ -261,6 +267,8 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, */ else { for (k = 0; k < minMT; k++) { + RUNTIME_set_iteration(k); + tempkn = k == B->nt-1 ? B->n-k*B->nb : B->nb; tempkmin = k == minMT-1 ? minM-k*A->nb : A->nb; ldak = BLKLDD(A, k); diff --git a/compute/pzunmqrrh.c b/compute/pzunmqrrh.c index 8ef8cb2dc8426db7183ea8b8d5e5d6dd5b76f3a6..62023091c981210bd7c21a8218daa711e3ca7c28 100644 --- a/compute/pzunmqrrh.c +++ b/compute/pzunmqrrh.c @@ -107,6 +107,8 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseConjTrans */ for (k = 0; k < K; k++) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; for (M = k; M < A->mt; M += BS) { tempMm = M == A->mt-1 ? A->m-M*A->mb : A->mb; @@ -182,6 +184,8 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, * MorseLeft / MorseNoTrans */ for (k = K-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; lastRD = 0; for (RD = BS; RD < A->mt-k; RD *= 2) @@ -262,6 +266,8 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, * MorseRight / MorseConjTrans */ for (k = K-1; k >= 0; k--) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; lastRD = 0; for (RD = BS; RD < A->mt-k; RD *= 2) @@ -340,6 +346,8 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, * MorseRight / MorseNoTrans */ for (k = 0; k < K; k++) { + RUNTIME_set_iteration(k); + tempkn = k == A->nt-1 ? A->n-k*A->nb : A->nb; for (M = k; M < A->mt; M += BS) { tempMm = M == A->mt-1 ? A->m-M*A->mb : A->mb; diff --git a/control/config.h.in b/control/config.h.in index 9d6dbdb0b2a536341357c4610dced4f4893e6e8d..a71d517dcc81c036d9236dce679bebcc31596161 100644 --- a/control/config.h.in +++ b/control/config.h.in @@ -34,6 +34,7 @@ /* StarPU functions */ #cmakedefine HAVE_STARPU_FXT_PROFILING #cmakedefine HAVE_STARPU_IDLE_PREFETCH +#cmakedefine HAVE_STARPU_SET_ITERATION #cmakedefine HAVE_STARPU_DATA_WONT_USE #cmakedefine HAVE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS #cmakedefine HAVE_STARPU_MPI_DATA_REGISTER diff --git a/include/runtime.h b/include/runtime.h index 95cf19b75674623160da018bda60c1cbd65ef413..ea765e11213b490f7d6622a7d6d45815d0b430f3 100644 --- a/include/runtime.h +++ b/include/runtime.h @@ -52,6 +52,8 @@ int RUNTIME_rank (MORSE_context_t*); int RUNTIME_init_scheduler (MORSE_context_t*, int, int, int); void RUNTIME_finalize_scheduler (MORSE_context_t*); void RUNTIME_barrier (MORSE_context_t*); +void RUNTIME_set_iteration (MORSE_context_t*, unsigned long iteration); +void RUNTIME_set_subiteration (MORSE_context_t*, unsigned long subiteration); void RUNTIME_pause (MORSE_context_t*); void RUNTIME_resume (MORSE_context_t*); void RUNTIME_comm_rank (int*); diff --git a/runtime/parsec/control/runtime_control.c b/runtime/parsec/control/runtime_control.c index edaafbfbef13114d85d66d3e18523b05a68973da..c1d3d9910e0315b2d0e396460d0093fa8b5764e5 100644 --- a/runtime/parsec/control/runtime_control.c +++ b/runtime/parsec/control/runtime_control.c @@ -67,6 +67,20 @@ void RUNTIME_barrier(MORSE_context_t *morse) return; } +/******************************************************************************* + * Set iteration numbers for traces + **/ +void RUNTIME_set_iteration( MORSE_context_t *morse, unsigned long iteration ) +{ + (void)morse; + return; +} +void RUNTIME_set_subiteration( MORSE_context_t *morse, unsigned long subiteration ) +{ + (void)morse; + return; +} + /******************************************************************************* * To suspend the processing of new tasks by workers **/ diff --git a/runtime/quark/control/runtime_control.c b/runtime/quark/control/runtime_control.c index 2ca4d060ce7177339bfc926edfee89be3526d7d0..3a9be224e0a351f174a317754fec190126c3de01 100644 --- a/runtime/quark/control/runtime_control.c +++ b/runtime/quark/control/runtime_control.c @@ -68,6 +68,20 @@ void RUNTIME_finalize_scheduler(MORSE_context_t *morse) return; } +/******************************************************************************* + * Set iteration numbers for traces + **/ +void RUNTIME_set_iteration( MORSE_context_t *morse, unsigned long iteration ) +{ + (void)morse; + return; +} +void RUNTIME_set_subiteration( MORSE_context_t *morse, unsigned long subiteration ) +{ + (void)morse; + return; +} + /******************************************************************************* * To suspend the processing of new tasks by workers **/ diff --git a/runtime/starpu/control/runtime_control.c b/runtime/starpu/control/runtime_control.c index eb1cbb646c25a237d594bade6b64b74fadfd60dc..b1aba1933b89e79f03d53cb3a30f30988779824a 100644 --- a/runtime/starpu/control/runtime_control.c +++ b/runtime/starpu/control/runtime_control.c @@ -175,6 +175,24 @@ void RUNTIME_barrier( MORSE_context_t *morse ) #endif } +/******************************************************************************* + * Set iteration numbers for traces + **/ +void RUNTIME_set_iteration( MORSE_context_t *morse, unsigned long iteration ) +{ + (void)morse; +#if defined(HAVE_STARPU_SET_ITERATION) + starpu_set_iteration(iteration); +#endif +} +void RUNTIME_set_subiteration( MORSE_context_t *morse, unsigned long subiteration ) +{ + (void)morse; +#if defined(HAVE_STARPU_SET_ITERATION) + starpu_set_subiteration(subiteration); +#endif +} + /******************************************************************************* * To suspend the processing of new tasks by workers **/