SlideShare una empresa de Scribd logo
1 de 23
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 1© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 1
(Very) Loose Proposal
to Revamp MPI_INIT and
MPI_FINALIZE
These are the kinds
of crazy ideas
that we discuss
at the MPI Forum
Jeffrey M. Squyres
Cisco Systems
23 September 2015
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 2
int my_thread1_main(void *context) {
MPI_Initialized(&flag);
// …
}
int my_thread2_main(void *context) {
MPI_Initialized(&flag);
// …
}
int main(int argc, char **argv) {
MPI_Init_thread(…, MPI_THREAD_FUNNELED, …);
pthread_create(…, my_thread1_main, NULL);
pthread_create(…, my_thread2_main, NULL);
// …
}
These might
run at the same time (!)
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 3
• MPI_INITIALIZED (and friends) are allowed to be called at any time
…even by multiple threads
…regardless of MPI_THREAD_* level
• This is a simple, easy-to-explain solution
And probably what most applications do, anyway 
• But many other paths were investigated
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 4
• Cannot call MPI_INIT more than once
• Cannot set error behavior of MPI_INIT
• Cannot re-initialize MPI after it has been finalized
• Cannot init MPI from different entities within a process without a priori
knowledge / coordination
MPI Process
// Library 1
MPI_Initialized(&flag);
if (!flag) MPI_Init(…);
// Library 2
MPI_Initialized(&flag);
if (!flag) MPI_Init(…);
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 5
• Cannot call MPI_INIT more than once
• Cannot set error behavior of MPI_INIT
• Cannot re-initialize MPI after it has been finalized
• Cannot init MPI from different entities within a process without a priori
knowledge / coordination
MPI Process
// Library 1
MPI_Initialized(&flag);
if (!flag) MPI_Init(…);
// Library 2
MPI_Initialized(&flag);
if (!flag) MPI_Init(…);
THIS IS INSUFFICIENT /
POTENTIALLY ERRONEOUS
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 6
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 7
• Call MPI_INIT as many times as you like
• By whomever wants to call it
MPI Process
// Library 3
MPI_Init(…);
// Library 4
MPI_Init(…);
// Library 5
MPI_Init(…);
// Library 6
MPI_Init(…);// Library 7
MPI_Init(…);
// Library 8
MPI_Init(…);
// Library 9
MPI_Init(…);
// Library 10
MPI_Init(…);
// Library 11
MPI_Init(…);
// Library 12
MPI_Init(…);
// Library 2
MPI_Init(…);
// Library 1
MPI_Init(…);
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 8
Do you have to call
MPI_FINALIZE exactly that many
times?
Do you allow MPI_INIT after
MPI_FINALIZE?
Or perhaps you only allow
MPI_INIT before MPI has been
finalized?
How can you tell if it’s safe to call
MPI_INIT? Atomic “test-and-init”?
I IS CONFUSED
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 9
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 10© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 10
The following are just (incomplete)
crazy ideas
WARNING!
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 11
int my_thread1_main(void *context) {
MPI_Session session;
MPI_Session_create(…, &session);
// Do MPI things
MPI_Session_free(&session);
}
int my_thread2_main(void *context) {
MPI_Session session;
MPI_Session_create(…, &session);
// Do MPI things
MPI_Session_free(&session);
}
int main(int argc, char **argv) {
pthread_create(…, my_thread1_main, NULL);
pthread_create(…, my_thread2_main, NULL);
…
}
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 12
int my_thread1_main(void *context) {
MPI_Session session;
MPI_Session_create(…, &session);
// Do MPI things
MPI_Session_free(&session);
}
int my_thread2_main(void *context) {
MPI_Session session;
MPI_Session_create(…, &session);
// Do MPI things
MPI_Session_free(&session);
}
int main(int argc, char **argv) {
pthread_create(…, my_thread1_main, NULL);
pthread_create(…, my_thread2_main, NULL);
…
}
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 13
int my_thread1_main(void *context) {
MPI_Session session;
MPI_Session_create(&session);
MPI_Comm_create_from_session(session, &comm)
// Do MPI things with comm
MPI_Comm_free(&comm);
MPI_Session_free(&session);
}
int my_thread1_main(void *context) {
MPI_Session session;
MPI_Session_create(&session);
MPI_Comm_create_from_session(session, &comm)
// Do MPI things with comm
MPI_Comm_free(&comm);
MPI_Session_free(&session);
}
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 14
Each entity (library?) in an OS
process can have its own session
Any session-local state can be
encapsulated in the handle
Entities can create / destroy
sessions at any time
…in any thread
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 15
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 16
• When is MPI_COMM_WORLD created (and/or initialized)?
• When is MPI_COMM_WORLD destroyed?
• Can you use MPI_COMM_WORLD with any session?
 There doesn’t seem to be an obvious relation between MCW and individual sessions
