Thread-safety in an MPI implementation: Requirements and analysis

The MPI-2 Standard has carefully specified the interaction between MPI and user-created threads. The goal of this specification is to allow users to write multithreaded MPI programs while also allowing MPI implementations to deliver high performance. However, a simple reading of the thread-safety sp...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Parallel computing Ročník 33; číslo 9; s. 595 - 604
Hlavní autoři: Gropp, William, Thakur, Rajeev
Médium: Journal Article
Jazyk:angličtina
Vydáno: United States Elsevier B.V 01.09.2007
Témata:
ISSN:0167-8191, 1872-7336
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Abstract The MPI-2 Standard has carefully specified the interaction between MPI and user-created threads. The goal of this specification is to allow users to write multithreaded MPI programs while also allowing MPI implementations to deliver high performance. However, a simple reading of the thread-safety specification does not reveal what its implications are for an implementation and what implementers must be aware (and careful) of. In this paper, we describe and analyze what the MPI Standard says about thread-safety and what it implies for an implementation. We classify the MPI functions based on their thread-safety requirements and discuss several issues to consider when implementing thread-safety in MPI. We use the example of generating new context ids (required for creating new communicators) to demonstrate how a simple solution for the single-threaded case does not naturally extend to the multithreaded case and how a naïve thread-safe algorithm can be expensive. We then present an algorithm for generating context ids that works efficiently in both single-threaded and multithreaded cases.
AbstractList The MPI-2 Standard has carefully specified the interaction between MPI and user-created threads. The goal of this specification is to allow users to write multithreaded MPI programs while also allowing MPI implementations to deliver high performance. However, a simple reading of the thread-safety specification does not reveal what its implications are for an implementation and what implementers must be aware (and careful) of. In this paper, we describe and analyze what the MPI Standard says about thread-safety and what it implies for an implementation. We classify the MPI functions based on their thread-safety requirements and discuss several issues to consider when implementing thread-safety in MPI. We use the example of generating new context ids (required for creating new communicators) to demonstrate how a simple solution for the single-threaded case does not naturally extend to the multithreaded case and how a naove thread-safe algorithm can be expensive. We then present an algorithm for generating context ids that works efficiently in both single-threaded and multithreaded cases.
The MPI-2 Standard has carefully specified the interaction between MPI and user-created threads. The goal of this specification is to allow users to write multithreaded MPI programs while also allowing MPI implementations to deliver high performance. However, a simple reading of the thread-safety specification does not reveal what its implications are for an implementation and what implementers must be aware (and careful) of. In this paper, we describe and analyze what the MPI Standard says about thread-safety and what it implies for an implementation. We classify the MPI functions based on their thread-safety requirements and discuss several issues to consider when implementing thread-safety in MPI. We use the example of generating new context ids (required for creating new communicators) to demonstrate how a simple solution for the single-threaded case does not naturally extend to the multithreaded case and how a naïve thread-safe algorithm can be expensive. We then present an algorithm for generating context ids that works efficiently in both single-threaded and multithreaded cases.
Author Thakur, Rajeev
Gropp, William
Author_xml – sequence: 1
  givenname: William
  surname: Gropp
  fullname: Gropp, William
  email: gropp@mcs.anl.gov
– sequence: 2
  givenname: Rajeev
  surname: Thakur
  fullname: Thakur, Rajeev
  email: thakur@mcs.anl.gov
