-/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
CHECK_BUFFER(1, buf, count)\
CHECK_COUNT(2, count)\
CHECK_TYPE(3, datatype)\
- CHECK_PROC(4, dst)\
- CHECK_RANK(4, dst, comm)\
+ if(dst!= MPI_PROC_NULL)\
+ CHECK_RANK(4, dst, comm)\
CHECK_TAG(5, tag)\
CHECK_COMM(6)\
CHECK_BUFFER(1, buf, count)\
CHECK_COUNT(2, count)\
CHECK_TYPE(3, datatype)\
- CHECK_PROC(4, src)\
- if(src!=MPI_ANY_SOURCE)\
+ if(src!=MPI_ANY_SOURCE && src!=MPI_PROC_NULL)\
CHECK_RANK(4, src, comm)\
CHECK_TAG(5, tag)\
CHECK_COMM(6)
int src_traced = getPid(comm, src);
// FIXME: Hack the way to trace this one
- auto* dst_hack = new std::vector<int>();
- auto* src_hack = new std::vector<int>();
+ auto dst_hack = std::make_shared<std::vector<int>>();
+ auto src_hack = std::make_shared<std::vector<int>>();
dst_hack->push_back(dst_traced);
src_hack->push_back(src_traced);
TRACE_smpi_comm_in(my_proc_id, __func__,
return MPI_ERR_ARG;
}
simgrid::smpi::Status::set_elements(status,datatype, count);
- return MPI_SUCCESS;
+ return MPI_SUCCESS;
+}
+
+int PMPI_Status_set_elements_x(MPI_Status* status, MPI_Datatype datatype, MPI_Count count){
+ if(status==MPI_STATUS_IGNORE){
+ return MPI_ERR_ARG;
+ }
+ simgrid::smpi::Status::set_elements(status,datatype, static_cast<int>(count));
+ return MPI_SUCCESS;
}
int PMPI_Grequest_start( MPI_Grequest_query_function *query_fn, MPI_Grequest_free_function *free_fn, MPI_Grequest_cancel_function *cancel_fn, void *extra_state, MPI_Request *request){