(ditto for MPI_COMM_SELF)
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 17
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 18
• Addresses logical inconsistency with session concept
• Clean separation of communicators between sub-entities
…maybe slightly better than we have it today (sub-entities dup’ing COMM_WORLD)
• Side effects:
Fault tolerance issues become easier
Opens some possibilities for scalability improvements
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 19
• Users will riot
…but what if they don’t?
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 20
• What would be the forward / backward compatibility strategy?
E.g., deprecate INIT, FINALIZE, INITIALIZED, FINALIZED…?
• What are the other arguments to MPI_SESSION_CREATE?
• Can you call both MPI_INIT and MPI_SESSION_CREATE in the same
process?
• Can you do anything else with a session?
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 21
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 22© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 22
Come to MPI Forum meetings
Discuss this and other
scintillating MPI topics
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 23
Thank you.

Más contenido relacionado

La actualidad más candente

Open MPI State of the Union X SC'16 BOF
Open MPI State of the Union X SC'16 BOFOpen MPI State of the Union X SC'16 BOF
Open MPI State of the Union X SC'16 BOFJeff Squyres
 
(Open) MPI, Parallel Computing, Life, the Universe, and Everything
(Open) MPI, Parallel Computing, Life, the Universe, and Everything(Open) MPI, Parallel Computing, Life, the Universe, and Everything
(Open) MPI, Parallel Computing, Life, the Universe, and EverythingJeff Squyres
 
What is [Open] MPI?
What is [Open] MPI?What is [Open] MPI?
What is [Open] MPI?Jeff Squyres
 
180 nm Tape out experience using Open POWER ISA
180 nm Tape out experience using Open POWER ISA180 nm Tape out experience using Open POWER ISA
180 nm Tape out experience using Open POWER ISAGanesan Narayanasamy
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1Shuen-Huei Guan
 
Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.Carlos Miguel Ferreira
 
.NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016).NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016)citizenmatt
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4Kentaro Ebisawa
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experienceAlexandre Abadie
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxEmbarcadero Technologies
 
Dive into network_programming
Dive into network_programmingDive into network_programming
Dive into network_programmingtunixiong
 
How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014 How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014 Hookflash
 
Introduction to OFI
Introduction to OFIIntroduction to OFI
Introduction to OFIseanhefty
 
Ian huston getting started with cloud foundry
Ian huston   getting started with cloud foundryIan huston   getting started with cloud foundry
Ian huston getting started with cloud foundryJessica Willis
 
Introduction to llvm
Introduction to llvmIntroduction to llvm
Introduction to llvmTao He
 

La actualidad más candente (19)

Open MPI State of the Union X SC'16 BOF
Open MPI State of the Union X SC'16 BOFOpen MPI State of the Union X SC'16 BOF
Open MPI State of the Union X SC'16 BOF
 
(Open) MPI, Parallel Computing, Life, the Universe, and Everything
(Open) MPI, Parallel Computing, Life, the Universe, and Everything(Open) MPI, Parallel Computing, Life, the Universe, and Everything
(Open) MPI, Parallel Computing, Life, the Universe, and Everything
 
LLVM Compiler
LLVM CompilerLLVM Compiler
LLVM Compiler
 
What is [Open] MPI?
What is [Open] MPI?What is [Open] MPI?
What is [Open] MPI?
 
180 nm Tape out experience using Open POWER ISA
180 nm Tape out experience using Open POWER ISA180 nm Tape out experience using Open POWER ISA
180 nm Tape out experience using Open POWER ISA
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1
 