BackLink https://www.osti.gov/biblio/920216$$D View this record in Osti.gov
BookMark eNqFkN1KAzEQhYMo2FafwJv1AXadJNvdRPCiFH8KFUXqdchmZ2nKNluTVejbm2298kJhhoHhfMOZMyanrnNIyBWFjAItbjbZTnvTZQygzIYCdkJGVJQsLTkvTskoqspUUEnPyTiEDQAUuYARma3WHnWdBt1gv0-sS7RLnl8Xid3uWtyi63VvO3ebvOHHp_WHTYiaOrZu98GGC3LW6Dbg5c-ckPeH-9X8KV2-PC7ms2VquJz2aS1zUUwrUTNuGloZwQRDlGUlsBZMNoimyHPONUAjDSs08KoAkTMJGqkWfEKuj3e70FsVjO3RrE3nHJpeSQaMFlHDjxrjuxA8Nmrn7Vb7vaKghqTURh2SUkNSaihgkZK_qHj88HbvtW3_Ye-OLMbXvyz6wRk6g3UMKxqrO_sn_w2rmodw
CitedBy_id crossref_primary_10_1109_TPDS_2011_308
crossref_primary_10_1007_s10822_010_9373_1
crossref_primary_10_1016_j_parco_2008_12_013
crossref_primary_10_1109_TPDS_2018_2815568
crossref_primary_10_1145_2858788_2688522
crossref_primary_10_1145_3275443
crossref_primary_10_1016_j_micpro_2016_02_006
crossref_primary_10_1016_j_parco_2012_10_002
crossref_primary_10_1002_cpe_5158
crossref_primary_10_1177_1094342009360206
crossref_primary_10_1002_cpe_70158
crossref_primary_10_1088_1742_6596_1399_3_033037
Cites_doi 10.1007/3-540-48158-3_26
10.1006/jpdc.2000.1674
10.1109/MC.2006.180
10.1007/3-540-45825-5_46
10.1109/MPIDC.1996.534094
10.3167/092012906780646523
10.1109/CCGRID.2006.31
10.1145/377792.377895
ContentType Journal Article
Copyright 2007 Elsevier B.V.
Copyright_xml – notice: 2007 Elsevier B.V.
CorporateAuthor Argonne National Lab. (ANL), Argonne, IL (United States)
CorporateAuthor_xml – name: Argonne National Lab. (ANL), Argonne, IL (United States)
DBID AAYXX
CITATION
OTOTI
DOI 10.1016/j.parco.2007.07.002
DatabaseName CrossRef
OSTI.GOV
DatabaseTitle CrossRef
DatabaseTitleList

DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1872-7336
EndPage 604
ExternalDocumentID 920216
10_1016_j_parco_2007_07_002
S0167819107000889
GroupedDBID --K
--M
-~X
.DC
.~1
0R~
123
1B1
1~.
1~5
29O
4.4
457
4G.
5VS
6OB
7-5
71M
8P~
9JN
AACTN
AAEDT
AAEDW
AAIAV
AAIKJ
AAKOC
AALRI
AAOAW
AAQFI
AAQXK
AAXUO
AAYFN
ABBOA
ABEFU
ABFNM
ABJNI
ABMAC
ABXDB
ABYKQ
ACDAQ
ACGFS
ACNNM
ACRLP
ACZNC
ADBBV
ADEZE
ADJOM
ADMUD
ADTZH
AEBSH
AECPX
AEKER
AENEX
AFKWA
AFTJW
AGHFR
AGUBO
AGYEJ
AHHHB
AHJVU
AHZHX
AIALX
AIEXJ
AIKHN
AITUG
AJBFU
AJOXV
ALMA_UNASSIGNED_HOLDINGS
AMFUW
AMRAJ
AOUOD
ASPBG
AVWKF
AXJTR
AZFZN
BJAXD
BKOJK
BLXMC
CS3
DU5
EBS
EFJIC
EFLBG
EJD
EO8
EO9
EP2
EP3
F5P
FDB
FEDTE
FGOYB
FIRID
FNPLU
FYGXN
G-Q
G8K
GBLVA
GBOLZ
HLZ
HVGLF
HZ~
H~9
IHE
J1W
JJJVA
KOM
LG9
M41
MO0
N9A
O-L
O9-
OAUVE
OZT
P-8
P-9
P2P
PC.
Q38
R2-
RIG
ROL
RPZ
SBC
SCC
SDF
SDG
SDP
SES
SEW
SPC
SPCBC
SST
SSV
SSZ
T5K
WH7
WUQ
XPP
ZMT
~G-
9DU
AATTM
AAXKI
AAYWO
AAYXX
ABDPE
ABWVN
ACLOT
ACRPL
ACVFH
ADCNI
ADNMO
AEIPS
AEUPX
AFJKZ
AFPUW
AGQPQ
AIGII
AIIUN
AKBMS
AKRWK
AKYEP
ANKPU
APXCP
CITATION
EFKBS
~HD
AALMO
ABPIF
ABPTK
OTOTI
ID FETCH-LOGICAL-c395t-d94865b8d23cf1bc8282ee97b8ed829feec64433a00f9c26a03b6084290ae1a83
ISICitedReferencesCount 24
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000250366000002&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 0167-8191
IngestDate Thu May 18 18:35:40 EDT 2023
Sat Nov 29 04:06:54 EST 2025
Tue Nov 18 22:41:43 EST 2025
Fri Feb 23 02:30:42 EST 2024
IsPeerReviewed true
IsScholarly true
Issue 9
Keywords Message-passing interface (MPI)
MPI implementation
Multithreaded programming
Thread-safety
Language English
License https://www.elsevier.com/tdm/userlicense/1.0
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-c395t-d94865b8d23cf1bc8282ee97b8ed829feec64433a00f9c26a03b6084290ae1a83
Notes USDOE Office of Science (SC)
DE-AC02-06CH11357
ANL/MCS/JA-59091
PageCount 10
ParticipantIDs osti_scitechconnect_920216
crossref_primary_10_1016_j_parco_2007_07_002
crossref_citationtrail_10_1016_j_parco_2007_07_002
elsevier_sciencedirect_doi_10_1016_j_parco_2007_07_002
PublicationCentury 2000
PublicationDate 2007-09-01
PublicationDateYYYYMMDD 2007-09-01
PublicationDate_xml – month: 09
  year: 2007
  text: 2007-09-01
  day: 01
