Exemple #1
0
op_dat
op_decl_dat_temp_char (op_set set, int dim, char const * type, int size, char const *name )
{
  char* data = NULL;
  op_dat dat = op_decl_dat_temp_core ( set, dim, type, size, data, name );

  dat->data = (char*) calloc(set->size*dim*size, 1); //initialize data bits to 0
  dat-> user_managed = 0;
  return dat;
}
Exemple #2
0
op_dat op_decl_dat_temp_char(op_set set, int dim, char const * type, int size, char const *name )
{
  char* d = NULL;
  op_dat dat = op_decl_dat_temp_core ( set, dim, type, size, d, name );

  //create empty data block to assign to this temporary dat (including the halos)
  int halo_size = OP_import_exec_list[set->index]->size +
                  OP_import_nonexec_list[set->index]->size;

  dat->data = (char*) calloc((set->size+halo_size)*dim*size, 1); //initialize data bits to 0
  dat-> user_managed = 0;

  //need to allocate mpi_buffers for this new temp_dat
  op_mpi_buffer mpi_buf= (op_mpi_buffer)xmalloc(sizeof(op_mpi_buffer_core));

  halo_list exec_e_list = OP_export_exec_list[set->index];
  halo_list nonexec_e_list = OP_export_nonexec_list[set->index];

  mpi_buf->buf_exec = (char *)xmalloc((exec_e_list->size)*dat->size);
  mpi_buf->buf_nonexec = (char *)xmalloc((nonexec_e_list->size)*dat->size);

  halo_list exec_i_list = OP_import_exec_list[set->index];
  halo_list nonexec_i_list = OP_import_nonexec_list[set->index];

  mpi_buf->s_req = (MPI_Request *)xmalloc(sizeof(MPI_Request)*
      (exec_e_list->ranks_size + nonexec_e_list->ranks_size));
  mpi_buf->r_req = (MPI_Request *)xmalloc(sizeof(MPI_Request)*
      (exec_i_list->ranks_size + nonexec_i_list->ranks_size));

  mpi_buf->s_num_req = 0;
  mpi_buf->r_num_req = 0;

  dat->mpi_buffer = mpi_buf;

  return dat;
}