Exemplo n.º 1
0
static void MPIPackFun(c4snet_data_t *data, mpi_buf_t *buf)
{
  int vtype = data->vtype,
      type = data->type;

  MPIPack(buf, &vtype, MPI_INT, 1);
  MPIPack(buf, &data->size, MPI_INT, 1);
  MPIPack(buf, &type, MPI_INT, 1);

  if (data->vtype == VTYPE_array) {
    MPIPack(buf, data->data.ptr, TypeToMPIType(data->type), data->size);
  } else {
    MPIPack(buf, &data->data, TypeToMPIType(data->type), 1);
  }
}
Exemplo n.º 2
0
static void MPIPackFun(c4snet_data_t *data, void *buf)
{
  int vtype = data->vtype,
      type = data->type;

  SNetDistribPack(&vtype, buf, MPI_INT, 1);
  SNetDistribPack(&data->size, buf, MPI_INT, 1);
  SNetDistribPack(&type, buf, MPI_INT, 1);

  if (data->vtype == VTYPE_array) {
    SNetDistribPack(data->data.ptr, buf, TypeToMPIType(data->type),
                    data->size);
  } else {
    SNetDistribPack(&data->data, buf, TypeToMPIType(data->type), 1);
  }
}
Exemplo n.º 3
0
static c4snet_data_t *MPIUnpackFun(void *buf)
{
  void *tmp;
  c4snet_data_t *result;
  int vtype, type, count;

  MPIUnpack(buf, &vtype, MPI_INT, 1);
  MPIUnpack(buf, &count, MPI_INT, 1);
  MPIUnpack(buf, &type, MPI_INT, 1);

  if (vtype == VTYPE_array) {
    result = C4SNetAlloc(type, count, &tmp);
    MPIUnpack(buf, tmp, TypeToMPIType(type), count);
  } else {
    result = C4SNetAlloc(type, 1, &tmp);
    MPIUnpack(buf, tmp, TypeToMPIType(type), 1);
  }

  return result;
}
Exemplo n.º 4
0
static c4snet_data_t *MPIUnpackFun(void *buf)
{
  void *tmp;
  c4snet_data_t *result;
  int vtype, type, count;

  SNetDistribUnpack(&vtype, buf, MPI_INT, 1);
  SNetDistribUnpack(&count, buf, MPI_INT, 1);
  SNetDistribUnpack(&type, buf, MPI_INT, 1);

  if (vtype == VTYPE_array) {
    result = C4SNetAlloc(type, count, &tmp);
    SNetDistribUnpack(tmp, buf, TypeToMPIType(type), count);
  } else {
    result = C4SNetCreate(type, 1, &tmp);
    SNetDistribUnpack(tmp, buf, TypeToMPIType(type), 1);
  }

  return result;
}