PublicationDecade 2000
PublicationPlace United States
PublicationPlace_xml – name: United States
PublicationTitle Parallel computing
PublicationYear 2007
Publisher Elsevier B.V
Publisher_xml – name: Elsevier B.V
References MPICH2.
D. Buntinas, G. Mercier, W. Gropp, Design and evaluation of Nemesis, a scalable, low-latency, message-passing communication subsystem, in: Proceedings of Sixth IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2006), May 2006.
E.D. Demaine, A threads-only MPI implementation for the development of parallel programs, in: Proceedings of the 11th International Symposium on High Performance Computing Systems, July 1997, pp. 153–163.
R. Thakur, W. Gropp, Test suite for evaluating performance of MPI implementations that support MPI_THREAD_MULTIPLE, Technical Report ANL/MCS-P1418-0507, Mathematics and Computer Science Division, Argonne National Laboratory, May 2007.
F. Garcı´a, A. Calderón, J. Carretero, MiMPI: a multithread-safe implementation of MPI, in: Recent Advances in Parallel Virtual Machine and Message-Passing Interface, Proceedings of the Sixth European PVM/MPI Users’ Group Meeting, Lecture Notes in Computer Science 1697, Springer, September 1999, pp. 207–214.
M.-S. Wu, S. Aluru, R.A.. Kendall, Mixed mode matrix multiplication, in: Proceedings of the IEEE International Conference on Cluster Computing (Cluster 2002), September 2002, pp. 195–203.
.
Protopopov, Skjellum (bib12) 2001; 61
S.G. Caglar, G.D. Benson, Qing Huang, C.-W. Chu, USFMPI: a multi-threaded implementation of MPI for Linux clusters, in: Proceedings of the IASTED Conference on Parallel and Distributed Computing and Systems, 2003.
Holzmann (bib6) 2003
July 1997.
Analysis of thread-safety needs of MPI routines
Tomas Plachetka, (Quasi-) thread-safe PVM and (quasi-) thread-safe MPI without active polling, in: Recent Advances in Parallel Virtual Machine and Message-Passing Interface, 9th European PVM/MPI Users’ Group Meeting, Lecture Notes in Computer Science 2474, Springer, September 2002, pp. 296–305.
Lee (bib7) 2006; 39
Message-Passing Interface Forum. MPI-2: Extensions to the Message-Passing Interface
A. Skjellum, B. Protopopov, S. Hebert, A thread taxonomy for MPI, in: Proceedings of the Second MPI Developers Conference, June 1996, pp. 50–57.
H. Tang, T. Yang, Optimizing threaded MPI execution on SMP clusters, in: Proceedings of the 15th ACM International Conference on Supercomputing, June 2001, pp. 381–392.
Salman Pervez, Personal communication, 2006.
Holzmann (10.1016/j.parco.2007.07.002_bib6) 2003
10.1016/j.parco.2007.07.002_bib16
Protopopov (10.1016/j.parco.2007.07.002_bib12) 2001; 61
10.1016/j.parco.2007.07.002_bib13
10.1016/j.parco.2007.07.002_bib14
10.1016/j.parco.2007.07.002_bib15
10.1016/j.parco.2007.07.002_bib10
10.1016/j.parco.2007.07.002_bib11
10.1016/j.parco.2007.07.002_bib8
Lee (10.1016/j.parco.2007.07.002_bib7) 2006; 39
10.1016/j.parco.2007.07.002_bib9
10.1016/j.parco.2007.07.002_bib3
10.1016/j.parco.2007.07.002_bib4
10.1016/j.parco.2007.07.002_bib5
10.1016/j.parco.2007.07.002_bib1
10.1016/j.parco.2007.07.002_bib2
References_xml – reference: Tomas Plachetka, (Quasi-) thread-safe PVM and (quasi-) thread-safe MPI without active polling, in: Recent Advances in Parallel Virtual Machine and Message-Passing Interface, 9th European PVM/MPI Users’ Group Meeting, Lecture Notes in Computer Science 2474, Springer, September 2002, pp. 296–305.
– reference: A. Skjellum, B. Protopopov, S. Hebert, A thread taxonomy for MPI, in: Proceedings of the Second MPI Developers Conference, June 1996, pp. 50–57.
– reference: H. Tang, T. Yang, Optimizing threaded MPI execution on SMP clusters, in: Proceedings of the 15th ACM International Conference on Supercomputing, June 2001, pp. 381–392.
– reference: S.G. Caglar, G.D. Benson, Qing Huang, C.-W. Chu, USFMPI: a multi-threaded implementation of MPI for Linux clusters, in: Proceedings of the IASTED Conference on Parallel and Distributed Computing and Systems, 2003.
– reference: Analysis of thread-safety needs of MPI routines,
– reference: MPICH2.
– reference: E.D. Demaine, A threads-only MPI implementation for the development of parallel programs, in: Proceedings of the 11th International Symposium on High Performance Computing Systems, July 1997, pp. 153–163.
– reference: M.-S. Wu, S. Aluru, R.A.. Kendall, Mixed mode matrix multiplication, in: Proceedings of the IEEE International Conference on Cluster Computing (Cluster 2002), September 2002, pp. 195–203.
– reference: F. Garcı´a, A. Calderón, J. Carretero, MiMPI: a multithread-safe implementation of MPI, in: Recent Advances in Parallel Virtual Machine and Message-Passing Interface, Proceedings of the Sixth European PVM/MPI Users’ Group Meeting, Lecture Notes in Computer Science 1697, Springer, September 1999, pp. 207–214.
– volume: 39
  start-page: 33
  year: 2006
  end-page: 42
  ident: bib7
  article-title: The problem with threads
  publication-title: Computer
– reference: Message-Passing Interface Forum. MPI-2: Extensions to the Message-Passing Interface,
– volume: 61
  start-page: 449
  year: 2001
  end-page: 466
  ident: bib12
  article-title: A multithreaded message-passing interface (MPI) architecture: Performance and program issues
  publication-title: J. Parall. Distrib. Comput.
– year: 2003
  ident: bib6
  article-title: The Spin Model Checker: Primer and Reference Manual
– reference: , July 1997.
– reference: .
– reference: D. Buntinas, G. Mercier, W. Gropp, Design and evaluation of Nemesis, a scalable, low-latency, message-passing communication subsystem, in: Proceedings of Sixth IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2006), May 2006.
– reference: Salman Pervez, Personal communication, 2006.
– reference: R. Thakur, W. Gropp, Test suite for evaluating performance of MPI implementations that support MPI_THREAD_MULTIPLE, Technical Report ANL/MCS-P1418-0507, Mathematics and Computer Science Division, Argonne National Laboratory, May 2007.
– ident: 10.1016/j.parco.2007.07.002_bib5
  doi: 10.1007/3-540-48158-3_26
– volume: 61
  start-page: 449
  issue: 4
  year: 2001
  ident: 10.1016/j.parco.2007.07.002_bib12
  article-title: A multithreaded message-passing interface (MPI) architecture: Performance and program issues
  publication-title: J. Parall. Distrib. Comput.
  doi: 10.1006/jpdc.2000.1674
– volume: 39
  start-page: 33
  issue: 5
  year: 2006
  ident: 10.1016/j.parco.2007.07.002_bib7
  article-title: The problem with threads
  publication-title: Computer
  doi: 10.1109/MC.2006.180
– ident: 10.1016/j.parco.2007.07.002_bib11
  doi: 10.1007/3-540-45825-5_46
– ident: 10.1016/j.parco.2007.07.002_bib15
– year: 2003
  ident: 10.1016/j.parco.2007.07.002_bib6
– ident: 10.1016/j.parco.2007.07.002_bib13
  doi: 10.1109/MPIDC.1996.534094
