malleabilityTypes.h 1.19 KB
Newer Older
1
2
3
#ifndef MALLEABILITY_TYPES_H
#define MALLEABILITY_TYPES_H

4
5
6
7
8
9
10
11
12
13
#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 {
14
15
16
  size_t entries; // Indica numero de vectores a comunicar (replicated data)
  size_t max_entries;
  size_t *qty; // Indica numero de elementos en cada subvector de sync_array
17
  MPI_Datatype *types;
18
19
20

  // Vector de vectores de request. En cada elemento superior se indican los requests a comprobar para dar por finalizada 
  // la comunicacion de ese dato
21
  size_t *request_qty;
22
  MPI_Request **requests; 
23
  MPI_Win *windows;
24
25
26
27
  void **arrays; // Cada subvector es una serie de datos a comunicar

} malleability_data_t;

28
29
void add_data(void *data, size_t total_qty, MPI_Datatype type, size_t request_qty, malleability_data_t *data_struct);
void modify_data(void *data, size_t index, size_t total_qty, MPI_Datatype type, size_t request_qty, malleability_data_t *data_struct);
30
void comm_data_info(malleability_data_t *data_struct_rep, malleability_data_t *data_struct_dist, int is_children_group);
31
void free_malleability_data_struct(malleability_data_t *data_struct);
32
33

#endif