-
Notifications
You must be signed in to change notification settings - Fork 41
Threads WG Meeting 1 29 2019
Manjunath Gorentla Venkata edited this page Jan 29, 2019
·
2 revisions
(Thanks Thomas for the notes)
Discussion on the tickets/issues : #257, #243
- Min S. (ANL)
- Naveen R. (Cray)
- Swaroop P. (ORNL)
- Thomas N. (ORNL)
- Manjunath GV (Mellanox)
- Anshuman G. (NVidia)
- "wireless caller?"
- Akhil L. (NVidia)
- Rahman
- PR# 257 (fixes #249)
- Wrapper of C for Fortran
- Supports any compiler (Fortran 2003)
- Interface useful for building other interoperability
- Created separate doc for language binding extensions for oshmem (separate from main spec.), so can add other language bindings in the future
- Fortran 2003 introduced standard way to create bind(c) interface for interoperability, wrapper interfaces over the C language interfaces
- No semantic differences between Fortran/C mapping so just reuse existing
- Some distinctions, the context arg can be left off (if needed) and the wrapper can cope with that to properly cope with bindings without having to add something additional/special
- Next target is to use this for CoArray Fortran
- Input - should cover all of oshmem before adding CoArray Fortran
- Not including the type oriented API (e.g., shmem__put), b/c users said they did not need for Fortran
- Tested with different compilers and not seen issues
- Will try with oshmem
- Has NAS benchmarks for testing, but may not part of the pull-request. For testing, Naveen will send link for that implementation after the call.
- PR# 243
- Status of interoperability
- Issues proposed with shmem_initialized/finalized API
- Challenge: when shmem already initialized by another library (testing "is intialized" is not atomic across libs)
- Challenge: Race on init/init_thread between threads
- Like to allow multiple init calls, to allow subsequent (extraneous calls) be "no-op" and only increase a counter
- See end of ticket #243 for summary of issues
- Input - how do you cope with lib1/lib2 calling init? Will have to be handed by the runtime (e.g., global flag in runtime)
- Ordering of init/finalize
- Case1: If shmem/mpi use unified runtime
- RTE maintain ref counter and not release resources until last finalize
- Case2: If shmem/mpi use indepent runtime
- MPI standards not allow multiple inits (MPI problem, see Sessions proposal)
- See slide #3 for more details
- Case1: If shmem/mpi use unified runtime
- Ongoing tasks - create separate ticket for init/fini issue when using multiple shmem libs
- Ongoing tasks - finish PDF draft of interoperability section, including
- MPI Interoperability: Dynamic process creation , thread safety, mapping PIDs, sync/ordering, progress, etc.
- See slide #4 for more details
- Reviewed interleaving of init/finalize calls Options 1-4 as summarized at end of Ticket #243
- Question - why was shmem_finalize added? For tools?
- Response - Yes, partly tools. But also as way to unload shmem created resources (e.g., symmetric heap) when they are no longer needed, which might not be at program termination but earlier/middle of program life.
- Input - concern over thread interleaving with init/fini, and allowing a ref-counted version of fini. (T1: init, T2:init, T2:fini, T1 uses shmem... badness?)
- Input - delayed ref-count fini could cause problems by not actually release the resources until ref-count zero. It could also be that
- Question - MPI dynamic process creation interactions? Was discussed on #243, see slides from 2018-sep-18 and 2018-oct-30 for Dynamic process creation discussion
-
Working Groups
-
Errata