LLVM
LLVMLLVM
LLVM
 
Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.
 
.NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016).NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016)
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experience
 
Python for Delphi Developers - Part 2
Python for Delphi Developers - Part 2Python for Delphi Developers - Part 2
Python for Delphi Developers - Part 2
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for Linux
 
Open MPI
Open MPIOpen MPI
Open MPI
 
Dive into network_programming
Dive into network_programmingDive into network_programming
Dive into network_programming
 
How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014 How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014
 
Introduction to OFI
Introduction to OFIIntroduction to OFI
Introduction to OFI
 
Ian huston getting started with cloud foundry
Ian huston   getting started with cloud foundryIan huston   getting started with cloud foundry
Ian huston getting started with cloud foundry
 
Introduction to llvm
Introduction to llvmIntroduction to llvm
Introduction to llvm
 

Destacado

Optimizing High Performance Computing Applications for Energy
Optimizing High Performance Computing Applications for EnergyOptimizing High Performance Computing Applications for Energy
Optimizing High Performance Computing Applications for EnergyDavid Lecomber
 
야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1
야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1 야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1
야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1 rlaehdrb212
 
образовательная программа бакалавр менеджмента
образовательная программа    бакалавр менеджментаобразовательная программа    бакалавр менеджмента
образовательная программа бакалавр менеджментаAglaya Busalova
 
Ecuador turístico
Ecuador turísticoEcuador turístico
Ecuador turísticoKaren Arias
 
0c960528cf0be4df8f000000(2)
0c960528cf0be4df8f000000(2)0c960528cf0be4df8f000000(2)
0c960528cf0be4df8f000000(2)ELIMENG
 
Suominen Oyj:n Osavuosikatsaus Q1 2016
Suominen Oyj:n Osavuosikatsaus Q1 2016Suominen Oyj:n Osavuosikatsaus Q1 2016
Suominen Oyj:n Osavuosikatsaus Q1 2016Suominen Corporation
 
폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2
폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2 폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2
폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2 rlaehdrb212
 
Suominen Corporation results presentation Q2 2016
Suominen Corporation results presentation Q2 2016Suominen Corporation results presentation Q2 2016
Suominen Corporation results presentation Q2 2016Suominen Corporation
 
Sultan Muhammad Mohmand - Candidate For General Councilor UC31, General Abad
Sultan Muhammad Mohmand - Candidate For General Councilor UC31, General AbadSultan Muhammad Mohmand - Candidate For General Councilor UC31, General Abad
Sultan Muhammad Mohmand - Candidate For General Councilor UC31, General Abadabidkamran
 
Human Resource Management report on AAMRA TECHNOLOGY [Cover]
Human Resource Management report on AAMRA TECHNOLOGY [Cover]Human Resource Management report on AAMRA TECHNOLOGY [Cover]
Human Resource Management report on AAMRA TECHNOLOGY [Cover]Rifatul Sazal
 
ادارة العمليات المصرفية جريدة الغد قراءات اقتصادية
ادارة العمليات المصرفية جريدة الغد    قراءات اقتصاديةادارة العمليات المصرفية جريدة الغد    قراءات اقتصادية
ادارة العمليات المصرفية جريدة الغد قراءات اقتصاديةduraid alshbib
 
How to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI SessionsHow to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI Sessionsinside-BigData.com
 
Бакалавриат экономика профиль национальная экономика
Бакалавриат экономика профиль национальная экономикаБакалавриат экономика профиль национальная экономика
Бакалавриат экономика профиль национальная экономикаMaxim Kosyakov
 
Бакалавриат экономика профиль финансы и кредит
Бакалавриат экономика профиль финансы и кредитБакалавриат экономика профиль финансы и кредит
Бакалавриат экономика профиль финансы и кредитMaxim Kosyakov
 
Mcom Business Valuation In Practice
Mcom Business Valuation In PracticeMcom Business Valuation In Practice
Mcom Business Valuation In Practicemcomcorp
 
Evaluacion preoperatoria
Evaluacion preoperatoriaEvaluacion preoperatoria
Evaluacion preoperatoriaWendy Castro
 

Destacado (17)

