This article is missing information about GPUs. Please expand the article to include this information. Further details may exist on the talk page.(November 2019)
In computing, single program, multiple data (SPMD) is a term that has been used to refer to computational models for exploiting parallelism where-by multiple processors cooperate in the execution of a program in order to obtain results faster.
The term SPMD was introduced in 1983 and was used to denote two different computational models:
by Michel Auguin (University of Nice Sophia-Antipolis) and François Larbey (Thomson/Sintra),[1][2][3] as a “fork-and-join” and data-parallel approach where the parallel tasks (“single program”) are split-up and run simultaneously in lockstep on multiple SIMD processors with different inputs, and
by Frederica Darema (IBM),[4][5][6] where “all (processors) processes begin executing the same program... but through synchronization directives ... self-schedule themselves to execute different instructions and act on different data” and enabling MIMD parallelization of a given program, and is a more general approach than data-parallel and more efficient than the fork-and-join for parallel execution on general purpose multiprocessors.
The (IBM) SPMD is the most common style of parallel programming and can be considered a subcategory of MIMD in that it refers to MIMD execution of a given (“single”) program.[7] It is also a prerequisite for research concepts such as active messages and distributed shared memory.
^M. Auguin, F. Larbey (1983). "OPSILA: an advanced SIMD for numerical analysis and signal processing". Microcomputers: Developments in Industry, Business, and Education / Ninth EUROMICRO Symposium on Microprocessing and Microprogramming, Pp 311-318 Madrid, September 13–16, 1983.
^M. Auguin, F. Labrey (1985). "A Multi-processor SIMD Machine: OPSILA". K. Waldschmidt and B. Myhrhaug Eds, @EUROMICRO, 1985, Elsevier Science Publishers B. V. – North Holland.
^Auguin, M.; Boeri, F.; Dalban, J.P; Vincent-Carrefour, A. (1987). "Experience Using a SIMD/SPMD Multiprocessor Architecture". Multiprocessing and Microprogramming. 21 (1–5): 171–178. doi:10.1016/0165-6074(87)90034-2.
^Darema, Frederica (2001). "SPMD model: past, present and future, Recent Advances in Parallel Virtual Machine and Message Passing Interface". 8th European PVM/MPI Users' Group Meeting, Santorini/Thera, Greece, September 23–26, 2001. Lecture Notes in Computer Science 2131.
^F. Darema-Rogers, D. A. George, V. A. Norton, and G. F. Pfister (1985). "A VM Parallel Environment". IBM/RC11225 (1/23/85) and IBM/RC11381(9/19/85).{{cite journal}}: CS1 maint: multiple names: authors list (link)
^Darema, F.; George, D.A.; Norton, V.A.; Pfister, G.F. (1988). "A single-program-multiple-data computational model for EPEX/FORTRAN". Journal of Parallel Computing. 7: 11–24. doi:10.1016/0167-8191(88)90094-4.