[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

Yada: Straightforward parallel programming

Published: 01 September 2011 Publication History

Abstract

Now that multicore chips are common, providing an approach to parallel programming that is usable by regular programmers has become even more important. This cloud has one silver lining: providing useful speedup on a program is useful in and of itself, even if the resulting performance is lower than the best possible parallel performance on the same program. To help achieve this goal, Yada is an explicitly parallel programming language with sequential semantics. Explicitly parallel, because we believe that programmers need to identify how and where to exploit potential parallelism, but sequential semantics so that programmers can understand and debug their parallel programs in the way that they already know, i.e. as if they were sequential. The key new idea in Yada is the provision of a set of types that support parallel operations while still preserving sequential semantics. Beyond the natural read-sharing found in most previous sequential-like languages, Yada supports three other kinds of sharing. Writeonce locations support a single write and multiple reads, and two kinds of sharing for locations updated with an associative operator generalise the reduction and parallel-prefix operations found in many data-parallel languages. We expect to support other kinds of sharing in the future. We have evaluated our Yada prototype on eight algorithms and four applications, and found that programs require only a few changes to get useful speedups ranging from 2.2 to 6.3 on an 8-core machine. Yada performance is mostly comparable to parallel implementations of the same programs using OpenMP or explicit threads.

References

[1]
OpenMP application program interface version 3.0. <http://www.openmp.org/mp-documents/spec30.pdf> (accessed June 2010).
[2]
M.D. Allen, S. Sridharan, G.S. Sohi. Serialization sets: A dynamic dependence-based parallel execution model, in: PPoPP '09, 2009, pp. 85-96.
[3]
Bailey, D.H., Barszcz, E., Barton, J.T., Browning, D.S., Carter, R.L., Fatoohi, R.A., Frederickson, P.O., Lasinski, T.A., Simon, H.D., Venkatakrishnan, V. and Weeratunga, S.K., . The NAS parallel benchmarks. v5 i3. 66-73.
[4]
Blelloch, G., Chatterjee, S., Hardwick, J.C., Sipelstein, J. and Zagha, M., Implementation of a portable nested data-parallel language. Journal of Parallel and Distributed Computing. v21. 102-111.
[5]
G.E. Blelloch, Prefix Sums and Their Applications, Technical Report CMU-CS-90-190, Carnegie Mellon University, November 1990.
[6]
R.D. Blumofe, C.F. Joerg, B.C. Kuszmaul, C.E. Leiserson, K.H. Randall, Y. Zhou. Cilk: An efficient multithreaded runtime system, in: PPoPP'95, 1995, pp. 207-216.
[7]
R.L. Bocchino, Jr., V.S. Adve, D. Dig, S.V. Adve, S. Heumann, R. Komuravelli, J. Overbey, P. Simmons, H. Sung, M. Vakilian. A type and effect system for deterministic parallel Java, in: OOPSLA'09, 2009, pp. 97-116.
[8]
J. Burnim, K. Sen, Asserting and checking determinism for multithreaded programs, in: ESEC-FSE'09, 2009, pp. 3-12.
[9]
M.M.T. Chakravarty, R. Leshchinskiy, S.P. Jones, G. Keller, S. Marlow, Data parallel Haskell: a status report, in: DAMP'07, 2007.
[10]
B.L. Chamberlain, The Design and Implementation of a Region-Based Parallel Language. Ph.D. thesis, Department of Computer Science and Engineering, University of Washington, 2001.
[11]
A notation for deterministic cooperating processes. IEEE Trans. Parallel Distrib. Syst. v6 i8. 863-871.
[12]
J. Demmel, Private commmunication, 2009.
[13]
J. DeSouza, L.V. Kalé. MSA: Multiphase specifically shared arrays, in: LCPC'04, 2004.
[14]
J. Devietti, B. Lucia, L. Ceze, M. Oskin, DMP: Deterministic shared memory multiprocessing, in: ASPLOS'09, 2009, pp. 85-96.
[15]
M. Feng, C.E. Leiserson. Efficient detection of determinacy races in Cilk programs, in: SPAA'97, 1997, pp. 1-11.
[16]
H.P.F. Forum. High performance Fortran Language Specification, version 1.0. Technical Report CRPC-TR92225, Rice University, 1993.
[17]
A. Ghuloum, Ct: channelling NESL and SISAL in C++, in: CUFP'07, 2007, pp. 1-3.
[18]
G. Kahn. The semantics of a simple language for parallel programming, in: Information Processing, August 1974, pp. 471-475.
[19]
A. Krishnamurthy, D.E. Culler, A. Dusseau, S.C. Goldstein, S. Lumetta, T. von Eicken, K. Yelick. Parallel programming in Split-C, in: Supercomputing '93, 1993, pp. 262-273.
[20]
M. Kulkarni, K. Pingali, B. Walter, G. Ramanarayanan, K. Bala, L.P. Chew. Optimistic parallelism requires abstractions, in: PLDI'07, 2007, pp. 211-222.
[21]
J.R. Larus, B. Richards, G. Viswanathan, LCM: Memory system support for parallel language implementation, in: ASPLOS'94, 1994, pp. 208-218.
[22]
Lin, C. and Snyder, L., . 2008. ISBN:978-0321487902. Addison-Wesley.
[23]
J.D. McCalpin. Sustainable memory bandwidth in current high performance computers, October 1995. <http://www.cs.virginia.edu/mccalpin/papers/bandwidth/bandwidth.html>.
[24]
J. McGraw, S. Skedziewlewski, S. Allan, R. Oldehoeft, J. Galuert, C. Kirkham, B. Noyce, SISAL: Streams and iteration in a single assignment language, 1986, Memo M-146, Lawrence Livermore National Laboratory.
[25]
P. Montesinos, M. Hicks, S.T. King, J. Torrellas. Capo: A software-hardware interface for practical deterministic multiprocessor replay, in: ASPLOS'09, 2009, pp. 73-84.
[26]
G.C. Necula, S. McPeak, W. Weimer. CIL: Intermediate language and tools for the analysis of C programs, in: CC'04, 2004, pp. 213-228.
[27]
M. Olszewski, J. Ansel, S. Amarasinghe, Kendo: Efficient deterministic multithreading in software, in: ASPLOS'09, 2009, pp. 97-108.
[28]
G.D. Plotkin, A Structural Approach to Operational Semantics. Technical Report DAIMI FN-19, Computer Science Department, Aarhus University, 1981.
[29]
R. Rangan, N. Vachharajani, M. Vachharajani, D.I. August, Decoupled software pipelining with the synchronization array, in: PACT'2004, 2004.
[30]
Rinard, M.C. and Diniz, P.C., Commutativity analysis: a new analysis technique for parallelizing compilers. ACM Trans. Program. Lang. Syst. v19 i6. 42-991.
[31]
Rinard, M.C., Scales, D.J. and Lam, M.S., Jade: A high-level, machine-independent language for parallel programming. Computer. v26 i6. 28-38.
[32]
C. Sadowski, S.N. Freund, C. Flanagan, Singletrack: A dynamic determinism checker for multithreaded programs, in: ESOP'09, 2009, pp. 394-409.
[33]
Terauchi, T. and Aiken, A., A capability calculus for concurrency and determinism. ACM Trans. Program. Lang. Syst. v30 i5. 1-30.
[34]
N. Vachharajani, R. Rangan, E. Raman, M.J. Bridges, G. Ottoni, D.I. August. Speculative decoupled software pipelining, in: PACT'2007, 2007.

Cited By

View all
  • (2022)A Comprehensive Exploration of Languages for Parallel ComputingACM Computing Surveys10.1145/348500855:2(1-39)Online publication date: 18-Jan-2022
  • (2018)Concurrency-aware object-oriented programming with rolesProceedings of the ACM on Programming Languages10.1145/32765002:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • (2018)Proving a core code for FDM correct by 2 + dw testsProceedings of the 5th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming10.1145/3219753.3219759(42-49)Online publication date: 19-Jun-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Parallel Computing
Parallel Computing  Volume 37, Issue 9
September, 2011
155 pages

Publisher

Elsevier Science Publishers B. V.

Netherlands

Publication History

Published: 01 September 2011

Author Tags

  1. Determinism
  2. Language design
  3. Parallel language
  4. Parallel-prefix
  5. Parallel-reduction
  6. Parallelism

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 23 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2022)A Comprehensive Exploration of Languages for Parallel ComputingACM Computing Surveys10.1145/348500855:2(1-39)Online publication date: 18-Jan-2022
  • (2018)Concurrency-aware object-oriented programming with rolesProceedings of the ACM on Programming Languages10.1145/32765002:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • (2018)Proving a core code for FDM correct by 2 + dw testsProceedings of the 5th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming10.1145/3219753.3219759(42-49)Online publication date: 19-Jun-2018
  • (2011)Dataflow execution of sequential imperative programs on multicore architecturesProceedings of the 44th Annual IEEE/ACM International Symposium on Microarchitecture10.1145/2155620.2155628(59-70)Online publication date: 3-Dec-2011
  • (2011)Parallel fourth-order runge-kutta method to solve differential equationsProceedings of the Second international conference on Information Computing and Applications10.1007/978-3-642-25255-6_25(192-199)Online publication date: 1-Oct-2011

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media