{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,26]],"date-time":"2026-01-26T02:41:48Z","timestamp":1769395308898,"version":"3.49.0"},"reference-count":41,"publisher":"SAGE Publications","issue":"5","license":[{"start":{"date-parts":[[2020,6,17]],"date-time":"2020-06-17T00:00:00Z","timestamp":1592352000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["The International Journal of High Performance Computing Applications"],"published-print":{"date-parts":[[2020,9]]},"abstract":"<jats:p> The Preconditioned Conjugate Gradient method is often employed for the solution of linear systems of equations arising in numerical simulations of physical phenomena. While being widely used, the solver is also known for its lack of accuracy while computing the residual. In this article, we propose two algorithmic solutions that originate from the ExBLAS project to enhance the accuracy of the solver as well as to ensure its reproducibility in a hybrid MPI + OpenMP tasks programming environment. One is based on ExBLAS and preserves every bit of information until the final rounding, while the other relies upon floating-point expansions and, hence, expands the intermediate precision. Instead of converting the entire solver into its ExBLAS-related implementation, we identify those parts that violate reproducibility\/non-associativity, secure them, and combine this with the sequential executions. These algorithmic strategies are reinforced with programmability suggestions to assure deterministic executions. Finally, we verify these approaches on two modern HPC systems: both versions deliver reproducible number of iterations, residuals, direct errors, and vector-solutions for the overhead of less than 37.7% on 768 cores. <\/jats:p>","DOI":"10.1177\/1094342020932650","type":"journal-article","created":{"date-parts":[[2020,6,17]],"date-time":"2020-06-17T07:29:07Z","timestamp":1592378947000},"page":"502-518","update-policy":"https:\/\/doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":7,"title":["Reproducibility of parallel preconditioned conjugate gradient in hybrid programming environments"],"prefix":"10.1177","volume":"34","author":[{"given":"Roman","family":"Iakymchuk","sequence":"first","affiliation":[{"name":"Sorbonne Universit\u00e9, LIP6, France"},{"name":"Fraunhofer ITWM, Germany"}]},{"given":"Maria Barreda","family":"Vay\u00e1","sequence":"additional","affiliation":[{"name":"Universitat Jaime I, Spain"}]},{"given":"Stef","family":"Graillat","sequence":"additional","affiliation":[{"name":"Sorbonne Universit\u00e9, LIP6, France"}]},{"given":"Jos\u00e9 I","family":"Aliaga","sequence":"additional","affiliation":[{"name":"Universitat Jaime I, Spain"}]},{"given":"Enrique S","family":"Quintana-Ort\u00ed","sequence":"additional","affiliation":[{"name":"Universitat Polit\u00e8cnica de Val\u00e8ncia, Spain"}]}],"member":"179","published-online":{"date-parts":[[2020,6,17]]},"reference":[{"key":"bibr1-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.4280"},{"key":"bibr2-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/ARITH.2013.39"},{"key":"bibr3-1094342020932650","doi-asserted-by":"crossref","unstructured":"Barreda M, Aliaga J, Beltran V, et al. (2019) Iteration-fusing conjugate gradient for sparse linear systems with mpi + ompss. Journal of Supercomputing DOI: 10.1051\/proc\/201445023. Available at: https:\/\/doi:10.1007\/s11227-019-03100-4.","DOI":"10.1007\/s11227-019-03100-4"},{"key":"bibr4-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1137\/1.9781611971538"},{"key":"bibr5-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2018.2855729"},{"key":"bibr6-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1137\/17M1140819"},{"key":"bibr7-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1016\/j.parco.2015.09.001"},{"key":"bibr8-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1007\/BF01397083"},{"key":"bibr9-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/ARITH.2013.9"},{"key":"bibr10-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2014.2345391"},{"key":"bibr11-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1145\/77626.79170"},{"key":"bibr12-1094342020932650","unstructured":"MPI forum (2019) Standardization forum for the Message Passing Interface (MPI). Available at: http:\/\/www.mpi-forum.org."},{"key":"bibr13-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1145\/1236463.1236468"},{"key":"bibr14-1094342020932650","doi-asserted-by":"crossref","DOI":"10.56021\/9781421407944","volume-title":"Matrix Computations","author":"Golub GH","year":"2013","edition":"4"},{"key":"bibr15-1094342020932650","volume-title":"Using Advanced MPI: Modern Features of the Message-Passing Interface","author":"Gropp W","year":"2014"},{"key":"bibr16-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/ARITH.2001.930115"},{"key":"bibr17-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2016.2539167"},{"key":"bibr18-1094342020932650","author":"Iakymchuk R","year":"2019","journal-title":"JCAM"},{"key":"bibr19-1094342020932650","volume-title":"Proceedings of the Nre2015 Workshop Held as Part of SC15","author":"Iakymchuk R","year":"2015"},{"key":"bibr20-1094342020932650","unstructured":"Iakymchuk R, Collange S, Defour D, et al. (2017) ExBLAS (Exact BLAS) library. Available at: https:\/\/exblas.lip6.fr\/ (accessed 31 January 2019)."},{"key":"bibr21-1094342020932650","first-page":"126","volume":"9553","author":"Iakymchuk R","year":"2016","journal-title":"Springer LNCS"},{"issue":"5","key":"bibr22-1094342020932650","first-page":"791","volume":"33","author":"Iakymchuk R","year":"2019","journal-title":"IJHPCA"},{"key":"bibr23-1094342020932650","unstructured":"IEEE Computer Society (2008) IEEE Standard for Floating-Point Arithmetic. Piscataway: IEEE Standard, pp. 754\u20132008."},{"key":"bibr24-1094342020932650","volume-title":"The Cre2019 Workshop Held as Part of SC19","author":"Imamura T","year":"2019"},{"key":"bibr25-1094342020932650","volume-title":"The Art of Computer Programming: Seminumerical Algorithms, Volume 2","author":"Knuth DE","year":"1969"},{"key":"bibr26-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1007\/s00607-010-0127-7"},{"key":"bibr27-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1515\/9783110301793"},{"key":"bibr28-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1145\/355841.355847"},{"key":"bibr29-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/ARITH.2017.20"},{"key":"bibr30-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-43229-4_44"},{"key":"bibr31-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/ARITH.2015.28"},{"key":"bibr32-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1137\/030601818"},{"key":"bibr33-1094342020932650","unstructured":"OpenMP ARB (2019) The OpenMP API specification for parallel programming. Available at: https:\/\/www.openmp.org\/."},{"key":"bibr34-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1007\/s11075-011-9478-1"},{"key":"bibr35-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1109\/ARITH.1991.145549"},{"key":"bibr36-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1137\/050645671"},{"key":"bibr37-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1137\/07068816X"},{"key":"bibr38-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1587\/nolta.1.2"},{"key":"bibr39-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1137\/1.9780898718003"},{"key":"bibr40-1094342020932650","doi-asserted-by":"publisher","DOI":"10.1016\/j.cpc.2018.12.006"},{"key":"bibr41-1094342020932650","first-page":"7","volume":"26","author":"Zielke G","year":"2003","journal-title":"GAMM Mitt. Ges. Angew. Math. Mech"}],"container-title":["The International Journal of High Performance Computing Applications"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342020932650","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/full-xml\/10.1177\/1094342020932650","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342020932650","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,2,28]],"date-time":"2025-02-28T19:23:49Z","timestamp":1740770629000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/10.1177\/1094342020932650"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,6,17]]},"references-count":41,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2020,9]]}},"alternative-id":["10.1177\/1094342020932650"],"URL":"https:\/\/doi.org\/10.1177\/1094342020932650","relation":{},"ISSN":["1094-3420","1741-2846"],"issn-type":[{"value":"1094-3420","type":"print"},{"value":"1741-2846","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,6,17]]}}}