malleabilityTypes.h 1.07 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#include <fcntl.h>
#include <sys/stat.h>
#include "malleabilityStates.h"

#define MALLEABILITY_INIT_DATA_QTY 100

typedef struct {
  int entries; // Indica numero de vectores a comunicar (replicated data)
  int max_entries;
  MPI_Request request_ibarrier; // Request para indicar que los padres esperan a que los hijos terminen de recibir
  int *qty; // Indica numero de elementos en cada subvector de sync_array
  int *types;

  // Vector de vectores de request. En cada elemento superior se indican los requests a comprobar para dar por finalizada 
  // la comunicacion de ese dato
  MPI_Request **requests; 
  void **arrays; // Cada subvector es una serie de datos a comunicar

} malleability_data_t;

void add_data(void *data, int total_qty, int type, int request_qty, malleability_data_t *data_struct);
void comm_data_info(malleability_data_t *data_struct_rep, malleability_data_t *data_struct_dist, int is_children_group, int myId, int root, MPI_Comm intercomm);
void free_malleability_data_struct(malleability_data_t *data_struct);