Mentions légales du service

Skip to content
Snippets Groups Projects
Commit a2680333 authored by Mathieu Faverge's avatar Mathieu Faverge
Browse files

Merge branch 'memaccess-runtime' into 'master'

Allow runtimes to have their own memory access macros

See merge request !31
parents cc5b791c afbd9e49
No related branches found
No related tags found
1 merge request!31Allow runtimes to have their own memory access macros
Pipeline #
...@@ -205,20 +205,31 @@ inline static int morse_desc_islocal( const MORSE_desc_t *A, int m, int n ) ...@@ -205,20 +205,31 @@ inline static int morse_desc_islocal( const MORSE_desc_t *A, int m, int n )
* MORSE_END_ACCESS_DECLARATION * MORSE_END_ACCESS_DECLARATION
*/ */
#define MORSE_BEGIN_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) \ #define MORSE_ACCESS_R(A, Am, An) do { \
if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; 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) \ #define MORSE_ACCESS_W(A, Am, An) do { \
if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; 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) \ #define MORSE_ACCESS_RW(A, Am, An) do { \
if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; 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 \ #define MORSE_END_ACCESS_DECLARATION \
RUNTIME_END_ACCESS_DECLARATION \
if (!__morse_need_submit) return; \ if (!__morse_need_submit) return; \
} }
......
...@@ -24,4 +24,16 @@ typedef struct morse_parsec_desc_s morse_parsec_desc_t; ...@@ -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 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_ */ #endif /* _MORSE_PARSEC_H_ */
...@@ -47,4 +47,16 @@ typedef struct quark_option_s { ...@@ -47,4 +47,16 @@ typedef struct quark_option_s {
*/ */
#define RTBLKADDR( desc, type, m, n ) ( (type*)RUNTIME_desc_getaddr( desc, m, n ) ) #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_ */ #endif /* _MORSE_QUARK_H_ */
...@@ -75,7 +75,7 @@ void MORSE_TASK_zgemm(const MORSE_option_t *options, ...@@ -75,7 +75,7 @@ void MORSE_TASK_zgemm(const MORSE_option_t *options,
MORSE_ACCESS_R(B, Bm, Bn); MORSE_ACCESS_R(B, Bm, Bn);
MORSE_ACCESS_RW(C, Cm, Cn); MORSE_ACCESS_RW(C, Cm, Cn);
if (rank_changed) if (rank_changed)
MORSE_RANK_CHANGED; MORSE_RANK_CHANGED(execution_rank);
MORSE_END_ACCESS_DECLARATION; MORSE_END_ACCESS_DECLARATION;
starpu_insert_task( starpu_insert_task(
......
...@@ -68,7 +68,7 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options, ...@@ -68,7 +68,7 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options,
MORSE_ACCESS_R(A, Am, An); MORSE_ACCESS_R(A, Am, An);
MORSE_ACCESS_RW(B, Bm, Bn); MORSE_ACCESS_RW(B, Bm, Bn);
if (rank_changed) if (rank_changed)
MORSE_RANK_CHANGED; MORSE_RANK_CHANGED(execution_rank);
MORSE_END_ACCESS_DECLARATION; MORSE_END_ACCESS_DECLARATION;
starpu_insert_task( starpu_insert_task(
......
...@@ -176,7 +176,7 @@ void MORSE_TASK_ztsmqr(const MORSE_option_t *options, ...@@ -176,7 +176,7 @@ void MORSE_TASK_ztsmqr(const MORSE_option_t *options,
MORSE_ACCESS_R(V, Vm, Vn); MORSE_ACCESS_R(V, Vm, Vn);
MORSE_ACCESS_R(T, Tm, Tn); MORSE_ACCESS_R(T, Tm, Tn);
if (rank_changed) if (rank_changed)
MORSE_RANK_CHANGED; MORSE_RANK_CHANGED(execution_rank);
MORSE_END_ACCESS_DECLARATION; MORSE_END_ACCESS_DECLARATION;
starpu_insert_task( starpu_insert_task(
......
...@@ -169,7 +169,7 @@ void MORSE_TASK_zttmqr(const MORSE_option_t *options, ...@@ -169,7 +169,7 @@ void MORSE_TASK_zttmqr(const MORSE_option_t *options,
MORSE_ACCESS_R(V, Vm, Vn); MORSE_ACCESS_R(V, Vm, Vn);
MORSE_ACCESS_R(T, Tm, Tn); MORSE_ACCESS_R(T, Tm, Tn);
if (rank_changed) if (rank_changed)
MORSE_RANK_CHANGED; MORSE_RANK_CHANGED(execution_rank);
MORSE_END_ACCESS_DECLARATION; MORSE_END_ACCESS_DECLARATION;
starpu_insert_task( starpu_insert_task(
......
...@@ -153,7 +153,7 @@ void MORSE_TASK_zunmqr(const MORSE_option_t *options, ...@@ -153,7 +153,7 @@ void MORSE_TASK_zunmqr(const MORSE_option_t *options,
MORSE_ACCESS_R(T, Tm, Tn); MORSE_ACCESS_R(T, Tm, Tn);
MORSE_ACCESS_RW(C, Cm, Cn); MORSE_ACCESS_RW(C, Cm, Cn);
if (rank_changed) if (rank_changed)
MORSE_RANK_CHANGED; MORSE_RANK_CHANGED(execution_rank);
MORSE_END_ACCESS_DECLARATION; MORSE_END_ACCESS_DECLARATION;
starpu_insert_task( starpu_insert_task(
......
...@@ -86,4 +86,16 @@ typedef struct starpu_conf starpu_conf_t; ...@@ -86,4 +86,16 @@ typedef struct starpu_conf starpu_conf_t;
void RUNTIME_set_reduction_methods(starpu_data_handle_t handle, MORSE_enum dtyp); 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_ */ #endif /* _MORSE_STARPU_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment