StarPU Internal Handbook
Loading...
Searching...
No Matches
starpu_mpi_mpi_backend.h
Go to the documentation of this file.
1/* StarPU --- Runtime system for heterogeneous multicore architectures.
2 *
3 * Copyright (C) 2009-2022 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
4 *
5 * StarPU is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published by
7 * the Free Software Foundation; either version 2.1 of the License, or (at
8 * your option) any later version.
9 *
10 * StarPU is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 *
14 * See the GNU Lesser General Public License in COPYING.LGPL for more details.
15 */
16
17#ifndef __STARPU_MPI_MPI_BACKEND_H__
18#define __STARPU_MPI_MPI_BACKEND_H__
19
20#include <common/config.h>
21#include <common/uthash.h>
22
25#ifdef __cplusplus
26extern "C"
27{
28#endif
29
30#ifdef STARPU_USE_MPI_MPI
31
32extern int _starpu_mpi_tag;
33#define _STARPU_MPI_TAG_ENVELOPE _starpu_mpi_tag
34#define _STARPU_MPI_TAG_DATA _starpu_mpi_tag+1
35#define _STARPU_MPI_TAG_SYNC_DATA _starpu_mpi_tag+2
36
37#ifdef STARPU_USE_MPI_FT
38#define _STARPU_MPI_TAG_CP_ACK _starpu_mpi_tag+3
39#define _STARPU_MPI_TAG_CP_RCVRY _starpu_mpi_tag+4
40#define _STARPU_MPI_TAG_EXT_DATA _starpu_mpi_tag+5
41#define _STARPU_MPI_TAG_CP_INFO _starpu_mpi_tag+6
42#endif // STARPU_USE_MPI_FT
43
44enum _starpu_envelope_mode
45{
46 _STARPU_MPI_ENVELOPE_DATA=0,
47 _STARPU_MPI_ENVELOPE_SYNC_READY=1
48};
49
51{
52 enum _starpu_envelope_mode mode;
53 starpu_ssize_t size;
54 starpu_mpi_tag_t data_tag;
55 unsigned sync;
56};
57
59{
60 MPI_Request data_request;
61
62 starpu_pthread_mutex_t req_mutex;
63 starpu_pthread_cond_t req_cond;
64 starpu_pthread_cond_t posted_cond;
68
69 MPI_Request size_req;
70
71 struct _starpu_mpi_envelope* envelope;
72
73 unsigned is_internal_req:1;
74 unsigned to_destroy:1;
75 struct _starpu_mpi_req *internal_req;
76 struct _starpu_mpi_early_data_handle *early_data_handle;
78};
79
80#endif // STARPU_USE_MPI_MPI
81
82#ifdef __cplusplus
83}
84#endif
85
86#endif // __STARPU_MPI_MPI_BACKEND_H__
Definition starpu_mpi_early_data.h:37
Definition starpu_mpi_mpi_backend.h:51
struct _starpu_mpi_req * other_request
Definition starpu_mpi_mpi_backend.h:67
Definition starpu_mpi_mpi_backend.h:59
Definition starpu_mpi_private.h:241
Definition uthash.h:1017