diff --git a/compute/ztile.c b/compute/ztile.c index b4c3b536725994387c5e18676e054035b3cdfd83..74d85e06e54a6652b19d06d7fd68abb0150db727 100644 --- a/compute/ztile.c +++ b/compute/ztile.c @@ -120,7 +120,7 @@ int CHAMELEON_zLap2Desc( cham_uplo_t uplo, CHAMELEON_Complex64_t *Af77, int LDA, { CHAM_context_t *chamctxt; RUNTIME_sequence_t *sequence = NULL; - RUNTIME_request_t request; + RUNTIME_request_t request = RUNTIME_REQUEST_INITIALIZER; CHAM_desc_t *B; int status; @@ -204,7 +204,7 @@ int CHAMELEON_zDesc2Lap( cham_uplo_t uplo, CHAM_desc_t *A, CHAMELEON_Complex64_t { CHAM_context_t *chamctxt; RUNTIME_sequence_t *sequence = NULL; - RUNTIME_request_t request; + RUNTIME_request_t request = RUNTIME_REQUEST_INITIALIZER; CHAM_desc_t *B; int status; diff --git a/control/async.c b/control/async.c index 06157246736c0d4ae1629e0e36195f0d0ff77e2c..fc9c695a9e025c348afe2e9f001f4f6cfd6b886a 100644 --- a/control/async.c +++ b/control/async.c @@ -208,3 +208,139 @@ int CHAMELEON_Sequence_Flush(RUNTIME_sequence_t *sequence, RUNTIME_request_t *re return CHAMELEON_SUCCESS; } + + +/** + * Create a request + */ +int chameleon_request_create(CHAM_context_t *chamctxt, RUNTIME_request_t **request) +{ + if ((*request = malloc(sizeof(RUNTIME_request_t))) == NULL) { + chameleon_error("chameleon_request_create", "malloc() failed"); + return CHAMELEON_ERR_OUT_OF_RESOURCES; + } + + RUNTIME_request_create( chamctxt, *request ); + + (*request)->status = CHAMELEON_SUCCESS; + return CHAMELEON_SUCCESS; +} + +/** + * Destroy a request + */ +int chameleon_request_destroy(CHAM_context_t *chamctxt, RUNTIME_request_t *request) +{ + RUNTIME_request_destroy( chamctxt, request ); + free(request); + return CHAMELEON_SUCCESS; +} + +/** + * Set parameter for a request + */ +int chameleon_request_set(CHAM_context_t *chamctxt, RUNTIME_request_t *request, int param, int value) +{ + int status; + status = RUNTIME_request_set( chamctxt, request, param, value ); + return status; +} + +/** + * + * @ingroup Requests + * + * CHAMELEON_Request_Create - Create a request. + * + ****************************************************************************** + * + * @param[out] request + * Identifies a request for a specific routine. + * + ****************************************************************************** + * + * @retval CHAMELEON_SUCCESS successful exit + * + */ +int CHAMELEON_Request_Create(RUNTIME_request_t **request) +{ + CHAM_context_t *chamctxt; + int status; + + chamctxt = chameleon_context_self(); + if (chamctxt == NULL) { + chameleon_fatal_error("CHAMELEON_Request_Create", "CHAMELEON not initialized"); + return CHAMELEON_ERR_NOT_INITIALIZED; + } + status = chameleon_request_create(chamctxt, request); + return status; +} + +/** + * + * @ingroup Requests + * + * CHAMELEON_Request_Destroy - Destroy a request. + * + ****************************************************************************** + * + * @param[in] request + * Identifies a request for a specific routine. + * + ****************************************************************************** + * + * @retval CHAMELEON_SUCCESS successful exit + * + */ +int CHAMELEON_Request_Destroy(RUNTIME_request_t *request) +{ + CHAM_context_t *chamctxt; + int status; + + chamctxt = chameleon_context_self(); + if (chamctxt == NULL) { + chameleon_fatal_error("CHAMELEON_Request_Destroy", "CHAMELEON not initialized"); + return CHAMELEON_ERR_NOT_INITIALIZED; + } + if (request == NULL) { + chameleon_fatal_error("CHAMELEON_Request_Destroy", "NULL request"); + return CHAMELEON_ERR_UNALLOCATED; + } + status = chameleon_request_destroy(chamctxt, request); + return status; +} + +/** + * + * @ingroup Requests + * + * CHAMELEON_Request_Set - Set CHAMELEON parameter for a request. + * + ******************************************************************************* + * + * @param[in] param + * Feature to be enabled: + * @arg CHAMELEON_REQUEST_WORKERID: force tasks execution on a specific worker id + * + * @param[in] value + * Value of the parameter. + * + ******************************************************************************* + * + * @retval CHAMELEON_SUCCESS successful exit + * + */ +int CHAMELEON_Request_Set( RUNTIME_request_t *request, int param, int value) +{ + CHAM_context_t *chamctxt; + int status; + + chamctxt = chameleon_context_self(); + if (chamctxt == NULL) { + chameleon_error("CHAMELEON_Request_Set", "CHAMELEON not initialized"); + return CHAMELEON_ERR_NOT_INITIALIZED; + } + + status = chameleon_request_set(chamctxt, request, param, value); + return status; +} \ No newline at end of file diff --git a/control/async.h b/control/async.h index be521ae68f37c12ea0859f0f0bb77295f43e3fa6..5da5c1c6c1d2b2063b94987c84f80b8b7cc5e958 100644 --- a/control/async.h +++ b/control/async.h @@ -33,6 +33,9 @@ int chameleon_request_fail (RUNTIME_sequence_t *sequence, RUNTIME_request_t int chameleon_sequence_create (CHAM_context_t *CHAMELEON, RUNTIME_sequence_t **sequence); int chameleon_sequence_destroy (CHAM_context_t *CHAMELEON, RUNTIME_sequence_t *sequence); int chameleon_sequence_wait (CHAM_context_t *CHAMELEON, RUNTIME_sequence_t *sequence); +int chameleon_request_create (CHAM_context_t *CHAMELEON, RUNTIME_request_t **request); +int chameleon_request_destroy (CHAM_context_t *CHAMELEON, RUNTIME_request_t *request); +int chameleon_request_set (CHAM_context_t *chamctxt, RUNTIME_request_t *request, int param, int value); #ifdef __cplusplus } diff --git a/control/chameleon_f90.f90 b/control/chameleon_f90.f90 index db2b926fc274cb9fcace33d9478eed42e3e31042..587be5698df4227144adc8a125a710f3adb41f4e 100644 --- a/control/chameleon_f90.f90 +++ b/control/chameleon_f90.f90 @@ -310,6 +310,35 @@ module chameleon end function CHAMELEON_Sequence_Flush_c end interface + interface + function CHAMELEON_Request_Create_c(req) & + & bind(c, name='CHAMELEON_Request_Create') + use iso_c_binding + integer(kind=c_int) :: CHAMELEON_Request_Create_c + type(c_ptr) :: req + end function CHAMELEON_Request_Create_c + end interface + + interface + function CHAMELEON_Request_Destroy_c(req) & + & bind(c, name='CHAMELEON_Request_Destroy') + use iso_c_binding + integer(kind=c_int) :: CHAMELEON_Request_Destroy_c + type(c_ptr), value :: req + end function CHAMELEON_Request_Destroy_c + end interface + + interface + function CHAMELEON_Request_Set_c(req, param, pval) & + & bind(c, name='CHAMELEON_Request_Set') + use iso_c_binding + integer(kind=c_int) :: CHAMELEON_Request_Set_c + type(c_ptr) :: req + integer(kind=c_int), value :: param + integer(kind=c_int), value :: pval + end function CHAMELEON_Request_Set_c + end interface + interface chameleon_lapack_to_tile module procedure chameleon_lapack_to_tile_s module procedure chameleon_lapack_to_tile_d @@ -591,4 +620,20 @@ module chameleon info = chameleon_sequence_flush_c(sequence,request) end subroutine chameleon_sequence_flush + subroutine chameleon_request_create(request,info) + use iso_c_binding + implicit none + type(c_ptr), intent(out) :: request + integer(kind=c_int), intent(out) :: info + info = chameleon_request_create_c(request) + end subroutine chameleon_request_create + + subroutine chameleon_request_destroy(request,info) + use iso_c_binding + implicit none + type(c_ptr), intent(in) :: request + integer(kind=c_int), intent(out) :: info + info = chameleon_request_destroy_c(request) + end subroutine chameleon_request_destroy + end module chameleon diff --git a/include/chameleon.h b/include/chameleon.h index 953bd31cd4216f61ddac97313636d8c4b10be672..ac4c8a8ca521af9b5d01a9d1a07f61a10a0adf06 100644 --- a/include/chameleon.h +++ b/include/chameleon.h @@ -145,6 +145,12 @@ void CHAMELEON_user_tag_size(int, int); int CHAMELEON_Sequence_Create (RUNTIME_sequence_t **sequence); int CHAMELEON_Sequence_Destroy (RUNTIME_sequence_t *sequence); int CHAMELEON_Sequence_Wait (RUNTIME_sequence_t *sequence); +int CHAMELEON_Sequence_Flush (RUNTIME_sequence_t *sequence, RUNTIME_request_t *request); + +/* Requests */ +int CHAMELEON_Request_Create (RUNTIME_request_t **request); +int CHAMELEON_Request_Destroy (RUNTIME_request_t *request); +int CHAMELEON_Request_Set (RUNTIME_request_t *request, int param, int value); /** * diff --git a/include/chameleon/constants.h b/include/chameleon/constants.h index 47e45a1cbb6a37780216c82aa1284a9f587ee725..a75a907066287231407832def05eeaf1290aefe6 100644 --- a/include/chameleon/constants.h +++ b/include/chameleon/constants.h @@ -216,6 +216,11 @@ typedef enum chameleon_store_e { #define CHAMELEON_TRANSLATION_MODE 7 #define CHAMELEON_LOOKAHEAD 8 +/** + * CHAMELEON constants - configuration parameters for a request + */ +#define CHAMELEON_REQUEST_WORKERID 1 + /** * @brief QR/LQ factorization trees */ diff --git a/include/chameleon/runtime.h b/include/chameleon/runtime.h index ce2e5b5af51243a06ad4946c1b0d818f7c1847b9..aac25cb7d5f80242867da5a83f3e748aa5e7c4a8 100644 --- a/include/chameleon/runtime.h +++ b/include/chameleon/runtime.h @@ -310,6 +310,78 @@ RUNTIME_sequence_flush( CHAM_context_t *ctxt, RUNTIME_request_t *request, int status ); +/** + * @} + * + * @name RUNTIME Asynchonous functionalities + * @{ + * These functions manage the request of tasks. A request is a subset of + * related tasks belonging to a same procedure. + */ + +/** + * @brief Create a request structure associated to a given context. + * + * @param[in] ctxt + * The runtime context in which the request is created. + * + * @param[in,out] request + * On entry the allocated runtime request structure, and on exit + * the scheduler specifics for the request have been initialized. + * + * @retval CHAMELEON_SUCCESS on success. + * @retval CHAMELEON_ERR_OUT_OF_RESOURCES, if the request could not be created. + */ +int +RUNTIME_request_create( CHAM_context_t *ctxt, + RUNTIME_request_t *request ); + +/** + * @brief Destroy the request structure. + * + * @param[in] ctxt + * The runtime context to which the request belongs. + * + * @param[in,out] request + * On entry the request structure. + * On exit, the scheduler specifics of the request have been + * destroyed. + * + * @retval CHAMELEON_SUCCESS on success. + */ +int +RUNTIME_request_destroy( CHAM_context_t *ctxt, + RUNTIME_request_t *request); + +/** + * @brief RUNTIME_request_set - Set RUNTIME parameter for a request. + * + ******************************************************************************* + * + * @param[in] ctxt + * The runtime context to which the request belongs. + * + * @param[in,out] request + * On entry the request structure. + * On exit, the request structure modified. + * + * @param[in] param + * Feature to be enabled: + * @arg CHAMELEON_REQUEST_WORKERID: force tasks execution on a specific worker id + * + * @param[in] value + * Value of the parameter. + * + ******************************************************************************* + * + * @retval CHAMELEON_SUCCESS successful exit + * + */ +int +RUNTIME_request_set( CHAM_context_t *chamctxt, + RUNTIME_request_t *request, + int param, int value ); + /** * @} * diff --git a/include/chameleon/runtime_struct.h b/include/chameleon/runtime_struct.h index 44bc95e60c87de30f330209a42cc6af1f4d7e637..96a8c5cb7b7d599474ec3599b4ce78d2a024a47b 100644 --- a/include/chameleon/runtime_struct.h +++ b/include/chameleon/runtime_struct.h @@ -41,13 +41,14 @@ typedef enum runtime_id_e { * */ typedef struct runtime_request_s { - int status; /**< Return status registered by the tasks for the request */ + int status; /**< Return status registered by the tasks for the request */ + void *schedopt; /**< Specific runtime data pointer to handle the request */ } RUNTIME_request_t; /** * @brief Runtime request initializer */ -#define RUNTIME_REQUEST_INITIALIZER { 0 } +#define RUNTIME_REQUEST_INITIALIZER { .status = 0, .schedopt = NULL } /** * @brief RUNTIME sequence structure diff --git a/runtime/openmp/control/runtime_async.c b/runtime/openmp/control/runtime_async.c index 7032ec2a966478a351121cc42219bb5b29df163b..42a1d52b1f6cb6506a28f91402ad7b66c9ed3029 100644 --- a/runtime/openmp/control/runtime_async.c +++ b/runtime/openmp/control/runtime_async.c @@ -69,3 +69,40 @@ void RUNTIME_sequence_flush( CHAM_context_t *chamctxt, request->status = status; return; } + +/** + * Create a request + */ +int RUNTIME_request_create( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + request->schedopt = NULL; + request->status = CHAMELEON_SUCCESS; + return CHAMELEON_SUCCESS; +} + +/** + * Destroy a request + */ +int RUNTIME_request_destroy( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + (void)request; + return CHAMELEON_SUCCESS; +} + +/** + * Set runtime parameter for a request + */ +int RUNTIME_request_set( CHAM_context_t *chamctxt, + RUNTIME_request_t *request, + int param, int value ) +{ + (void)chamctxt; + (void)request; + (void)param; + (void)value; + return CHAMELEON_SUCCESS; +} \ No newline at end of file diff --git a/runtime/openmp/control/runtime_control.c b/runtime/openmp/control/runtime_control.c index d07758f47d7eb1d8a34d8b4305f424ebd19f1260..ec955ca19a89ce24867f337739a6260aa89b6881 100644 --- a/runtime/openmp/control/runtime_control.c +++ b/runtime/openmp/control/runtime_control.c @@ -38,6 +38,9 @@ int RUNTIME_init( CHAM_context_t *chamctxt, chameleon_warning( "RUNTIME_init_scheduler(OpenMP)", "Multi-threaded kernels are not supported for now"); } + chamctxt->nworkers = ncpus; + chamctxt->nthreads_per_worker = nthreads_per_worker; + return hres; } diff --git a/runtime/parsec/control/runtime_async.c b/runtime/parsec/control/runtime_async.c index 657b2078a72b5015285b07426f142060ea9c8746..af5def990bfb0d7ef031fc52e503d675dcd864b5 100644 --- a/runtime/parsec/control/runtime_async.c +++ b/runtime/parsec/control/runtime_async.c @@ -83,3 +83,40 @@ void RUNTIME_sequence_flush( CHAM_context_t *chamctxt, (void)chamctxt; return; } + +/** + * Create a request + */ +int RUNTIME_request_create( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + request->schedopt = NULL; + request->status = CHAMELEON_SUCCESS; + return CHAMELEON_SUCCESS; +} + +/** + * Destroy a request + */ +int RUNTIME_request_destroy( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + (void)request; + return CHAMELEON_SUCCESS; +} + +/** + * Set runtime parameter for a request + */ +int RUNTIME_request_set( CHAM_context_t *chamctxt, + RUNTIME_request_t *request, + int param, int value ) +{ + (void)chamctxt; + (void)request; + (void)param; + (void)value; + return CHAMELEON_SUCCESS; +} \ No newline at end of file diff --git a/runtime/quark/control/runtime_async.c b/runtime/quark/control/runtime_async.c index f6f466f0223668d5ae8cd9a30a59aea894e643e5..b008c5610508b25f67e8892971480f33714263b0 100644 --- a/runtime/quark/control/runtime_async.c +++ b/runtime/quark/control/runtime_async.c @@ -73,3 +73,40 @@ void RUNTIME_sequence_flush( CHAM_context_t *chamctxt, QUARK_Sequence_Cancel( (Quark*)(chamctxt), (Quark_Sequence *)(sequence->schedopt) ); } + +/** + * Create a request + */ +int RUNTIME_request_create( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + request->schedopt = NULL; + request->status = CHAMELEON_SUCCESS; + return CHAMELEON_SUCCESS; +} + +/** + * Destroy a request + */ +int RUNTIME_request_destroy( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + (void)request; + return CHAMELEON_SUCCESS; +} + +/** + * Set runtime parameter for a request + */ +int RUNTIME_request_set( CHAM_context_t *chamctxt, + RUNTIME_request_t *request, + int param, int value ) +{ + (void)chamctxt; + (void)request; + (void)param; + (void)value; + return CHAMELEON_SUCCESS; +} \ No newline at end of file diff --git a/runtime/quark/control/runtime_control.c b/runtime/quark/control/runtime_control.c index cfc447329696b02e127715609138f1e655663d48..c8ab8458544734075bbc566770e2dc4a299f46f1 100644 --- a/runtime/quark/control/runtime_control.c +++ b/runtime/quark/control/runtime_control.c @@ -29,7 +29,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt, int ncudas, int nthreads_per_worker ) { - int hres = 0; + int hres = -1; if ( ncudas > 0 ) { chameleon_warning( "RUNTIME_init_scheduler(quark)", "GPUs are not supported for now"); } @@ -40,6 +40,12 @@ int RUNTIME_init( CHAM_context_t *chamctxt, chamctxt->schedopt = (void*)QUARK_New( ncpus ); + if(NULL != chamctxt->schedopt) { + chamctxt->nworkers = ncpus; + chamctxt->nthreads_per_worker = nthreads_per_worker; + hres = 0; + } + return hres; } diff --git a/runtime/starpu/codelets/codelet_dzasum.c b/runtime/starpu/codelets/codelet_dzasum.c index 67df3e6ef5590c108b680344b63b5a62a956ec77..b88605ba14695571cee582d43bf67688bf8bc281 100644 --- a/runtime/starpu/codelets/codelet_dzasum.c +++ b/runtime/starpu/codelets/codelet_dzasum.c @@ -53,6 +53,8 @@ void INSERT_TASK_dzasum( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_dzasum; void (*callback)(void*) = options->profiling ? cl_dzasum_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -69,6 +71,7 @@ void INSERT_TASK_dzasum( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "dzasum", #endif diff --git a/runtime/starpu/codelets/codelet_map.c b/runtime/starpu/codelets/codelet_map.c index 347a76ed407fa55b54ee2d77deeb5e403d11be5f..65dd72e33fe2328e32e252d88d2d3a0468a6b735 100644 --- a/runtime/starpu/codelets/codelet_map.c +++ b/runtime/starpu/codelets/codelet_map.c @@ -48,6 +48,8 @@ void INSERT_TASK_map( const RUNTIME_option_t *options, struct starpu_codelet *codelet = &cl_map; void (*callback)(void*) = options->profiling ? cl_map_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -64,6 +66,7 @@ void INSERT_TASK_map( const RUNTIME_option_t *options, STARPU_VALUE, &op_args, sizeof(void*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "map", #endif diff --git a/runtime/starpu/codelets/codelet_zaxpy.c b/runtime/starpu/codelets/codelet_zaxpy.c index f19b201becb18d68cc457d5e909e33179403fcae..88cf08e022e8781a1dcaeb534d6347a55b973541 100644 --- a/runtime/starpu/codelets/codelet_zaxpy.c +++ b/runtime/starpu/codelets/codelet_zaxpy.c @@ -49,6 +49,8 @@ void INSERT_TASK_zaxpy( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zaxpy; void (*callback)(void*) = options->profiling ? cl_zaxpy_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -65,6 +67,7 @@ void INSERT_TASK_zaxpy( const RUNTIME_option_t *options, STARPU_VALUE, &incB, sizeof(int), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zaxpy", #endif diff --git a/runtime/starpu/codelets/codelet_zbuild.c b/runtime/starpu/codelets/codelet_zbuild.c index a99d48944debd44cc894b01b7f6203b4097af8ad..ad52e6452e2064d80fc9858aa6c7db600af65b4d 100644 --- a/runtime/starpu/codelets/codelet_zbuild.c +++ b/runtime/starpu/codelets/codelet_zbuild.c @@ -61,6 +61,8 @@ CODELETS_CPU(zbuild, 1, cl_zbuild_cpu_func) struct starpu_codelet *codelet = &cl_zbuild; void (*callback)(void*) = options->profiling ? cl_zbuild_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; int row_min, row_max, col_min, col_max; CHAMELEON_BEGIN_ACCESS_DECLARATION; @@ -82,6 +84,7 @@ CODELETS_CPU(zbuild, 1, cl_zbuild_cpu_func) STARPU_VALUE, &user_build_callback, sizeof(void*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zbuild", #endif diff --git a/runtime/starpu/codelets/codelet_zgeadd.c b/runtime/starpu/codelets/codelet_zgeadd.c index 495a7273f26ab42e68d786df318e304a04b1f50b..27ce15a01640fd9c19121788b35781a45bf25125 100644 --- a/runtime/starpu/codelets/codelet_zgeadd.c +++ b/runtime/starpu/codelets/codelet_zgeadd.c @@ -146,6 +146,8 @@ void INSERT_TASK_zgeadd( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zgeadd; void (*callback)(void*) = options->profiling ? cl_zgeadd_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -163,6 +165,7 @@ void INSERT_TASK_zgeadd( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgeadd", #endif diff --git a/runtime/starpu/codelets/codelet_zgelqt.c b/runtime/starpu/codelets/codelet_zgelqt.c index d918f81101e65add5b898faf28ddbade6a244c30..63d7b9ca3cecc93332114b9fac3754fc1da599a3 100644 --- a/runtime/starpu/codelets/codelet_zgelqt.c +++ b/runtime/starpu/codelets/codelet_zgelqt.c @@ -66,6 +66,8 @@ void INSERT_TASK_zgelqt(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgelqt; void (*callback)(void*) = options->profiling ? cl_zgelqt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_starpu_ws_t *h_work = (CHAMELEON_starpu_ws_t*)(options->ws_host); CHAMELEON_BEGIN_ACCESS_DECLARATION; @@ -86,6 +88,7 @@ void INSERT_TASK_zgelqt(const RUNTIME_option_t *options, STARPU_VALUE, &h_work, sizeof(CHAMELEON_starpu_ws_t *), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgelqt", #endif diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c index 24b46d51476ee521fab40961c6d56b25a8d2e83b..034136bed27c4c6ffb264463a44800d3641af842 100644 --- a/runtime/starpu/codelets/codelet_zgemm.c +++ b/runtime/starpu/codelets/codelet_zgemm.c @@ -111,6 +111,8 @@ void INSERT_TASK_zgemm(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgemm; void (*callback)(void*) = options->profiling ? cl_zgemm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -132,6 +134,7 @@ void INSERT_TASK_zgemm(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgemm", #endif diff --git a/runtime/starpu/codelets/codelet_zgeqrt.c b/runtime/starpu/codelets/codelet_zgeqrt.c index 962f28c33520a2a741746d6de3e5c5dcc5230dfd..9f1f407d519485f26bb05fbd87b0a4c22f7fb6fb 100644 --- a/runtime/starpu/codelets/codelet_zgeqrt.c +++ b/runtime/starpu/codelets/codelet_zgeqrt.c @@ -67,6 +67,8 @@ void INSERT_TASK_zgeqrt(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgeqrt; void (*callback)(void*) = options->profiling ? cl_zgeqrt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_starpu_ws_t *h_work = (CHAMELEON_starpu_ws_t*)(options->ws_host); CHAMELEON_BEGIN_ACCESS_DECLARATION; @@ -87,6 +89,7 @@ void INSERT_TASK_zgeqrt(const RUNTIME_option_t *options, STARPU_VALUE, &h_work, sizeof(CHAMELEON_starpu_ws_t *), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgeqrt", #endif diff --git a/runtime/starpu/codelets/codelet_zgessm.c b/runtime/starpu/codelets/codelet_zgessm.c index b93e04dd0f67ca013323175f61b56eec951cba41..310e7e2b9f01c0c09147212457c338a0be0035fd 100644 --- a/runtime/starpu/codelets/codelet_zgessm.c +++ b/runtime/starpu/codelets/codelet_zgessm.c @@ -62,6 +62,8 @@ void INSERT_TASK_zgessm( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgessm; void (*callback)(void*) = options->profiling ? cl_zgessm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(L, Lm, Ln); @@ -81,6 +83,7 @@ void INSERT_TASK_zgessm( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgessm", #endif diff --git a/runtime/starpu/codelets/codelet_zgessq.c b/runtime/starpu/codelets/codelet_zgessq.c index 16ce389518206ca5bfe97ee27db0396435e953e1..f22e28a2416461272b6dc71ed88be065683efed1 100644 --- a/runtime/starpu/codelets/codelet_zgessq.c +++ b/runtime/starpu/codelets/codelet_zgessq.c @@ -52,6 +52,8 @@ void INSERT_TASK_zgessq( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zgessq; void (*callback)(void*) = options->profiling ? cl_zgessq_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -67,6 +69,7 @@ void INSERT_TASK_zgessq( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgessq", #endif diff --git a/runtime/starpu/codelets/codelet_zgetrf.c b/runtime/starpu/codelets/codelet_zgetrf.c index 90482b6f67b076f775e9dc53762b7c5eed3eec94..23e40e8738d6bdb02742e16fa37474948f1843b4 100644 --- a/runtime/starpu/codelets/codelet_zgetrf.c +++ b/runtime/starpu/codelets/codelet_zgetrf.c @@ -63,6 +63,8 @@ void INSERT_TASK_zgetrf( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgetrf; void (*callback)(void*) = options->profiling ? cl_zgetrf_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -80,6 +82,7 @@ void INSERT_TASK_zgetrf( const RUNTIME_option_t *options, STARPU_VALUE, &(options->request), sizeof(RUNTIME_request_t*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgetrf", #endif diff --git a/runtime/starpu/codelets/codelet_zgetrf_incpiv.c b/runtime/starpu/codelets/codelet_zgetrf_incpiv.c index 720d94a3781197338951bd6eaab428adf11b4abb..4b2b788ba8ce1edb2aab076ea180bc38de3a1730 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_incpiv.c +++ b/runtime/starpu/codelets/codelet_zgetrf_incpiv.c @@ -68,6 +68,8 @@ void INSERT_TASK_zgetrf_incpiv(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgetrf_incpiv; void (*callback)(void*) = options->profiling ? cl_zgetrf_incpiv_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_starpu_ws_t *h_work = (CHAMELEON_starpu_ws_t*)(options->ws_host); @@ -92,6 +94,7 @@ void INSERT_TASK_zgetrf_incpiv(const RUNTIME_option_t *options, STARPU_VALUE, &(options->request), sizeof(RUNTIME_request_t*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgetrf_incpiv", #endif diff --git a/runtime/starpu/codelets/codelet_zgetrf_nopiv.c b/runtime/starpu/codelets/codelet_zgetrf_nopiv.c index c32ebc253f1fec34fb08f655acb40201b090c9d9..776415a755c28c0bf360439df68be75885edbea8 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_nopiv.c +++ b/runtime/starpu/codelets/codelet_zgetrf_nopiv.c @@ -63,6 +63,8 @@ void INSERT_TASK_zgetrf_nopiv(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zgetrf_nopiv; void (*callback)(void*) = options->profiling ? cl_zgetrf_nopiv_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -79,6 +81,7 @@ void INSERT_TASK_zgetrf_nopiv(const RUNTIME_option_t *options, STARPU_VALUE, &(options->request), sizeof(RUNTIME_request_t*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgetrf_nopiv", #endif diff --git a/runtime/starpu/codelets/codelet_zgram.c b/runtime/starpu/codelets/codelet_zgram.c index a1c83f4760014e766f01fec47894d3ab0658455d..83643fc4f9839c8dc091e4ad6fd4c53426f3e1b0 100644 --- a/runtime/starpu/codelets/codelet_zgram.c +++ b/runtime/starpu/codelets/codelet_zgram.c @@ -55,6 +55,8 @@ void INSERT_TASK_zgram( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zgram; void (*callback)(void*) = options->profiling ? cl_zgram_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(Di, Dim, Din); @@ -76,6 +78,7 @@ void INSERT_TASK_zgram( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(A, double, Am, An), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zgram", #endif diff --git a/runtime/starpu/codelets/codelet_zhe2ge.c b/runtime/starpu/codelets/codelet_zhe2ge.c index 6f01c76135c99980288ed4b813e43419a43fe258..c7a24022b444d7f50fb8b91b74001ee6440899f0 100644 --- a/runtime/starpu/codelets/codelet_zhe2ge.c +++ b/runtime/starpu/codelets/codelet_zhe2ge.c @@ -58,6 +58,8 @@ void INSERT_TASK_zhe2ge(const RUNTIME_option_t *options, (void)mb; struct starpu_codelet *codelet = &cl_zhe2ge; void (*callback)(void*) = options->profiling ? cl_zhe2ge_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -73,6 +75,7 @@ void INSERT_TASK_zhe2ge(const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zhe2ge", #endif diff --git a/runtime/starpu/codelets/codelet_zhemm.c b/runtime/starpu/codelets/codelet_zhemm.c index 31a2b87bf463aff8a59e7af109454b499163f919..b6a827896636970bfe338cbeacaae776b3dbc401 100644 --- a/runtime/starpu/codelets/codelet_zhemm.c +++ b/runtime/starpu/codelets/codelet_zhemm.c @@ -110,6 +110,8 @@ void INSERT_TASK_zhemm(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zhemm; void (*callback)(void*) = options->profiling ? cl_zhemm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -130,6 +132,7 @@ void INSERT_TASK_zhemm(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zhemm", #endif diff --git a/runtime/starpu/codelets/codelet_zher2k.c b/runtime/starpu/codelets/codelet_zher2k.c index de32d9521b32249757f277a1ad9964fcc806cb61..291fef2794b146994577fc2ec83ff2704397a826 100644 --- a/runtime/starpu/codelets/codelet_zher2k.c +++ b/runtime/starpu/codelets/codelet_zher2k.c @@ -107,6 +107,8 @@ INSERT_TASK_zher2k( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zher2k; void (*callback)(void*) = options->profiling ? cl_zher2k_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -127,6 +129,7 @@ INSERT_TASK_zher2k( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zher2k", #endif diff --git a/runtime/starpu/codelets/codelet_zherfb.c b/runtime/starpu/codelets/codelet_zherfb.c index e47bfa3ccf0c6afe92c3757bb7aa8603ce2345c4..e967fdfd1051a69c6796c03515c3c6f1a4102c39 100644 --- a/runtime/starpu/codelets/codelet_zherfb.c +++ b/runtime/starpu/codelets/codelet_zherfb.c @@ -94,6 +94,8 @@ void INSERT_TASK_zherfb(const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zherfb; void (*callback)(void*) = options->profiling ? cl_zherfb_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -115,6 +117,7 @@ void INSERT_TASK_zherfb(const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zherfb", #endif diff --git a/runtime/starpu/codelets/codelet_zherk.c b/runtime/starpu/codelets/codelet_zherk.c index d90885b263771bba7be8552179573539a192bf6d..6a8b17cd68d47fad48596896f05c00daf37bd049 100644 --- a/runtime/starpu/codelets/codelet_zherk.c +++ b/runtime/starpu/codelets/codelet_zherk.c @@ -102,6 +102,8 @@ void INSERT_TASK_zherk(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zherk; void (*callback)(void*) = options->profiling ? cl_zherk_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -120,6 +122,7 @@ void INSERT_TASK_zherk(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zherk", #endif diff --git a/runtime/starpu/codelets/codelet_zlacpy.c b/runtime/starpu/codelets/codelet_zlacpy.c index 144a38c569a133218d4456e21b98b26820cd133a..5703507ed9baba655125f1168df80485cbd7202d 100644 --- a/runtime/starpu/codelets/codelet_zlacpy.c +++ b/runtime/starpu/codelets/codelet_zlacpy.c @@ -67,6 +67,8 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zlacpy; void (*callback)(void*) = options->profiling ? cl_zlacpy_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R( A, Am, An ); @@ -84,6 +86,7 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlacpy", #endif diff --git a/runtime/starpu/codelets/codelet_zlag2c.c b/runtime/starpu/codelets/codelet_zlag2c.c index 622aa424da093d06397f62cf2b8323330cff8189..c3f44bc2a78d4b3916ece9f7f2e99a54f69ef4bb 100644 --- a/runtime/starpu/codelets/codelet_zlag2c.c +++ b/runtime/starpu/codelets/codelet_zlag2c.c @@ -60,6 +60,8 @@ void INSERT_TASK_zlag2c(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zlag2c; void (*callback)(void*) = options->profiling ? cl_zlag2c_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -74,6 +76,7 @@ void INSERT_TASK_zlag2c(const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, CHAMELEON_Complex32_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlag2c", #endif @@ -110,6 +113,8 @@ void INSERT_TASK_clag2z(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_clag2z; void (*callback)(void*) = options->profiling ? cl_clag2z_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R( A, Am, An ); @@ -124,6 +129,7 @@ void INSERT_TASK_clag2z(const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "clag2z", #endif diff --git a/runtime/starpu/codelets/codelet_zlange.c b/runtime/starpu/codelets/codelet_zlange.c index aa11096179edc17e526f1ccafd324e4cd186b763..23ca2f7cc02283e521edf3c6995b9e5ee00cab55 100644 --- a/runtime/starpu/codelets/codelet_zlange.c +++ b/runtime/starpu/codelets/codelet_zlange.c @@ -57,6 +57,8 @@ void INSERT_TASK_zlange( const RUNTIME_option_t *options, (void)NB; struct starpu_codelet *codelet = &cl_zlange; void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -73,6 +75,7 @@ void INSERT_TASK_zlange( const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlange", #endif @@ -110,6 +113,8 @@ void INSERT_TASK_zlange_max(const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zlange_max; void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R( A, Am, An ); @@ -122,6 +127,7 @@ void INSERT_TASK_zlange_max(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlange_max", #endif diff --git a/runtime/starpu/codelets/codelet_zlanhe.c b/runtime/starpu/codelets/codelet_zlanhe.c index c5bcc1496bfe723153fece7b66763e42718d8caf..f31fea4c4c82b3dff4cfc5c47f8d6713f2bd2da4 100644 --- a/runtime/starpu/codelets/codelet_zlanhe.c +++ b/runtime/starpu/codelets/codelet_zlanhe.c @@ -56,6 +56,8 @@ void INSERT_TASK_zlanhe(const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zlanhe; void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -72,6 +74,7 @@ void INSERT_TASK_zlanhe(const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlanhe", #endif diff --git a/runtime/starpu/codelets/codelet_zlansy.c b/runtime/starpu/codelets/codelet_zlansy.c index e378fdc5f62ac557bd337195a451b00fcfa4c2e3..0fb7e31ef66ea97877ad65d6d5ffa9fc93deb421 100644 --- a/runtime/starpu/codelets/codelet_zlansy.c +++ b/runtime/starpu/codelets/codelet_zlansy.c @@ -57,6 +57,8 @@ void INSERT_TASK_zlansy( const RUNTIME_option_t *options, (void)NB; struct starpu_codelet *codelet = &cl_zlansy; void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -73,6 +75,7 @@ void INSERT_TASK_zlansy( const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlansy", #endif diff --git a/runtime/starpu/codelets/codelet_zlantr.c b/runtime/starpu/codelets/codelet_zlantr.c index 8598eb4b637977d209b4aa5436fdbd36ef518eda..f13dd13bbe951e4474e41287fadc642af4b889c3 100644 --- a/runtime/starpu/codelets/codelet_zlantr.c +++ b/runtime/starpu/codelets/codelet_zlantr.c @@ -53,6 +53,8 @@ void INSERT_TASK_zlantr( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zlantr; void (*callback)(void*) = options->profiling ? cl_zlange_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -71,6 +73,7 @@ void INSERT_TASK_zlantr( const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlantr", #endif diff --git a/runtime/starpu/codelets/codelet_zlascal.c b/runtime/starpu/codelets/codelet_zlascal.c index dbf072de129885d7cc5fe4543d2bcfd1651321e1..0916e8aa5e73887ad67cda9db946c1a81ecbbc24 100644 --- a/runtime/starpu/codelets/codelet_zlascal.c +++ b/runtime/starpu/codelets/codelet_zlascal.c @@ -54,6 +54,8 @@ void INSERT_TASK_zlascal(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zlascal; void (*callback)(void*) = options->profiling ? cl_zlascal_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -68,6 +70,7 @@ void INSERT_TASK_zlascal(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlascal", #endif diff --git a/runtime/starpu/codelets/codelet_zlaset.c b/runtime/starpu/codelets/codelet_zlaset.c index 71daf564b3231ddf242e5d3a00c26e2c34a011f8..df278acd98ab3af5b8d13c9bd16c8573c0cdad68 100644 --- a/runtime/starpu/codelets/codelet_zlaset.c +++ b/runtime/starpu/codelets/codelet_zlaset.c @@ -56,6 +56,8 @@ void INSERT_TASK_zlaset(const RUNTIME_option_t *options, struct starpu_codelet *codelet = &cl_zlaset; void (*callback)(void*) = options->profiling ? cl_zlaset_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_W(A, Am, An); @@ -71,6 +73,7 @@ void INSERT_TASK_zlaset(const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlaset", #endif diff --git a/runtime/starpu/codelets/codelet_zlaset2.c b/runtime/starpu/codelets/codelet_zlaset2.c index e6fb285583f859813541101dc771f573314fd0e2..61256da734846416a495753fc65fbffc92fab8d3 100644 --- a/runtime/starpu/codelets/codelet_zlaset2.c +++ b/runtime/starpu/codelets/codelet_zlaset2.c @@ -53,6 +53,8 @@ void INSERT_TASK_zlaset2(const RUNTIME_option_t *options, struct starpu_codelet *codelet = &cl_zlaset2; void (*callback)(void*) = options->profiling ? cl_zlaset2_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_W(A, Am, An); @@ -67,6 +69,7 @@ void INSERT_TASK_zlaset2(const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlaset2", #endif diff --git a/runtime/starpu/codelets/codelet_zlatro.c b/runtime/starpu/codelets/codelet_zlatro.c index 86696064f30ebf0acfc3f41608529fe06be38238..20ed9394cc2b0beca557a9535e359ff2836f6437 100644 --- a/runtime/starpu/codelets/codelet_zlatro.c +++ b/runtime/starpu/codelets/codelet_zlatro.c @@ -63,6 +63,8 @@ void INSERT_TASK_zlatro( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zlatro; void (*callback)(void*) = NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -79,6 +81,7 @@ void INSERT_TASK_zlatro( const RUNTIME_option_t *options, STARPU_W, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlatro", #endif diff --git a/runtime/starpu/codelets/codelet_zlauum.c b/runtime/starpu/codelets/codelet_zlauum.c index 4c7911c29365ab83e3b327ffbdd13c0a250ae269..59d67ebf5d984c0baf12f4a1b977441ff6858cd8 100644 --- a/runtime/starpu/codelets/codelet_zlauum.c +++ b/runtime/starpu/codelets/codelet_zlauum.c @@ -58,6 +58,8 @@ void INSERT_TASK_zlauum( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zlauum; void (*callback)(void*) = options->profiling ? cl_zlauum_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -70,6 +72,7 @@ void INSERT_TASK_zlauum( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(A, CHAMELEON_Complex64_t, Am, An), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zlauum", #endif diff --git a/runtime/starpu/codelets/codelet_zplghe.c b/runtime/starpu/codelets/codelet_zplghe.c index 5b75d66158d98a4f8d91a554e8b2129dabab75b8..361ebc17e91e164a7e6666522451883da86dafc2 100644 --- a/runtime/starpu/codelets/codelet_zplghe.c +++ b/runtime/starpu/codelets/codelet_zplghe.c @@ -59,6 +59,8 @@ void INSERT_TASK_zplghe( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zplghe; void (*callback)(void*) = options->profiling ? cl_zplghe_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_W(A, Am, An); @@ -76,6 +78,7 @@ void INSERT_TASK_zplghe( const RUNTIME_option_t *options, STARPU_VALUE, &seed, sizeof(unsigned long long int), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zplghe", #endif diff --git a/runtime/starpu/codelets/codelet_zplgsy.c b/runtime/starpu/codelets/codelet_zplgsy.c index 5b79c6839b7b65a192c4ebb872222ebea9b17802..efc64b037946ed5bd5848342c8e373cd4aa66b5c 100644 --- a/runtime/starpu/codelets/codelet_zplgsy.c +++ b/runtime/starpu/codelets/codelet_zplgsy.c @@ -60,6 +60,8 @@ void INSERT_TASK_zplgsy( const RUNTIME_option_t *options, struct starpu_codelet *codelet = &cl_zplgsy; void (*callback)(void*) = options->profiling ? cl_zplgsy_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_W(A, Am, An); @@ -77,6 +79,7 @@ void INSERT_TASK_zplgsy( const RUNTIME_option_t *options, STARPU_VALUE, &seed, sizeof(unsigned long long int), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zplgsy", #endif diff --git a/runtime/starpu/codelets/codelet_zplrnt.c b/runtime/starpu/codelets/codelet_zplrnt.c index 3f429707864031f46890a72034ed5d9cec0bbf28..0d86aeff00b89bbdda7a5d137eeff1b65b7b3926 100644 --- a/runtime/starpu/codelets/codelet_zplrnt.c +++ b/runtime/starpu/codelets/codelet_zplrnt.c @@ -57,6 +57,8 @@ void INSERT_TASK_zplrnt( const RUNTIME_option_t *options, struct starpu_codelet *codelet = &cl_zplrnt; void (*callback)(void*) = options->profiling ? cl_zplrnt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_W(A, Am, An); @@ -73,6 +75,7 @@ void INSERT_TASK_zplrnt( const RUNTIME_option_t *options, STARPU_VALUE, &seed, sizeof(unsigned long long int), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zplrnt", #endif diff --git a/runtime/starpu/codelets/codelet_zplssq.c b/runtime/starpu/codelets/codelet_zplssq.c index 65deb638fb29a130eb78a19300123a3b25432fa2..b29f1d74e8230e45876d2b960508a955a1ff59c7 100644 --- a/runtime/starpu/codelets/codelet_zplssq.c +++ b/runtime/starpu/codelets/codelet_zplssq.c @@ -57,6 +57,8 @@ void INSERT_TASK_zplssq( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zplssq; void (*callback)(void*) = options->profiling ? cl_zplssq_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R( IN, INm, INn ); @@ -72,6 +74,7 @@ void INSERT_TASK_zplssq( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR( OUT, double, OUTm, OUTn ), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zplssq", #endif @@ -105,6 +108,8 @@ void INSERT_TASK_zplssq2( const RUNTIME_option_t *options, int N, { struct starpu_codelet *codelet = &cl_zplssq2; void (*callback)(void*) = options->profiling ? cl_zplssq2_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW( RESULT, RESULTm, RESULTn ); diff --git a/runtime/starpu/codelets/codelet_zpotrf.c b/runtime/starpu/codelets/codelet_zpotrf.c index b8b189375ef13ad3e96aeb34f26ea1cb38c3479f..de6c1886b7e349411d89a34be3089b9e1264a902 100644 --- a/runtime/starpu/codelets/codelet_zpotrf.c +++ b/runtime/starpu/codelets/codelet_zpotrf.c @@ -67,6 +67,8 @@ void INSERT_TASK_zpotrf(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zpotrf; void (*callback)(void*) = options->profiling ? cl_zpotrf_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -83,6 +85,7 @@ void INSERT_TASK_zpotrf(const RUNTIME_option_t *options, /* STARPU_SCRATCH, options->ws_worker, */ STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zpotrf", #endif diff --git a/runtime/starpu/codelets/codelet_zssssm.c b/runtime/starpu/codelets/codelet_zssssm.c index 7a3caf86bb9fec7454586c6aad9e86358615b6a7..29ef312bd6207d7d3c2476e5a764bcacf6a3f975 100644 --- a/runtime/starpu/codelets/codelet_zssssm.c +++ b/runtime/starpu/codelets/codelet_zssssm.c @@ -67,6 +67,8 @@ void INSERT_TASK_zssssm( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zssssm; void (*callback)(void*) = options->profiling ? cl_zssssm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A1, A1m, A1n); @@ -90,6 +92,7 @@ void INSERT_TASK_zssssm( const RUNTIME_option_t *options, STARPU_VALUE, &IPIV, sizeof(int*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zssssm", #endif diff --git a/runtime/starpu/codelets/codelet_zsymm.c b/runtime/starpu/codelets/codelet_zsymm.c index de2aeb22e73cbf60d64ea699af86b3996d069656..689be9b62368127011176dca3a6507a429f37913 100644 --- a/runtime/starpu/codelets/codelet_zsymm.c +++ b/runtime/starpu/codelets/codelet_zsymm.c @@ -110,6 +110,8 @@ void INSERT_TASK_zsymm(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zsymm; void (*callback)(void*) = options->profiling ? cl_zsymm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -130,6 +132,7 @@ void INSERT_TASK_zsymm(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zsymm", #endif diff --git a/runtime/starpu/codelets/codelet_zsyr2k.c b/runtime/starpu/codelets/codelet_zsyr2k.c index 1da32daad22746d712c30525828e0d5133c9c8bb..86037a3778b6511a54d7b2e2f023856cd9ee5f7a 100644 --- a/runtime/starpu/codelets/codelet_zsyr2k.c +++ b/runtime/starpu/codelets/codelet_zsyr2k.c @@ -106,6 +106,8 @@ void INSERT_TASK_zsyr2k(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zsyr2k; void (*callback)(void*) = options->profiling ? cl_zsyr2k_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -126,6 +128,7 @@ void INSERT_TASK_zsyr2k(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zsyr2k", #endif diff --git a/runtime/starpu/codelets/codelet_zsyrk.c b/runtime/starpu/codelets/codelet_zsyrk.c index d340e7a7d17a5e703203ba4933839fb411af72ec..66782975f6bdf5a409f431117e2096028a3cf870 100644 --- a/runtime/starpu/codelets/codelet_zsyrk.c +++ b/runtime/starpu/codelets/codelet_zsyrk.c @@ -102,6 +102,8 @@ void INSERT_TASK_zsyrk(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zsyrk; void (*callback)(void*) = options->profiling ? cl_zsyrk_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -120,6 +122,7 @@ void INSERT_TASK_zsyrk(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(C, CHAMELEON_Complex64_t, Cm, Cn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zsyrk", #endif diff --git a/runtime/starpu/codelets/codelet_zsyssq.c b/runtime/starpu/codelets/codelet_zsyssq.c index 29283f0b55ebc77dc01d52a30334a3c39e77f220..951e60d1b6b10779ff3737f8915831232ee7f280 100644 --- a/runtime/starpu/codelets/codelet_zsyssq.c +++ b/runtime/starpu/codelets/codelet_zsyssq.c @@ -50,6 +50,8 @@ void INSERT_TASK_zsyssq( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zsyssq; void (*callback)(void*) = options->profiling ? cl_zgessq_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -65,6 +67,7 @@ void INSERT_TASK_zsyssq( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zsyssq", #endif diff --git a/runtime/starpu/codelets/codelet_zsytrf_nopiv.c b/runtime/starpu/codelets/codelet_zsytrf_nopiv.c index 3293f977acb7870640adedd490d18103b678efb2..cbac3596ee2cab76abc4ed7c49b1bbff6f6f1527 100644 --- a/runtime/starpu/codelets/codelet_zsytrf_nopiv.c +++ b/runtime/starpu/codelets/codelet_zsytrf_nopiv.c @@ -54,6 +54,8 @@ void INSERT_TASK_zsytrf_nopiv( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_zsytrf_nopiv; void (*callback)(void*) = options->profiling ? cl_zsytrf_nopiv_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -68,6 +70,7 @@ void INSERT_TASK_zsytrf_nopiv( const RUNTIME_option_t *options, /* STARPU_SCRATCH, options->ws_worker, */ STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zsytrf_nopiv", #endif diff --git a/runtime/starpu/codelets/codelet_ztplqt.c b/runtime/starpu/codelets/codelet_ztplqt.c index 96f966b8a6b60186432c5bff1c7637c990b4760a..0754c207f01e2fa3463e309991f451f3b3be3510 100644 --- a/runtime/starpu/codelets/codelet_ztplqt.c +++ b/runtime/starpu/codelets/codelet_ztplqt.c @@ -58,6 +58,8 @@ void INSERT_TASK_ztplqt( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztplqt; void (*callback)(void*) = options->profiling ? cl_ztplqt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -78,6 +80,7 @@ void INSERT_TASK_ztplqt( const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_USE_MPI) STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn), #endif diff --git a/runtime/starpu/codelets/codelet_ztpmlqt.c b/runtime/starpu/codelets/codelet_ztpmlqt.c index c62d453cc675363292efa386219a627b88fb8723..92d9e3bac6644997c5fddf9f6e281cf8a5e721b1 100644 --- a/runtime/starpu/codelets/codelet_ztpmlqt.c +++ b/runtime/starpu/codelets/codelet_ztpmlqt.c @@ -104,6 +104,8 @@ void INSERT_TASK_ztpmlqt( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztpmlqt; void (*callback)(void*) = options->profiling ? cl_ztpmlqt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(V, Vm, Vn); @@ -130,6 +132,7 @@ void INSERT_TASK_ztpmlqt( const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_USE_MPI) STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn), #endif diff --git a/runtime/starpu/codelets/codelet_ztpmqrt.c b/runtime/starpu/codelets/codelet_ztpmqrt.c index 13fbfef6636e678743b7046a3ae651a2960f77e2..c0da2c794afedca487488388d42bd47204b22f3a 100644 --- a/runtime/starpu/codelets/codelet_ztpmqrt.c +++ b/runtime/starpu/codelets/codelet_ztpmqrt.c @@ -104,6 +104,8 @@ void INSERT_TASK_ztpmqrt( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztpmqrt; void (*callback)(void*) = options->profiling ? cl_ztpmqrt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(V, Vm, Vn); @@ -130,6 +132,7 @@ void INSERT_TASK_ztpmqrt( const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_USE_MPI) STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn), #endif diff --git a/runtime/starpu/codelets/codelet_ztpqrt.c b/runtime/starpu/codelets/codelet_ztpqrt.c index d6300f71ef49a9fe4a12ed23ec92a5045934f830..596bb44a28ee49045c69a512c0dff598cc0a7f30 100644 --- a/runtime/starpu/codelets/codelet_ztpqrt.c +++ b/runtime/starpu/codelets/codelet_ztpqrt.c @@ -57,6 +57,8 @@ void INSERT_TASK_ztpqrt( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztpqrt; void (*callback)(void*) = options->profiling ? cl_ztpqrt_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -77,6 +79,7 @@ void INSERT_TASK_ztpqrt( const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_USE_MPI) STARPU_EXECUTE_ON_NODE, B->get_rankof(B, Bm, Bn), #endif diff --git a/runtime/starpu/codelets/codelet_ztradd.c b/runtime/starpu/codelets/codelet_ztradd.c index d23ce80ebf8e278f1e9b0244af475116c50138f0..e19dd2636fce5ea0d9ffb13345cc37953eadd9a5 100644 --- a/runtime/starpu/codelets/codelet_ztradd.c +++ b/runtime/starpu/codelets/codelet_ztradd.c @@ -114,6 +114,8 @@ void INSERT_TASK_ztradd( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztradd; void (*callback)(void*) = options->profiling ? cl_zgeadd_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -132,6 +134,7 @@ void INSERT_TASK_ztradd( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztradd", #endif diff --git a/runtime/starpu/codelets/codelet_ztrasm.c b/runtime/starpu/codelets/codelet_ztrasm.c index d650d197395ae267693e8f869c54bec55e2a773a..527c7e44b2511285229ea05e9b90039d6bd23655 100644 --- a/runtime/starpu/codelets/codelet_ztrasm.c +++ b/runtime/starpu/codelets/codelet_ztrasm.c @@ -53,6 +53,8 @@ void INSERT_TASK_ztrasm( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztrasm; void (*callback)(void*) = options->profiling ? cl_ztrasm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -70,6 +72,7 @@ void INSERT_TASK_ztrasm( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, double, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztrasm", #endif diff --git a/runtime/starpu/codelets/codelet_ztrmm.c b/runtime/starpu/codelets/codelet_ztrmm.c index 92eb37b92890f5a69339ae8d443bf29e903e1ec8..a1d24cf9542f5ac1e310511aa440f293fb35ab56 100644 --- a/runtime/starpu/codelets/codelet_ztrmm.c +++ b/runtime/starpu/codelets/codelet_ztrmm.c @@ -105,6 +105,8 @@ void INSERT_TASK_ztrmm(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_ztrmm; void (*callback)(void*) = options->profiling ? cl_ztrmm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -124,6 +126,7 @@ void INSERT_TASK_ztrmm(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztrmm", #endif diff --git a/runtime/starpu/codelets/codelet_ztrsm.c b/runtime/starpu/codelets/codelet_ztrsm.c index 250f39fbbbbcdd5363c91e83dc1bf09ca3c97117..f4ab409209f9d82b333322ac88bf23ed2dfc060e 100644 --- a/runtime/starpu/codelets/codelet_ztrsm.c +++ b/runtime/starpu/codelets/codelet_ztrsm.c @@ -103,6 +103,8 @@ void INSERT_TASK_ztrsm(const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_ztrsm; void (*callback)(void*) = options->profiling ? cl_ztrsm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -122,6 +124,7 @@ void INSERT_TASK_ztrsm(const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(B, CHAMELEON_Complex64_t, Bm, Bn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztrsm", #endif diff --git a/runtime/starpu/codelets/codelet_ztrssq.c b/runtime/starpu/codelets/codelet_ztrssq.c index b92c02f70e37271869e96619bb25f342579f1ccf..d7ed201afc60538aebadeaa78294c38fc7f1c5c4 100644 --- a/runtime/starpu/codelets/codelet_ztrssq.c +++ b/runtime/starpu/codelets/codelet_ztrssq.c @@ -52,6 +52,8 @@ void INSERT_TASK_ztrssq( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztrssq; void (*callback)(void*) = options->profiling ? cl_ztrasm_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -68,6 +70,7 @@ void INSERT_TASK_ztrssq( const RUNTIME_option_t *options, STARPU_RW, RTBLKADDR(SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztrssq", #endif diff --git a/runtime/starpu/codelets/codelet_ztrtri.c b/runtime/starpu/codelets/codelet_ztrtri.c index 4c891806ce5070341a21f4cc8d8c71bed8e263b6..758542d8895ab175550bdf3bb266d6ac171b8661 100644 --- a/runtime/starpu/codelets/codelet_ztrtri.c +++ b/runtime/starpu/codelets/codelet_ztrtri.c @@ -68,6 +68,8 @@ void INSERT_TASK_ztrtri( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_ztrtri; void (*callback)(void*) = options->profiling ? cl_ztrtri_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_RW(A, Am, An); @@ -84,6 +86,7 @@ void INSERT_TASK_ztrtri( const RUNTIME_option_t *options, STARPU_VALUE, &(options->request), sizeof(RUNTIME_request_t*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztrtri", #endif diff --git a/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c b/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c index d90d7742fd3f8b12a64260aea63b99def65a309c..01704f33ac1fa6d97849d97aa73a6416e2dc208c 100644 --- a/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c +++ b/runtime/starpu/codelets/codelet_ztsmlq_hetra1.c @@ -73,6 +73,8 @@ void INSERT_TASK_ztsmlq_hetra1( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztsmlq_hetra1; void (*callback)(void*) = options->profiling ? cl_ztsmlq_hetra1_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; int ldWORK = side == ChamLeft ? ib : nb; @@ -101,6 +103,7 @@ void INSERT_TASK_ztsmlq_hetra1( const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztsmlq_hetra1", #endif diff --git a/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c b/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c index 04adf4260521c5172818d7637a53bbbc1d133459..4c6b5229e72eb9083db9ac2df481b4cb64e68c9a 100644 --- a/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c +++ b/runtime/starpu/codelets/codelet_ztsmqr_hetra1.c @@ -73,6 +73,8 @@ void INSERT_TASK_ztsmqr_hetra1( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_ztsmqr_hetra1; void (*callback)(void*) = options->profiling ? cl_ztsmqr_hetra1_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; int ldWORK = side == ChamLeft ? ib : nb; @@ -101,6 +103,7 @@ void INSERT_TASK_ztsmqr_hetra1( const RUNTIME_option_t *options, STARPU_SCRATCH, options->ws_worker, STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztsmqr_hetra1", #endif diff --git a/runtime/starpu/codelets/codelet_ztstrf.c b/runtime/starpu/codelets/codelet_ztstrf.c index 1caab2a068db71654e4fc48e3af5cde4e24bc687..32b3fb5ad829a995f4db5a52c7c1fc7a8ceac4af 100644 --- a/runtime/starpu/codelets/codelet_ztstrf.c +++ b/runtime/starpu/codelets/codelet_ztstrf.c @@ -80,6 +80,8 @@ void INSERT_TASK_ztstrf( const RUNTIME_option_t *options, (void)nb; struct starpu_codelet *codelet = &cl_ztstrf; void (*callback)(void*) = options->profiling ? cl_ztstrf_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_starpu_ws_t *d_work = (CHAMELEON_starpu_ws_t*)(options->ws_host); CHAMELEON_BEGIN_ACCESS_DECLARATION; @@ -107,6 +109,7 @@ void INSERT_TASK_ztstrf( const RUNTIME_option_t *options, STARPU_VALUE, &(options->request), sizeof(RUNTIME_request_t*), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "ztstrf", #endif diff --git a/runtime/starpu/codelets/codelet_zunmlq.c b/runtime/starpu/codelets/codelet_zunmlq.c index 7ae725bdd087d3c31ca049614b675fbb62d14823..7f2b6b24f37bc06680bf8ae50fe66c40720a06ba 100644 --- a/runtime/starpu/codelets/codelet_zunmlq.c +++ b/runtime/starpu/codelets/codelet_zunmlq.c @@ -106,6 +106,8 @@ void INSERT_TASK_zunmlq( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zunmlq; void (*callback)(void*) = options->profiling ? cl_zunmlq_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -129,6 +131,7 @@ void INSERT_TASK_zunmlq( const RUNTIME_option_t *options, STARPU_VALUE, &nb, sizeof(int), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zunmlq", #endif diff --git a/runtime/starpu/codelets/codelet_zunmqr.c b/runtime/starpu/codelets/codelet_zunmqr.c index 8ea66722b935b2ccd365ac219842b448687c4282..de61f52c9e5bdf04bba2c231a3cc407b0330b06a 100644 --- a/runtime/starpu/codelets/codelet_zunmqr.c +++ b/runtime/starpu/codelets/codelet_zunmqr.c @@ -105,6 +105,8 @@ void INSERT_TASK_zunmqr( const RUNTIME_option_t *options, { struct starpu_codelet *codelet = &cl_zunmqr; void (*callback)(void*) = options->profiling ? cl_zunmqr_callback : NULL; + starpu_option_request_t* schedopt = (starpu_option_request_t *)(options->request->schedopt); + int workerid = (schedopt == NULL) ? -1 : schedopt->workerid; CHAMELEON_BEGIN_ACCESS_DECLARATION; CHAMELEON_ACCESS_R(A, Am, An); @@ -128,6 +130,7 @@ void INSERT_TASK_zunmqr( const RUNTIME_option_t *options, STARPU_VALUE, &nb, sizeof(int), STARPU_PRIORITY, options->priority, STARPU_CALLBACK, callback, + STARPU_EXECUTE_ON_WORKER, workerid, #if defined(CHAMELEON_CODELETS_HAVE_NAME) STARPU_NAME, "zunmqr", #endif diff --git a/runtime/starpu/control/runtime_async.c b/runtime/starpu/control/runtime_async.c index ef2dbcc8b102751253f640ed509ea0a5678cd719..3241acc15ca6e0c49d304b014ba2500286da5c05 100644 --- a/runtime/starpu/control/runtime_async.c +++ b/runtime/starpu/control/runtime_async.c @@ -76,3 +76,60 @@ void RUNTIME_sequence_flush( CHAM_context_t *chamctxt, request->status = status; return; } + +/** + * Create a request + */ +int RUNTIME_request_create( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + /* allocate schedopt */ + request->schedopt = (starpu_option_request_t*)malloc(sizeof(starpu_option_request_t)); + /* initialize schedopt */ + starpu_option_request_t* schedopt = (starpu_option_request_t *)(request->schedopt); + /* default is to not use "execute_on_a_specific_worker" i.e. -1 */ + schedopt->workerid = -1; + request->status = CHAMELEON_SUCCESS; + return CHAMELEON_SUCCESS; +} + +/** + * Destroy a request + */ +int RUNTIME_request_destroy( CHAM_context_t *chamctxt, + RUNTIME_request_t *request ) +{ + (void)chamctxt; + free(request->schedopt); + return CHAMELEON_SUCCESS; +} + +/** + * Set runtime parameter for a request + */ +int RUNTIME_request_set( CHAM_context_t *chamctxt, + RUNTIME_request_t *request, + int param, int value ) +{ + if ( request->schedopt == NULL ) { + chameleon_error("RUNTIME_request_set", "request not initialized"); + return CHAMELEON_ERR_NOT_INITIALIZED; + } + starpu_option_request_t* schedopt = (starpu_option_request_t *)(request->schedopt); + + switch ( param ) { + case CHAMELEON_REQUEST_WORKERID: + if ( (value < -1) || (value >= chamctxt->nworkers) ) { + chameleon_error("RUNTIME_request_set", "workerid should be in [-1, NCPUS-1]"); + return CHAMELEON_ERR_ILLEGAL_VALUE; + } + schedopt->workerid = value; + break; + default: + chameleon_error("RUNTIME_request_set", "unknown parameter"); + return CHAMELEON_ERR_ILLEGAL_VALUE; + } + + return CHAMELEON_SUCCESS; +} \ No newline at end of file diff --git a/runtime/starpu/control/runtime_control.c b/runtime/starpu/control/runtime_control.c index 9e29f90f8f6aa95607aa1728aab3f4be38a0b518..69fe75a64ee01b5eb98f87bde1c214b9a7e00dde 100644 --- a/runtime/starpu/control/runtime_control.c +++ b/runtime/starpu/control/runtime_control.c @@ -107,6 +107,9 @@ int RUNTIME_init( CHAM_context_t *chamctxt, chamctxt->parallel_enabled = CHAMELEON_FALSE; hres = chameleon_starpu_init( conf ); + + chamctxt->nworkers = ncpus; + chamctxt->nthreads_per_worker = nthreads_per_worker; } else { int worker; diff --git a/runtime/starpu/include/chameleon_starpu.h.in b/runtime/starpu/include/chameleon_starpu.h.in index 5616664308237038adb68d3e9467433835032664..767c65f1342328dfa3bcd59071ce95bc22b1a166 100644 --- a/runtime/starpu/include/chameleon_starpu.h.in +++ b/runtime/starpu/include/chameleon_starpu.h.in @@ -77,6 +77,11 @@ typedef struct starpu_conf starpu_conf_t; +/* Structure used to give some options during one request (procedure) */ +typedef struct starpu_option_request_s { + int workerid; // to force task execution on a specific workerid +} starpu_option_request_t; + /**/ /*