3
3
* Copyright (c) 2004-2011 The Trustees of Indiana University and Indiana
4
4
* University Research and Technology
5
5
* Corporation. All rights reserved.
6
- * Copyright (c) 2004-2009 The University of Tennessee and The University
6
+ * Copyright (c) 2004-2020 The University of Tennessee and The University
7
7
* of Tennessee Research Foundation. All rights
8
8
* reserved.
9
9
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
@@ -679,20 +679,15 @@ static void mca_btl_smcuda_send_cuda_ipc_ack(struct mca_btl_base_module_t* btl,
679
679
* BTL. It handles smcuda specific control messages that are triggered
680
680
* when GPU memory transfers are initiated. */
681
681
static void btl_smcuda_control (mca_btl_base_module_t * btl ,
682
- mca_btl_base_tag_t tag ,
683
- mca_btl_base_descriptor_t * des , void * cbdata )
682
+ const mca_btl_base_receive_descriptor_t * descriptor )
684
683
{
685
684
int mydevnum , ipcaccess , res ;
686
685
ctrlhdr_t ctrlhdr ;
687
686
opal_proc_t * ep_proc ;
688
- struct mca_btl_base_endpoint_t * endpoint ;
689
687
mca_btl_smcuda_t * smcuda_btl = (mca_btl_smcuda_t * )btl ;
690
- mca_btl_smcuda_frag_t * frag = ( mca_btl_smcuda_frag_t * ) des ;
691
- mca_btl_base_segment_t * segments = des -> des_segments ;
688
+ const mca_btl_base_segment_t * segments = descriptor -> des_segments ;
689
+ struct mca_btl_base_endpoint_t * endpoint = descriptor -> endpoint ;
692
690
693
- /* Use the rank of the peer that sent the data to get to the endpoint
694
- * structure. This is needed for PML callback. */
695
- endpoint = mca_btl_smcuda_component .sm_peers [frag -> hdr -> my_smp_rank ];
696
691
ep_proc = endpoint -> proc_opal ;
697
692
698
693
/* Copy out control message payload to examine it */
@@ -764,7 +759,6 @@ static void btl_smcuda_control(mca_btl_base_module_t* btl,
764
759
}
765
760
}
766
761
767
- assert (endpoint -> peer_smp_rank == frag -> hdr -> my_smp_rank );
768
762
opal_output_verbose (10 , mca_btl_smcuda_component .cuda_ipc_output ,
769
763
"Analyzed CUDA IPC request: myrank=%d, mydev=%d, peerrank=%d, "
770
764
"peerdev=%d --> ACCESS=%d" ,
@@ -999,7 +993,6 @@ int mca_btl_smcuda_component_progress(void)
999
993
/* local variables */
1000
994
mca_btl_base_segment_t seg ;
1001
995
mca_btl_smcuda_frag_t * frag ;
1002
- mca_btl_smcuda_frag_t Frag ;
1003
996
sm_fifo_t * fifo = NULL ;
1004
997
mca_btl_smcuda_hdr_t * hdr ;
1005
998
int my_smp_rank = mca_btl_smcuda_component .my_smp_rank ;
@@ -1046,7 +1039,6 @@ int mca_btl_smcuda_component_progress(void)
1046
1039
switch (((uintptr_t )hdr ) & MCA_BTL_SMCUDA_FRAG_TYPE_MASK ) {
1047
1040
case MCA_BTL_SMCUDA_FRAG_SEND :
1048
1041
{
1049
- mca_btl_active_message_callback_t * reg ;
1050
1042
/* change the address from address relative to the shared
1051
1043
* memory address, to a true virtual address */
1052
1044
hdr = (mca_btl_smcuda_hdr_t * ) RELATIVE2VIRTUAL (hdr );
@@ -1058,17 +1050,16 @@ int mca_btl_smcuda_component_progress(void)
1058
1050
my_smp_rank , peer_smp_rank , j , FIFO_MAP (peer_smp_rank ));
1059
1051
}
1060
1052
#endif
1061
- /* recv upcall */
1062
- reg = mca_btl_base_active_message_trigger + hdr -> tag ;
1063
1053
seg .seg_addr .pval = ((char * )hdr ) + sizeof (mca_btl_smcuda_hdr_t );
1064
1054
seg .seg_len = hdr -> len ;
1065
- Frag .base .des_segment_count = 1 ;
1066
- Frag .base .des_segments = & seg ;
1067
- #if OPAL_CUDA_SUPPORT
1068
- Frag .hdr = hdr ; /* needed for peer rank in control messages */
1069
- #endif /* OPAL_CUDA_SUPPORT */
1070
- reg -> cbfunc (& mca_btl_smcuda .super , hdr -> tag , & (Frag .base ),
1071
- reg -> cbdata );
1055
+
1056
+ mca_btl_active_message_callback_t * reg = mca_btl_base_active_message_trigger + hdr -> tag ;
1057
+ mca_btl_base_receive_descriptor_t recv_desc = {.endpoint = mca_btl_smcuda_component .sm_peers [peer_smp_rank ],
1058
+ .des_segments = & seg ,
1059
+ .des_segment_count = 1 ,
1060
+ .tag = hdr -> tag ,
1061
+ .cbdata = reg -> cbdata };
1062
+ reg -> cbfunc (& mca_btl_smcuda .super , & recv_desc );
1072
1063
/* return the fragment */
1073
1064
MCA_BTL_SMCUDA_FIFO_WRITE (
1074
1065
mca_btl_smcuda_component .sm_peers [peer_smp_rank ],
0 commit comments