-
Notifications
You must be signed in to change notification settings - Fork 280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mpi: embiggening #4961
mpi: embiggening #4961
Commits on Feb 20, 2021
-
pt2pt: make bsend buffer functions large compatible
Need use MPI_Aint internally for buffer sizes to accommodate large count.
Configuration menu - View commit details
-
Copy full SHA for 1e739c2 - Browse repository at this point
Copy the full SHA 1e739c2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 068607a - Browse repository at this point
Copy the full SHA 068607aView commit details -
python: remove unused dump_function_polymorph
This function must be a leftover from development. It has never been used and I don't think it is complete anyway.
Configuration menu - View commit details
-
Copy full SHA for d27a0e7 - Browse repository at this point
Copy the full SHA d27a0e7View commit details -
python: add underscore to internal attribute names
Need differentiate internal func attributes from the user configured attributes.
Configuration menu - View commit details
-
Copy full SHA for ecb945d - Browse repository at this point
Copy the full SHA ecb945dView commit details -
python: use lw_req in early_return routine to avoid confusion
While it is technically safe, having the same temparary name within nested scope is confusing. Rename to clarity.
Configuration menu - View commit details
-
Copy full SHA for 2f07905 - Browse repository at this point
Copy the full SHA 2f07905View commit details -
errhan: add errname **too_big_for_output
This will be used when user use a small function and the value returned won't fit in the output parameter.
Configuration menu - View commit details
-
Copy full SHA for 12edbc0 - Browse repository at this point
Copy the full SHA 12edbc0View commit details -
binding: generate embiggened functions
We will call dump_mpi_c twice for functions with POLY types. First we call with map_type="SMALL", then call with map_type="BIG". Functions without POLY types will just call dump_mpi_c once with map_type="SMALL". First of all, if there is a custom "large_count" block, we'll always use that in large version. If a POLY function only has scalar POLY type, we assume the implementation use MPI_Aint -- need fix any exceptions. If a POLY function has scalar output or inout POLY type, we assume internally use MPI_Aint, and python generrates temporary MPI_Aint variable to copy in and out value in the *small* version. If the function uses POLY arrays, we will use separate internal routines for datatype functions and always use MPI_Aint for collective (and other if any) functions. The array swap can be messy due to function-specific array lengths. We took the way out by only doing array swap in v-collectives. large mpir impl version with `_c_impl` suffix, and will call that. The compilation will fail if that (_c_impl) routine is missing. When we only use MPI_Aint for internal impl functions, we also check and convert when MPI_Count is bigger than MPI_Aint (such as the case in 32-bit systems).
Configuration menu - View commit details
-
Copy full SHA for 96288f8 - Browse repository at this point
Copy the full SHA 96288f8View commit details -
python/c: refactor the mapping parameter
The parameter mapping is passed along only because a few lower level function need it. Since the mapping concept is obscure at higher level, having it in the interface makes the code obscrue. On the other hand, a simpl string parameter "map_type" is more intuitive to understand. This commit uses "map_type" or simply omits mapping whereever the mapping is not directly needed.
Configuration menu - View commit details
-
Copy full SHA for 23ebfe9 - Browse repository at this point
Copy the full SHA 23ebfe9View commit details -
datatype: use impl wrapper function for datatype API
... that has output counters, e.g. MPI_Get_count, MPI_Get_elements, MPI_Pack, MPI_Unpack, etc. We need swap pointers when the type `MPI_Count` and `MPI_Aint` are not the same size, or we may skip the swap. The swapping will require use of different variables. This become difficult to handle with inlined body-of-routines. Wrap them inside an _impl function allows both cases to be handled properly.
Configuration menu - View commit details
-
Copy full SHA for 4525265 - Browse repository at this point
Copy the full SHA 4525265View commit details -
binding: use _large_impl suffix for internal large interface
Unfortunately our fortran bindings uses _c_impl and _c to refer to C versions of Fortran binding, causing conflicts with the large count interface. Since it is easier to change the C bindings, we use _large_impl to differentiate. I think it is more readable than _c suffix anyway.
Configuration menu - View commit details
-
Copy full SHA for c04d3ea - Browse repository at this point
Copy the full SHA c04d3eaView commit details -
Configuration menu - View commit details
-
Copy full SHA for deb6de4 - Browse repository at this point
Copy the full SHA deb6de4View commit details