Optimizing High Performance Computing Applications for Energy
Optimizing High Performance Computing Applications for EnergyOptimizing High Performance Computing Applications for Energy
Optimizing High Performance Computing Applications for Energy
 
야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1
야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1 야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1
야마토 릴게임 ≫click1.kr≪ 릴게임 사이트 릴게임 하는곳dh1
 
образовательная программа бакалавр менеджмента
образовательная программа    бакалавр менеджментаобразовательная программа    бакалавр менеджмента
образовательная программа бакалавр менеджмента
 
Ecuador turístico
Ecuador turísticoEcuador turístico
Ecuador turístico
 
0c960528cf0be4df8f000000(2)
0c960528cf0be4df8f000000(2)0c960528cf0be4df8f000000(2)
0c960528cf0be4df8f000000(2)
 
Suominen Oyj:n Osavuosikatsaus Q1 2016
Suominen Oyj:n Osavuosikatsaus Q1 2016Suominen Oyj:n Osavuosikatsaus Q1 2016
Suominen Oyj:n Osavuosikatsaus Q1 2016
 
폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2
폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2 폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2
폰타나 바둑이 ≫sds119.com≪ 온라인바둑이 사이트 소카바둑이tk2
 
Suominen Corporation results presentation Q2 2016
Suominen Corporation results presentation Q2 2016Suominen Corporation results presentation Q2 2016
Suominen Corporation results presentation Q2 2016
 
Sultan Muhammad Mohmand - Candidate For General Councilor UC31, General Abad
Sultan Muhammad Mohmand - Candidate For General Councilor UC31, General AbadSultan Muhammad Mohmand - Candidate For General Councilor UC31, General Abad
Sultan Muhammad Mohmand - Candidate For General Councilor UC31, General Abad
 
Human Resource Management report on AAMRA TECHNOLOGY [Cover]
Human Resource Management report on AAMRA TECHNOLOGY [Cover]Human Resource Management report on AAMRA TECHNOLOGY [Cover]
Human Resource Management report on AAMRA TECHNOLOGY [Cover]
 
ادارة العمليات المصرفية جريدة الغد قراءات اقتصادية
ادارة العمليات المصرفية جريدة الغد    قراءات اقتصاديةادارة العمليات المصرفية جريدة الغد    قراءات اقتصادية
ادارة العمليات المصرفية جريدة الغد قراءات اقتصادية
 
How to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI SessionsHow to Make MPI Awesome: A Proposal for MPI Sessions
How to Make MPI Awesome: A Proposal for MPI Sessions
 
Бакалавриат экономика профиль национальная экономика
Бакалавриат экономика профиль национальная экономикаБакалавриат экономика профиль национальная экономика
Бакалавриат экономика профиль национальная экономика
 
Presentación de ejemplo
Presentación de ejemploPresentación de ejemplo
Presentación de ejemplo
 
Бакалавриат экономика профиль финансы и кредит
Бакалавриат экономика профиль финансы и кредитБакалавриат экономика профиль финансы и кредит
Бакалавриат экономика профиль финансы и кредит
 
Mcom Business Valuation In Practice
Mcom Business Valuation In PracticeMcom Business Valuation In Practice
Mcom Business Valuation In Practice
 
Evaluacion preoperatoria
Evaluacion preoperatoriaEvaluacion preoperatoria
Evaluacion preoperatoria
 

