19 double *** src_fields,
double *** src_frac_masks,
double ** tgt_field,
20 double frac_mask_fallback_value,
double scale_factor,
double scale_summand);
23 double *** src_fields,
double *** src_frac_masks,
24 int is_target,
double frac_mask_fallback_value,
25 double scale_factor,
double scale_summand);
28 double frac_mask_fallback_value,
double scale_factor,
double scale_summand);
31 double frac_mask_fallback_value,
double scale_factor,
double scale_summand);
98 size_t collection_size, Xt_redist * redists,
size_t num_src_fields) {
104 redists, num_src_fields, collection_size, 0,
"source to target"),
106 redists, num_src_fields, collection_size,
SEND_BUFFER), num_src_fields);
129 double *** src_fields,
double *** src_frac_masks,
double ** tgt_field,
130 double frac_mask_fallback_value,
double scale_factor,
double scale_summand) {
135 double ** src_send_buffer = NULL;
140 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute");
145 (scale_factor != 1.0) || (scale_summand != 0.0)) {
150 (
double const * restrict **)src_fields,
151 (
double const * restrict **)src_frac_masks, src_send_buffer,
154 scale_factor, scale_summand);
174 "yac_interpolation_direct_mf_execute");
179 double *** src_fields,
double *** src_frac_masks,
int is_target,
180 double frac_mask_fallback_value,
double scale_factor,
double scale_summand) {
187 double ** src_send_buffer = NULL;
193 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_put") ==
196 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_put");
201 (
double const * restrict **)src_fields,
202 (
double const * restrict **)src_frac_masks, src_send_buffer,
205 scale_factor, scale_summand);
209 direct_mf->
src2tgt, (
double const **)src_send_buffer,
210 "yac_interpolation_direct_mf_execute_put");
215 double frac_mask_fallback_value,
double scale_factor,
double scale_summand) {
217 UNUSED(frac_mask_fallback_value);
237 "yac_interpolation_direct_mf_execute_get");
242 double frac_mask_fallback_value,
double scale_factor,
double scale_summand) {
244 UNUSED(frac_mask_fallback_value);
253 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_get_async") ==
256 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_get_async");
271 "yac_interpolation_direct_mf_execute_get_async");
282 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_put_test");
293 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_get_test");
303 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_execute_wait");
325 if (interp == NULL)
return;
331 direct_mf->
src2tgt,
"yac_interpolation_direct_mf_delete");
#define YAC_FRAC_MASK_VALUE_IS_VALID(value)
static void yac_interpolation_direct_mf_execute_wait(struct yac_interpolation_type *interp)
static struct yac_interpolation_type * yac_interpolation_direct_mf_copy(struct yac_interpolation_type *interp)
static void yac_interpolation_direct_mf_execute_get_async(struct yac_interpolation_type *interp, double **tgt_field, double frac_mask_fallback_value, double scale_factor, double scale_summand)
static int yac_interpolation_direct_mf_execute_get_test(struct yac_interpolation_type *interp)
static void yac_interpolation_direct_mf_delete(struct yac_interpolation_type *interp)
static int yac_interpolation_direct_mf_execute_put_test(struct yac_interpolation_type *interp)
static struct yac_interpolation_type * yac_interpolation_direct_mf_new_(size_t collection_size, struct yac_interpolation_exchange *src2tgt, struct yac_interpolation_buffer src_data, size_t num_src_fields)
static int yac_interpolation_direct_mf_is_source(struct yac_interpolation_type *interp)
static struct yac_interpolation_type_vtable const interpolation_direct_mf_vtable
static void yac_interpolation_direct_mf_execute_get(struct yac_interpolation_type *interp, double **tgt_field, double frac_mask_fallback_value, double scale_factor, double scale_summand)
static int yac_interpolation_direct_mf_is_target(struct yac_interpolation_type *interp)
struct yac_interpolation_type * yac_interpolation_direct_mf_new(size_t collection_size, Xt_redist *redists, size_t num_src_fields)
static void yac_interpolation_direct_mf_execute(struct yac_interpolation_type *interp, double ***src_fields, double ***src_frac_masks, double **tgt_field, double frac_mask_fallback_value, double scale_factor, double scale_summand)
static void yac_interpolation_direct_mf_execute_put(struct yac_interpolation_type *interp, double ***src_fields, double ***src_frac_masks, int is_target, double frac_mask_fallback_value, double scale_factor, double scale_summand)
int yac_interpolation_exchange_put_test(struct yac_interpolation_exchange *exchange, char const *routine_name)
int yac_interpolation_exchange_is_target(struct yac_interpolation_exchange *exchange)
void yac_interpolation_exchange_execute_get_async(struct yac_interpolation_exchange *exchange, double **recv_data, char const *routine_name)
struct yac_interpolation_exchange * yac_interpolation_exchange_copy(struct yac_interpolation_exchange *exchange)
void yac_interpolation_exchange_delete(struct yac_interpolation_exchange *exchange, char const *routine_name)
void yac_interpolation_exchange_execute_get(struct yac_interpolation_exchange *exchange, double **recv_data, char const *routine_name)
void yac_interpolation_exchange_wait(struct yac_interpolation_exchange *exchange, char const *routine_name)
void yac_interpolation_exchange_execute_put(struct yac_interpolation_exchange *exchange, double const **send_data, char const *routine_name)
struct yac_interpolation_exchange * yac_interpolation_exchange_new(Xt_redist *redists, size_t num_fields, size_t collection_size, int with_frac_mask, char const *name)
void yac_interpolation_exchange_execute(struct yac_interpolation_exchange *exchange, double const **send_data_, double **recv_data_, char const *routine_name)
enum YAC_INTERP_EXCH_STATUS yac_interpolation_exchange_status(struct yac_interpolation_exchange *exchange, char const *routine_name)
int yac_interpolation_exchange_get_test(struct yac_interpolation_exchange *exchange, char const *routine_name)
int yac_interpolation_exchange_is_source(struct yac_interpolation_exchange *exchange)
struct yac_interpolation_buffer yac_interpolation_buffer_copy(struct yac_interpolation_buffer src, size_t num_fields, size_t collection_size)
void yac_interpolation_buffer_free(struct yac_interpolation_buffer *buffer)
struct yac_interpolation_buffer yac_interpolation_buffer_init(Xt_redist *redists, size_t num_fields, size_t collection_size, enum yac_interpolation_buffer_type type)
static void compute_tgt_field(double const *restrict **src_fields, double const *restrict **src_frac_masks, double *restrict *tgt_field, size_t *restrict tgt_buffer_sizes, size_t num_src_fields, size_t collection_size, double frac_mask_fallback_value, double scale_factor, double scale_summand)
#define xcalloc(nmemb, size)
struct yac_interpolation_buffer src_data
struct yac_interpolation_type_vtable const * vtable
double ** tgt_field_buffer
double ** src_field_buffer
struct yac_interpolation_exchange * src2tgt
int(* is_source)(struct yac_interpolation_type *interp)