From 26f9fc70be63ba7cce3c83c4a85be11806c54f93 Mon Sep 17 00:00:00 2001 From: Reazul Hoque <rhoque@vols.utk.edu> Date: Thu, 30 Nov 2017 17:59:49 -0500 Subject: [PATCH] Added changes for distributed(incomplete) --- runtime/parsec/codelets/codelet_zgemm.c | 6 ++--- runtime/parsec/codelets/codelet_zher2k.c | 6 ++--- runtime/parsec/codelets/codelet_zherk.c | 4 +-- runtime/parsec/codelets/codelet_zplghe.c | 2 +- runtime/parsec/codelets/codelet_zplgsy.c | 2 +- runtime/parsec/codelets/codelet_zpotrf.c | 2 +- runtime/parsec/codelets/codelet_zsyr2k.c | 6 ++--- runtime/parsec/codelets/codelet_zsyrk.c | 4 +-- runtime/parsec/codelets/codelet_ztrsm.c | 4 +-- runtime/parsec/control/runtime_descriptor.c | 29 ++++++++++++++++++--- runtime/parsec/include/chameleon_parsec.h | 2 ++ 11 files changed, 45 insertions(+), 22 deletions(-) diff --git a/runtime/parsec/codelets/codelet_zgemm.c b/runtime/parsec/codelets/codelet_zgemm.c index 34ca3c30f..13ede15fa 100644 --- a/runtime/parsec/codelets/codelet_zgemm.c +++ b/runtime/parsec/codelets/codelet_zgemm.c @@ -88,12 +88,12 @@ void MORSE_TASK_zgemm(const MORSE_option_t *options, sizeof(int), &n, VALUE, sizeof(int), &k, VALUE, sizeof(MORSE_Complex64_t), &alpha, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | morse_parsec_get_arena_index(A), sizeof(int), &lda, VALUE, - PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INPUT, + PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INPUT | morse_parsec_get_arena_index(B), sizeof(int), &ldb, VALUE, sizeof(MORSE_Complex64_t), &beta, VALUE, - PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | morse_parsec_get_arena_index(C) | AFFINITY, sizeof(int), &ldc, VALUE, 0); } diff --git a/runtime/parsec/codelets/codelet_zher2k.c b/runtime/parsec/codelets/codelet_zher2k.c index c2af9c222..78064708c 100644 --- a/runtime/parsec/codelets/codelet_zher2k.c +++ b/runtime/parsec/codelets/codelet_zher2k.c @@ -84,12 +84,12 @@ void MORSE_TASK_zher2k(const MORSE_option_t *options, sizeof(int), &n, VALUE, sizeof(int), &k, VALUE, sizeof(MORSE_Complex64_t), &alpha, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | morse_parsec_get_arena_index(A), sizeof(int), &lda, VALUE, - PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INPUT, + PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INPUT | morse_parsec_get_arena_index(B), sizeof(int), &ldb, VALUE, sizeof(double), &beta, VALUE, - PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | morse_parsec_get_arena_index(C) | AFFINITY, sizeof(int), &ldc, VALUE, 0); } diff --git a/runtime/parsec/codelets/codelet_zherk.c b/runtime/parsec/codelets/codelet_zherk.c index 20c78e973..738572657 100644 --- a/runtime/parsec/codelets/codelet_zherk.c +++ b/runtime/parsec/codelets/codelet_zherk.c @@ -79,10 +79,10 @@ void MORSE_TASK_zherk(const MORSE_option_t *options, sizeof(int), &n, VALUE, sizeof(int), &k, VALUE, sizeof(double), &alpha, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | morse_parsec_get_arena_index(A), sizeof(int), &lda, VALUE, sizeof(double), &beta, VALUE, - PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | morse_parsec_get_arena_index(C) | AFFINITY, sizeof(int), &ldc, VALUE, 0); } diff --git a/runtime/parsec/codelets/codelet_zplghe.c b/runtime/parsec/codelets/codelet_zplghe.c index 6883fd6e1..13dfda18c 100644 --- a/runtime/parsec/codelets/codelet_zplghe.c +++ b/runtime/parsec/codelets/codelet_zplghe.c @@ -65,7 +65,7 @@ void MORSE_TASK_zplghe( const MORSE_option_t *options, sizeof(double), &bump, VALUE, sizeof(int), &m, VALUE, sizeof(int), &n, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), OUTPUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), OUTPUT | morse_parsec_get_arena_index(A) | AFFINITY, sizeof(int), &lda, VALUE, sizeof(int), &bigM, VALUE, sizeof(int), &m0, VALUE, diff --git a/runtime/parsec/codelets/codelet_zplgsy.c b/runtime/parsec/codelets/codelet_zplgsy.c index 6ed9e709d..afd91170b 100644 --- a/runtime/parsec/codelets/codelet_zplgsy.c +++ b/runtime/parsec/codelets/codelet_zplgsy.c @@ -65,7 +65,7 @@ void MORSE_TASK_zplgsy( const MORSE_option_t *options, sizeof(MORSE_Complex64_t), &bump, VALUE, sizeof(int), &m, VALUE, sizeof(int), &n, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), OUTPUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), OUTPUT | morse_parsec_get_arena_index(A) | AFFINITY, sizeof(int), &lda, VALUE, sizeof(int), &bigM, VALUE, sizeof(int), &m0, VALUE, diff --git a/runtime/parsec/codelets/codelet_zpotrf.c b/runtime/parsec/codelets/codelet_zpotrf.c index b13f687b7..9cdf2486d 100644 --- a/runtime/parsec/codelets/codelet_zpotrf.c +++ b/runtime/parsec/codelets/codelet_zpotrf.c @@ -60,7 +60,7 @@ void MORSE_TASK_zpotrf(const MORSE_option_t *options, PARSEC_dtd_taskpool, CORE_zpotrf_parsec, options->priority, "potrf", sizeof(MORSE_enum), &uplo, VALUE, sizeof(int), &n, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INOUT | morse_parsec_get_arena_index(A) | AFFINITY, sizeof(int), &lda, VALUE, sizeof(int), &iinfo, VALUE, 0); diff --git a/runtime/parsec/codelets/codelet_zsyr2k.c b/runtime/parsec/codelets/codelet_zsyr2k.c index 33d326d37..a16a874e1 100644 --- a/runtime/parsec/codelets/codelet_zsyr2k.c +++ b/runtime/parsec/codelets/codelet_zsyr2k.c @@ -79,12 +79,12 @@ void MORSE_TASK_zsyr2k(const MORSE_option_t *options, sizeof(int), &n, VALUE, sizeof(int), &k, VALUE, sizeof(MORSE_Complex64_t), &alpha, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | morse_parsec_get_arena_index(A), sizeof(int), &lda, VALUE, - PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INPUT, + PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INPUT | morse_parsec_get_arena_index(B), sizeof(int), &ldb, VALUE, sizeof(MORSE_Complex64_t), &beta, VALUE, - PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | morse_parsec_get_arena_index(C) | AFFINITY, sizeof(int), &ldc, VALUE, 0); } diff --git a/runtime/parsec/codelets/codelet_zsyrk.c b/runtime/parsec/codelets/codelet_zsyrk.c index 4ff939ef2..28911f3c3 100644 --- a/runtime/parsec/codelets/codelet_zsyrk.c +++ b/runtime/parsec/codelets/codelet_zsyrk.c @@ -73,10 +73,10 @@ void MORSE_TASK_zsyrk(const MORSE_option_t *options, sizeof(int), &n, VALUE, sizeof(int), &k, VALUE, sizeof(MORSE_Complex64_t), &alpha, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | morse_parsec_get_arena_index(A), sizeof(int), &lda, VALUE, sizeof(MORSE_Complex64_t), &beta, VALUE, - PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ), INOUT | morse_parsec_get_arena_index(C) | AFFINITY, sizeof(int), &ldc, VALUE, 0); } diff --git a/runtime/parsec/codelets/codelet_ztrsm.c b/runtime/parsec/codelets/codelet_ztrsm.c index 08520db9a..fb650e6c2 100644 --- a/runtime/parsec/codelets/codelet_ztrsm.c +++ b/runtime/parsec/codelets/codelet_ztrsm.c @@ -71,9 +71,9 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options, sizeof(int), &m, VALUE, sizeof(int), &n, VALUE, sizeof(MORSE_Complex64_t), &alpha, VALUE, - PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT, + PASSED_BY_REF, RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | morse_parsec_get_arena_index(A), sizeof(int), &lda, VALUE, - PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INOUT | AFFINITY, + PASSED_BY_REF, RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INOUT | morse_parsec_get_arena_index(A) | AFFINITY, sizeof(int), &ldb, VALUE, 0); } diff --git a/runtime/parsec/control/runtime_descriptor.c b/runtime/parsec/control/runtime_descriptor.c index da9250b4f..70b38659e 100644 --- a/runtime/parsec/control/runtime_descriptor.c +++ b/runtime/parsec/control/runtime_descriptor.c @@ -11,6 +11,7 @@ #include "chameleon_parsec.h" #include <parsec/data.h> #include <parsec/datatype.h> +#include <parsec/data_dist/matrix/matrix.h> #include <parsec/arena.h> static int parsec_global_arena_index = 0; @@ -39,6 +40,10 @@ struct morse_parsec_desc_s { int arena_index; }; +int morse_parsec_get_arena_index(const MORSE_desc_t *desc) { + return ((morse_parsec_desc_t *)desc->schedopt)->arena_index; +} + static void morse_parsec_key_to_coordinates(parsec_data_collection_t *data_collection, parsec_data_key_t key, int *m, int *n) @@ -225,10 +230,26 @@ void RUNTIME_desc_create( MORSE_desc_t *mdesc ) parsec_dtd_data_collection_init(data_collection); - /*dplasma_add2arena_tile( parsec_dtd_arenas[0], - mdesc->mb*mdesc->nb*sizeof(MORSE_Complex64_t), - PARSEC_ARENA_ALIGNMENT_SSE, - parsec_datatype_double_complex_t, mdesc->mb ); */ + /* arena init */ + /* taskpool init to bypass a requirement of PaRSEC */ +#if defined(CHAMELEON_USE_MPI) + parsec_dtd_taskpool_new(); + /* Internal limitation of PaRSEC */ + assert(parsec_global_arena_index < 16); + pdesc->arena_index = parsec_global_arena_index++; + + parsec_datatype_t datatype; + switch(mdesc->dtyp) { + case MorseInteger: datatype = parsec_datatype_int32_t; break; + case MorseRealFloat: datatype = parsec_datatype_float_t; break; + case MorseRealDouble: datatype = parsec_datatype_double_t; break; + case MorseComplexFloat: datatype = parsec_datatype_complex_t; break; + case MorseComplexDouble: datatype = parsec_datatype_double_complex_t; break; + default: morse_fatal_error("MORSE_Element_Size", "undefined type"); break; + } + + parsec_matrix_add2arena_tile( parsec_dtd_arenas[pdesc->arena_index], datatype, mdesc->mb*mdesc->nb*MORSE_Element_Size(mdesc->dtyp) ); +#endif /* /\* Overwrite the leading dimensions to store the padding *\/ */ /* mdesc->llm = mdesc->mb * mdesc->lmt; */ /* mdesc->lln = mdesc->nb * mdesc->lnt; */ diff --git a/runtime/parsec/include/chameleon_parsec.h b/runtime/parsec/include/chameleon_parsec.h index ffb511607..f1b91ebc6 100644 --- a/runtime/parsec/include/chameleon_parsec.h +++ b/runtime/parsec/include/chameleon_parsec.h @@ -20,6 +20,8 @@ struct morse_parsec_desc_s; typedef struct morse_parsec_desc_s morse_parsec_desc_t; +int morse_parsec_get_arena_index(const MORSE_desc_t *desc); + /* * Access to block pointer and leading dimension */ -- GitLab