diff --git a/control/descriptor.h b/control/descriptor.h index 2981f9685da6ebc709d790a88aa9c95fa784845a..e60b3909fd3d3483a935c309a532a1dafe8699fe 100644 --- a/control/descriptor.h +++ b/control/descriptor.h @@ -205,20 +205,31 @@ inline static int morse_desc_islocal( const MORSE_desc_t *A, int m, int n ) * MORSE_END_ACCESS_DECLARATION */ #define MORSE_BEGIN_ACCESS_DECLARATION { \ - unsigned __morse_need_submit = 0; + unsigned __morse_need_submit = 0; \ + RUNTIME_BEGIN_ACCESS_DECLARATION -#define MORSE_ACCESS_R(A, Am, An) \ - if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; +#define MORSE_ACCESS_R(A, Am, An) do { \ + if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \ + RUNTIME_ACCESS_R(A, Am, An) \ +} while(0) -#define MORSE_ACCESS_W(A, Am, An) \ - if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; +#define MORSE_ACCESS_W(A, Am, An) do { \ + if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \ + RUNTIME_ACCESS_W(A, Am, An) \ +} while(0) -#define MORSE_ACCESS_RW(A, Am, An) \ - if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; +#define MORSE_ACCESS_RW(A, Am, An) do { \ + if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \ + RUNTIME_ACCESS_RW(A, Am, An) \ +} while(0) -#define MORSE_RANK_CHANGED __morse_need_submit = 1; +#define MORSE_RANK_CHANGED(rank) do {\ + __morse_need_submit = 1; \ + RUNTIME_RANK_CHANGED(rank) \ +} while (0) #define MORSE_END_ACCESS_DECLARATION \ + RUNTIME_END_ACCESS_DECLARATION \ if (!__morse_need_submit) return; \ } diff --git a/runtime/parsec/include/morse_parsec.h b/runtime/parsec/include/morse_parsec.h index 00acf344e789a31b773c2c253c006f1470a67db7..bdaaece06a48225263d564ce6cfdfac27b629254 100644 --- a/runtime/parsec/include/morse_parsec.h +++ b/runtime/parsec/include/morse_parsec.h @@ -24,4 +24,16 @@ typedef struct morse_parsec_desc_s morse_parsec_desc_t; */ #define RTBLKADDR( desc, type, m, n ) ( dague_dtd_tile_of( DAGUE_dtd_handle, (desc)->schedopt, m, n ) ) +#define RUNTIME_BEGIN_ACCESS_DECLARATION + +#define RUNTIME_ACCESS_R(A, Am, An) + +#define RUNTIME_ACCESS_W(A, Am, An) + +#define RUNTIME_ACCESS_RW(A, Am, An) + +#define RUNTIME_RANK_CHANGED(rank) + +#define RUNTIME_END_ACCESS_DECLARATION + #endif /* _MORSE_PARSEC_H_ */ diff --git a/runtime/quark/include/morse_quark.h b/runtime/quark/include/morse_quark.h index 648c2c4875d42b1d95862002bbb817bcb87cf821..e841a251e55f571a39002967e7fd3cc3933b830e 100644 --- a/runtime/quark/include/morse_quark.h +++ b/runtime/quark/include/morse_quark.h @@ -47,4 +47,16 @@ typedef struct quark_option_s { */ #define RTBLKADDR( desc, type, m, n ) ( (type*)RUNTIME_desc_getaddr( desc, m, n ) ) +#define RUNTIME_BEGIN_ACCESS_DECLARATION + +#define RUNTIME_ACCESS_R(A, Am, An) + +#define RUNTIME_ACCESS_W(A, Am, An) + +#define RUNTIME_ACCESS_RW(A, Am, An) + +#define RUNTIME_RANK_CHANGED(rank) + +#define RUNTIME_END_ACCESS_DECLARATION + #endif /* _MORSE_QUARK_H_ */ diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c index ed5ff9d571be4c9ccf6f657e286c1338f5c41fa0..292e071de10a48b70fb34fa6e91ad2dfdc3c7de4 100644 --- a/runtime/starpu/codelets/codelet_zgemm.c +++ b/runtime/starpu/codelets/codelet_zgemm.c @@ -75,7 +75,7 @@ void MORSE_TASK_zgemm(const MORSE_option_t *options, MORSE_ACCESS_R(B, Bm, Bn); MORSE_ACCESS_RW(C, Cm, Cn); if (rank_changed) - MORSE_RANK_CHANGED; + MORSE_RANK_CHANGED(execution_rank); MORSE_END_ACCESS_DECLARATION; starpu_insert_task( diff --git a/runtime/starpu/codelets/codelet_ztrsm.c b/runtime/starpu/codelets/codelet_ztrsm.c index 061c264121b27baf69d7906300551697302f4fba..76903283298f39b36ee4bcfea4263b563a5434ca 100644 --- a/runtime/starpu/codelets/codelet_ztrsm.c +++ b/runtime/starpu/codelets/codelet_ztrsm.c @@ -68,7 +68,7 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options, MORSE_ACCESS_R(A, Am, An); MORSE_ACCESS_RW(B, Bm, Bn); if (rank_changed) - MORSE_RANK_CHANGED; + MORSE_RANK_CHANGED(execution_rank); MORSE_END_ACCESS_DECLARATION; starpu_insert_task( diff --git a/runtime/starpu/codelets/codelet_ztsmqr.c b/runtime/starpu/codelets/codelet_ztsmqr.c index 3f26f7c5803992b3c8af206676ef4acb6a7c15d6..665628cf4f9283f0dea3bcbe67dd3ebda5b8f590 100644 --- a/runtime/starpu/codelets/codelet_ztsmqr.c +++ b/runtime/starpu/codelets/codelet_ztsmqr.c @@ -176,7 +176,7 @@ void MORSE_TASK_ztsmqr(const MORSE_option_t *options, MORSE_ACCESS_R(V, Vm, Vn); MORSE_ACCESS_R(T, Tm, Tn); if (rank_changed) - MORSE_RANK_CHANGED; + MORSE_RANK_CHANGED(execution_rank); MORSE_END_ACCESS_DECLARATION; starpu_insert_task( diff --git a/runtime/starpu/codelets/codelet_zttmqr.c b/runtime/starpu/codelets/codelet_zttmqr.c index f16d3f0b07408cdb4b75bd22e850d872571cbe22..3368c6da7ecfb8bd00a7d269d98e88f487159144 100644 --- a/runtime/starpu/codelets/codelet_zttmqr.c +++ b/runtime/starpu/codelets/codelet_zttmqr.c @@ -169,7 +169,7 @@ void MORSE_TASK_zttmqr(const MORSE_option_t *options, MORSE_ACCESS_R(V, Vm, Vn); MORSE_ACCESS_R(T, Tm, Tn); if (rank_changed) - MORSE_RANK_CHANGED; + MORSE_RANK_CHANGED(execution_rank); MORSE_END_ACCESS_DECLARATION; starpu_insert_task( diff --git a/runtime/starpu/codelets/codelet_zunmqr.c b/runtime/starpu/codelets/codelet_zunmqr.c index 3c981f4bbb0a2349580ed9d6443b914389e388cd..2b88c1d3b90206b3acd2cc1a238a0ca578c81beb 100644 --- a/runtime/starpu/codelets/codelet_zunmqr.c +++ b/runtime/starpu/codelets/codelet_zunmqr.c @@ -153,7 +153,7 @@ void MORSE_TASK_zunmqr(const MORSE_option_t *options, MORSE_ACCESS_R(T, Tm, Tn); MORSE_ACCESS_RW(C, Cm, Cn); if (rank_changed) - MORSE_RANK_CHANGED; + MORSE_RANK_CHANGED(execution_rank); MORSE_END_ACCESS_DECLARATION; starpu_insert_task( diff --git a/runtime/starpu/include/morse_starpu.h b/runtime/starpu/include/morse_starpu.h index 2f0ff0356241975c1082f3648fe69acb95e2d63c..473e68aa8c3691cef051b45573f66ef615f4c446 100644 --- a/runtime/starpu/include/morse_starpu.h +++ b/runtime/starpu/include/morse_starpu.h @@ -86,4 +86,16 @@ typedef struct starpu_conf starpu_conf_t; void RUNTIME_set_reduction_methods(starpu_data_handle_t handle, MORSE_enum dtyp); +#define RUNTIME_BEGIN_ACCESS_DECLARATION + +#define RUNTIME_ACCESS_R(A, Am, An) + +#define RUNTIME_ACCESS_W(A, Am, An) + +#define RUNTIME_ACCESS_RW(A, Am, An) + +#define RUNTIME_RANK_CHANGED(rank) + +#define RUNTIME_END_ACCESS_DECLARATION + #endif /* _MORSE_STARPU_H_ */