Similar a (Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE

Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbersDefcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbersAlexandre Moneger
 
리눅스 드라이버 #2
리눅스 드라이버 #2리눅스 드라이버 #2
리눅스 드라이버 #2Sangho Park
 
Возможности интерпретатора Python в NX-OS
Возможности интерпретатора Python в NX-OSВозможности интерпретатора Python в NX-OS
Возможности интерпретатора Python в NX-OSCisco Russia
 
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Cisco DevNet
 
The genesis of clusterlib - An open source library to tame your favourite sup...
The genesis of clusterlib - An open source library to tame your favourite sup...The genesis of clusterlib - An open source library to tame your favourite sup...
The genesis of clusterlib - An open source library to tame your favourite sup...Arnaud Joly
 
Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022
Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022
Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022Morten Wittrock
 
Reducing the boot time of Linux devices
Reducing the boot time of Linux devicesReducing the boot time of Linux devices
Reducing the boot time of Linux devicesChris Simmonds
 
Microservices development at scale
Microservices development at scaleMicroservices development at scale
Microservices development at scaleVishal Banthia
 
Inception: A reverse-engineer horror History
Inception: A reverse-engineer horror HistoryInception: A reverse-engineer horror History
Inception: A reverse-engineer horror HistoryNelson Brito
 
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad AssisKubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad AssisAgileSparks
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfbhagyashri686896
 
Python_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfPython_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfrupaliakhute
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfsannykhopade
 
Python_vision_academy notes
Python_vision_academy notes Python_vision_academy notes
Python_vision_academy notes rajaniraut
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native JourneyVMware Tanzu
 
Automate Your Integration Governance with Open Source Software
Automate Your Integration Governance with Open Source SoftwareAutomate Your Integration Governance with Open Source Software
Automate Your Integration Governance with Open Source SoftwareMorten Wittrock
 
Data Loss and Duplication in Kafka
Data Loss and Duplication in KafkaData Loss and Duplication in Kafka
Data Loss and Duplication in KafkaJayesh Thakrar
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Eugene Kurko
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019UA Mobile
 

Similar a (Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE (20)

Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbersDefcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
 
리눅스 드라이버 #2
리눅스 드라이버 #2리눅스 드라이버 #2
리눅스 드라이버 #2
 
Возможности интерпретатора Python в NX-OS
Возможности интерпретатора Python в NX-OSВозможности интерпретатора Python в NX-OS
Возможности интерпретатора Python в NX-OS
 
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.Breizhcamp: Créer un bot, pas si simple. Faisons le point.
Breizhcamp: Créer un bot, pas si simple. Faisons le point.
 
The genesis of clusterlib - An open source library to tame your favourite sup...
The genesis of clusterlib - An open source library to tame your favourite sup...The genesis of clusterlib - An open source library to tame your favourite sup...
The genesis of clusterlib - An open source library to tame your favourite sup...
 
Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022
Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022
Automate your Cloud Integration governance with CPILint @ SIT Netherlands 2022
 
Reducing the boot time of Linux devices
Reducing the boot time of Linux devicesReducing the boot time of Linux devices
Reducing the boot time of Linux devices
 
Microservices development at scale
Microservices development at scaleMicroservices development at scale
Microservices development at scale
 
Inception: A reverse-engineer horror History
Inception: A reverse-engineer horror HistoryInception: A reverse-engineer horror History
Inception: A reverse-engineer horror History
 
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad AssisKubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdf
 
Python_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfPython_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdf
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdf
 
Python_vision_academy notes
Python_vision_academy notes Python_vision_academy notes
Python_vision_academy notes
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
HPC_MPI_CICD.pptx
HPC_MPI_CICD.pptxHPC_MPI_CICD.pptx
HPC_MPI_CICD.pptx
 
Automate Your Integration Governance with Open Source Software
Automate Your Integration Governance with Open Source SoftwareAutomate Your Integration Governance with Open Source Software
Automate Your Integration Governance with Open Source Software
 
Data Loss and Duplication in Kafka
Data Loss and Duplication in KafkaData Loss and Duplication in Kafka
Data Loss and Duplication in Kafka
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 

Más de Jeff Squyres

MPI Fourm SC'15 BOF
MPI Fourm SC'15 BOFMPI Fourm SC'15 BOF
MPI Fourm SC'15 BOFJeff Squyres
 
2014 01-21-mpi-community-feedback
2014 01-21-mpi-community-feedback2014 01-21-mpi-community-feedback
2014 01-21-mpi-community-feedbackJeff Squyres
 
Cisco usNIC: how it works, how it is used in Open MPI
Cisco usNIC: how it works, how it is used in Open MPICisco usNIC: how it works, how it is used in Open MPI
Cisco usNIC: how it works, how it is used in Open MPIJeff Squyres
 
Cisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentationCisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentationJeff Squyres
 
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)Jeff Squyres
 
MOSSCon 2013, Cisco Open Source talk
MOSSCon 2013, Cisco Open Source talkMOSSCon 2013, Cisco Open Source talk
MOSSCon 2013, Cisco Open Source talkJeff Squyres
 
Ethernet and TCP optimizations
Ethernet and TCP optimizationsEthernet and TCP optimizations
Ethernet and TCP optimizationsJeff Squyres
 
Friends don't let friends leak MPI_Requests
Friends don't let friends leak MPI_RequestsFriends don't let friends leak MPI_Requests
Friends don't let friends leak MPI_RequestsJeff Squyres
 
MPI-3 Timer requests proposal
MPI-3 Timer requests proposalMPI-3 Timer requests proposal
MPI-3 Timer requests proposalJeff Squyres
 
MPI_Mprobe is good for you
MPI_Mprobe is good for youMPI_Mprobe is good for you
MPI_Mprobe is good for youJeff Squyres
 
The Message Passing Interface (MPI) in Layman's Terms
The Message Passing Interface (MPI) in Layman's TermsThe Message Passing Interface (MPI) in Layman's Terms
The Message Passing Interface (MPI) in Layman's TermsJeff Squyres
 

Más de Jeff Squyres (12)

MPI Fourm SC'15 BOF
MPI Fourm SC'15 BOFMPI Fourm SC'15 BOF
MPI Fourm SC'15 BOF
 
2014 01-21-mpi-community-feedback
2014 01-21-mpi-community-feedback2014 01-21-mpi-community-feedback
2014 01-21-mpi-community-feedback
 
Cisco usNIC: how it works, how it is used in Open MPI
Cisco usNIC: how it works, how it is used in Open MPICisco usNIC: how it works, how it is used in Open MPI
Cisco usNIC: how it works, how it is used in Open MPI
 
Cisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentationCisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentation
 
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
 
MPI History
MPI HistoryMPI History
MPI History
 
MOSSCon 2013, Cisco Open Source talk
MOSSCon 2013, Cisco Open Source talkMOSSCon 2013, Cisco Open Source talk
MOSSCon 2013, Cisco Open Source talk
 
Ethernet and TCP optimizations
Ethernet and TCP optimizationsEthernet and TCP optimizations
Ethernet and TCP optimizations
 
Friends don't let friends leak MPI_Requests
Friends don't let friends leak MPI_RequestsFriends don't let friends leak MPI_Requests
Friends don't let friends leak MPI_Requests
 
MPI-3 Timer requests proposal
MPI-3 Timer requests proposalMPI-3 Timer requests proposal
MPI-3 Timer requests proposal
 
MPI_Mprobe is good for you
MPI_Mprobe is good for youMPI_Mprobe is good for you
MPI_Mprobe is good for you
 
The Message Passing Interface (MPI) in Layman's Terms
The Message Passing Interface (MPI) in Layman's TermsThe Message Passing Interface (MPI) in Layman's Terms
The Message Passing Interface (MPI) in Layman's Terms
 

Último

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

(Very) Loose proposal to revamp MPI_INIT and MPI_FINALIZE

  • 1. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 1© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 1 (Very) Loose Proposal to Revamp MPI_INIT and MPI_FINALIZE These are the kinds of crazy ideas that we discuss at the MPI Forum Jeffrey M. Squyres Cisco Systems 23 September 2015
  • 2. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 2 int my_thread1_main(void *context) { MPI_Initialized(&flag); // … } int my_thread2_main(void *context) { MPI_Initialized(&flag); // … } int main(int argc, char **argv) { MPI_Init_thread(…, MPI_THREAD_FUNNELED, …); pthread_create(…, my_thread1_main, NULL); pthread_create(…, my_thread2_main, NULL); // … } These might run at the same time (!)
  • 3. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 3 • MPI_INITIALIZED (and friends) are allowed to be called at any time …even by multiple threads …regardless of MPI_THREAD_* level • This is a simple, easy-to-explain solution And probably what most applications do, anyway  • But many other paths were investigated
  • 4. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 4 • Cannot call MPI_INIT more than once • Cannot set error behavior of MPI_INIT • Cannot re-initialize MPI after it has been finalized • Cannot init MPI from different entities within a process without a priori knowledge / coordination MPI Process // Library 1 MPI_Initialized(&flag); if (!flag) MPI_Init(…); // Library 2 MPI_Initialized(&flag); if (!flag) MPI_Init(…);
  • 5. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 5 • Cannot call MPI_INIT more than once • Cannot set error behavior of MPI_INIT • Cannot re-initialize MPI after it has been finalized • Cannot init MPI from different entities within a process without a priori knowledge / coordination MPI Process // Library 1 MPI_Initialized(&flag); if (!flag) MPI_Init(…); // Library 2 MPI_Initialized(&flag); if (!flag) MPI_Init(…); THIS IS INSUFFICIENT / POTENTIALLY ERRONEOUS
  • 6. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 6
  • 7. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 7 • Call MPI_INIT as many times as you like • By whomever wants to call it MPI Process // Library 3 MPI_Init(…); // Library 4 MPI_Init(…); // Library 5 MPI_Init(…); // Library 6 MPI_Init(…);// Library 7 MPI_Init(…); // Library 8 MPI_Init(…); // Library 9 MPI_Init(…); // Library 10 MPI_Init(…); // Library 11 MPI_Init(…); // Library 12 MPI_Init(…); // Library 2 MPI_Init(…); // Library 1 MPI_Init(…);
  • 8. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 8 Do you have to call MPI_FINALIZE exactly that many times? Do you allow MPI_INIT after MPI_FINALIZE? Or perhaps you only allow MPI_INIT before MPI has been finalized? How can you tell if it’s safe to call MPI_INIT? Atomic “test-and-init”? I IS CONFUSED
  • 9. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 9
  • 10. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 10© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 10 The following are just (incomplete) crazy ideas WARNING!
  • 11. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 11 int my_thread1_main(void *context) { MPI_Session session; MPI_Session_create(…, &session); // Do MPI things MPI_Session_free(&session); } int my_thread2_main(void *context) { MPI_Session session; MPI_Session_create(…, &session); // Do MPI things MPI_Session_free(&session); } int main(int argc, char **argv) { pthread_create(…, my_thread1_main, NULL); pthread_create(…, my_thread2_main, NULL); … }
  • 12. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 12 int my_thread1_main(void *context) { MPI_Session session; MPI_Session_create(…, &session); // Do MPI things MPI_Session_free(&session); } int my_thread2_main(void *context) { MPI_Session session; MPI_Session_create(…, &session); // Do MPI things MPI_Session_free(&session); } int main(int argc, char **argv) { pthread_create(…, my_thread1_main, NULL); pthread_create(…, my_thread2_main, NULL); … }
  • 13. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 13 int my_thread1_main(void *context) { MPI_Session session; MPI_Session_create(&session); MPI_Comm_create_from_session(session, &comm) // Do MPI things with comm MPI_Comm_free(&comm); MPI_Session_free(&session); } int my_thread1_main(void *context) { MPI_Session session; MPI_Session_create(&session); MPI_Comm_create_from_session(session, &comm) // Do MPI things with comm MPI_Comm_free(&comm); MPI_Session_free(&session); }
  • 14. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 14 Each entity (library?) in an OS process can have its own session Any session-local state can be encapsulated in the handle Entities can create / destroy sessions at any time …in any thread
  • 15. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 15
  • 16. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 16 • When is MPI_COMM_WORLD created (and/or initialized)? • When is MPI_COMM_WORLD destroyed? • Can you use MPI_COMM_WORLD with any session?  There doesn’t seem to be an obvious relation between MCW and individual sessions (ditto for MPI_COMM_SELF)
  • 17. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 17
  • 18. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 18 • Addresses logical inconsistency with session concept • Clean separation of communicators between sub-entities …maybe slightly better than we have it today (sub-entities dup’ing COMM_WORLD) • Side effects: Fault tolerance issues become easier Opens some possibilities for scalability improvements
  • 19. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 19 • Users will riot …but what if they don’t?
  • 20. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 20 • What would be the forward / backward compatibility strategy? E.g., deprecate INIT, FINALIZE, INITIALIZED, FINALIZED…? • What are the other arguments to MPI_SESSION_CREATE? • Can you call both MPI_INIT and MPI_SESSION_CREATE in the same process? • Can you do anything else with a session?
  • 21. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 21
  • 22. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 22© 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 22 Come to MPI Forum meetings Discuss this and other scintillating MPI topics
  • 23. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Public 23 Thank you.