Mercury: Enabling Remote Procedure Call for High-Performance Computing
- J. Soumagne, D. Kimpe, J. Zounmevo, M. Chaarawi, Q.Koziol, A. Afsahi, and R. Ross
Mercury: Enabling Remote Procedure Call for High-Performance - - PowerPoint PPT Presentation
Mercury: Enabling Remote Procedure Call for High-Performance Computing J. Soumagne, D. Kimpe, J. Zounmevo, M. Chaarawi, Q.Koziol, A. Afsahi, and R. Ross The HDF Group, Argonne National Laboratory, Queens University September 24, 2013 Remote
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 2
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 2
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 2
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 2
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 2
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 3
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 3
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 3
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 3
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
RPC proc Network Abstraction Layer RPC proc Metadata (unexpected + expected messaging) Bulk Data (RMA transfer)
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 4
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
RPC proc Network Abstraction Layer RPC proc Metadata (unexpected + expected messaging) Bulk Data (RMA transfer)
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 4
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
RPC proc Network Abstraction Layer RPC proc Metadata (unexpected + expected messaging) Bulk Data (RMA transfer)
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 4
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
RPC proc Network Abstraction Layer RPC proc Metadata (unexpected + expected messaging) Bulk Data (RMA transfer)
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 4
⬛
and get request id
and get request id
with request id and serial- ized parameters + Pre-post receive for server response
unexpected request
send / receive requests
serialized response
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 5
⬛
and get request id
and get request id
with request id and serial- ized parameters + Pre-post receive for server response
unexpected request
send / receive requests
serialized response
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 5
⬛
and get request id
and get request id
with request id and serial- ized parameters + Pre-post receive for server response
unexpected request
send / receive requests
serialized response
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 5
⬛
and get request id
and get request id
with request id and serial- ized parameters + Pre-post receive for server response
unexpected request
send / receive requests
serialized response
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 5
⬛
and get request id
and get request id
with request id and serial- ized parameters + Pre-post receive for server response
unexpected request
send / receive requests
serialized response
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 5
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 6
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 7
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 8
⬛
⬛
⬛
⬛
segment and get handle
segment and get handle
memory handle
tion using local/deseri- alized remote handles
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 9
⬛
⬛
⬛
⬛
segment and get handle
segment and get handle
memory handle
tion using local/deseri- alized remote handles
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 9
⬛
⬛
⬛
⬛
segment and get handle
segment and get handle
memory handle
tion using local/deseri- alized remote handles
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 9
⬛
⬛
⬛
⬛
segment and get handle
segment and get handle
memory handle
tion using local/deseri- alized remote handles
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 9
⬛
⬛
⬛
⬛
segment and get handle
segment and get handle
memory handle
tion using local/deseri- alized remote handles
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 9
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 10
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 11
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 12
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 13
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 14
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 15
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 16
⬛
1000 2000 3000 4000 5000 6000 2 4 8 16 32 64 128 256 Aggregate bandwidth (MB/s) Number of client processes
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 17
⬛
1000 2000 3000 4000 5000 6000 2 4 8 16 32 64 128 256 Aggregate bandwidth (MB/s) Number of client processes
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 17
⬛
1000 2000 3000 4000 5000 6000 7000 8000 9000 2 4 8 16 32 64 128 256 Aggregate bandwidth (MB/s) Number of client processes
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 18
⬛
1000 2000 3000 4000 5000 6000 7000 8000 9000 2 4 8 16 32 64 128 256 Aggregate bandwidth (MB/s) Number of client processes
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 18
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 19
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 19
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 19
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 19
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 20
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 20
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 20
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 20
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 20
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 20
MERCURY_GEN_PROC(
((hg_string_t)(path)) ((int32_t)(flags)) ((uint32_t)(mode)) )
Macro
MERCURY_GEN_PROC( struct_type_name, fields )
/* Define open_in_t */ typedef struct { hg_string_t path; int32_t flags; uint32_t mode; } open_in_t; /* Define hg_proc_open_in_t */ static inline int hg_proc_open_in_t(hg_proc_t proc, void *data) { int ret = HG_SUCCESS;
ret = hg_proc_hg_string_t(proc, &struct_data->path); if (ret != HG_SUCCESS) { HG_ERROR_DEFAULT(”Proc error”); ret = HG_FAIL; return ret; } ret = hg_proc_int32_t(proc, &struct_data->flags); if (ret != HG_SUCCESS) { HG_ERROR_DEFAULT(”Proc error”); ret = HG_FAIL; return ret; } ret = hg_proc_uint32_t(proc, &struct_data->mode); if (ret != HG_SUCCESS) { HG_ERROR_DEFAULT(”Proc error”); ret = HG_FAIL; return ret; } return ret; }
Generated Code
Generates proc and struct
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 21
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 22
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 22
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 22
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 22
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 22
⬛
⬛
⬛
⬛
⬛
⬛
September 24, 2013 Mercury: Enabling Remote Procedure Call for High-Performance Computing 23