– ident: 10.1016/j.parco.2007.07.002_bib16
– ident: 10.1016/j.parco.2007.07.002_bib10
  doi: 10.3167/092012906780646523
– ident: 10.1016/j.parco.2007.07.002_bib2
  doi: 10.1109/CCGRID.2006.31
– ident: 10.1016/j.parco.2007.07.002_bib9
– ident: 10.1016/j.parco.2007.07.002_bib8
– ident: 10.1016/j.parco.2007.07.002_bib1
– ident: 10.1016/j.parco.2007.07.002_bib4
– ident: 10.1016/j.parco.2007.07.002_bib3
– ident: 10.1016/j.parco.2007.07.002_bib14
  doi: 10.1145/377792.377895
SSID ssj0006480
Score 1.9556301
Snippet The MPI-2 Standard has carefully specified the interaction between MPI and user-created threads. The goal of this specification is to allow users to write...
SourceID osti
crossref
elsevier
SourceType Open Access Repository
Enrichment Source
Index Database
Publisher
StartPage 595
SubjectTerms 97
ALGORITHMS
DATA TRANSMISSION
GENERAL AND MISCELLANEOUS//MATHEMATICS, COMPUTING, AND INFORMATION SCIENCE
IMPLEMENTATION
Message-passing interface (MPI)
MPI implementation
Multithreaded programming
SAFETY
SPECIFICATIONS
Thread-safety
Title Thread-safety in an MPI implementation: Requirements and analysis
URI https://dx.doi.org/10.1016/j.parco.2007.07.002
https://www.osti.gov/biblio/920216
Volume 33
WOSCitedRecordID wos000250366000002&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVESC
  databaseName: Elsevier SD Freedom Collection Journals 2021
  customDbUrl:
  eissn: 1872-7336
  dateEnd: 99991231
  omitProxy: false
  ssIdentifier: ssj0006480
  issn: 0167-8191
  databaseCode: AIEXJ
  dateStart: 19950101
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1ba9swFBZbuoe9rLuy3oYe9rZ62JJtSX0LpWUdWwlrN_JmZFmGpMUJuZT-_J5jSU5CWNkGA2OMsBxH5_icT-LTdwj5WGbgGZAmoyQ1MEGxRkVKlkmUiFhVdQUps5Vr-vVNXF7K4VANfHmreVtOQDSNvL9X0_9qamgDY-PW2b8wd_dQaIBrMDqcwexw_kPDAw6sormukY05QrLxp--DC9wP6anigc_xwyIN2LpNbk601SmUrCPWgZ5huZXblny-XIRM11J2JtO2up1fs1lxTPTN0tG29djau42FBdExp_xq19aOF7cACYEVJ3kuf7igKQWgdO6ETEJUdfIW3nvUWojMXFFNn21zV3x4K5C7NYXx5yn4wMQrTaLYJFvlrY5NeIUvhe8E4StG2tZTssNEpmSP7PQvzoZfu9Scp20pve5PBBmqlvC39VO_gyq9CUTfNRRy_ZK88NMH2ndmf0We2OY12Q2lOaiP1G9If8ML6KihuqHgBXTTC07oug_APRUNPvCW_Dw_uz79EvlqGZHhKltElUplnpWyYtzUSWlgKs2sVaKUtpJM1dYawL6c6ziulWG5jnmZxxLwSKxtoiV_R3rNpLHvCU1tmTKTQyuv0gy-XyY0Dm3Na0A6Kd8jLAxMYbyUPFY0uS0CZ3BctKOJRU5FgUfM9shx12nqlFQevz0PI154MOhAXgEu8njHfbQPdkIZZIN8MeilGKDZfP9fn3pAnq--kUPSW8yW9og8M3eL0Xz2wfvZA28bi54
linkProvider Elsevier
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Thread-safety+in+an+MPI+implementation%3A+Requirements+and+analysis&rft.jtitle=Parallel+computing&rft.au=Gropp%2C+William&rft.au=Thakur%2C+Rajeev&rft.date=2007-09-01&rft.pub=Elsevier+B.V&rft.issn=0167-8191&rft.eissn=1872-7336&rft.volume=33&rft.issue=9&rft.spage=595&rft.epage=604&rft_id=info:doi/10.1016%2Fj.parco.2007.07.002&rft.externalDocID=S0167819107000889
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0167-8191&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0167-8191&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0167-8191&client=summon