|
ABSTRACT
Scientific software frequently demands high performance in order to execute complex models in acceptable time. A major means of obtaining high performance is via parallel execution on multi-processor systems. However, traditional methods of programming for parallel execution can lead to substantial code-tangling where the needs of the mathematical model crosscut with the concern of parallel execution.Aspect-Oriented Programming is an attractive technology for solving the problem of code-tangling in high performance parallel scientific software. The underlying mathematical model and the parallelism can be treated as separate concerns and programmed accordingly. Their elements of code can then be woven together to produce the final application. This paper investigates the extent to which AspectJ technology can be used to achieve the desired separation of concerns in programs from the Java Grande Forum benchmark suite, a set of test applications for evaluation of the performance of Java in the context of numerical computation. The paper analyses three different benchmark programs and classifies the degrees of difficulty in separating concerns within them in a form suitable for AspectJ. This leads to an assessment of the influence of the design of a numerical application on the ability of AspectJ to solve this kind of code-tangling problem. It is concluded that: (1) scientific software is rarely produced in true object-oriented style; and (2) the inherent loop structure of many scientific algorithms is incompatible with the join point philosophy of AspectJ.Since AspectJ cannot intercept the iterations of for-loops (which are at the heart of high-performance computing), various object-oriented models are proposed for describing (embarrassingly parallel) rectangular double-nested forloops that make it possible to use AspectJ for encapsulating parallelisation in an aspect. Finally, a test-case using these models is presented, together with performance results obtained on various Java Virtual Machines.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
M. Baker et al. mpiJava: A Java interface to MPI. In First UK Workshop on Java for High Performance Network Computing, Europar '98, Sept. 1998.
|
 |
2
|
|
| |
3
|
A. J. C. Bik, J. E. Villacis, and D. B. Gannon. javar: A prototype Java restructuring compiler. Concurrency: Practice and Experience, 9(I1):1181--1191, 1997.
|
| |
4
|
J. Bull, L. Smith, M. Westhead, D. Henty, and R. Davey. Benchmarking Java Grande applications. In Proceedings of the Second International Conference on The Practical Applications of Java, pages 63--73, 2000.
|
 |
5
|
|
| |
6
|
B. Carpenter, V. Getov, G. Judd, A. Skjellum, and G. Fox. MPJ: Mpi-like message passing for java. Concurrency: Practice and Experience, 12(11):1019--1038, 2000.
|
| |
7
|
Robit Chandra , Leonardo Dagum , Dave Kohr , Dror Maydan , Jeff McDonald , Ramesh Menon, Parallel programming in OpenMP, Morgan Kaufmann Publishers Inc., San Francisco, CA, 2001
|
| |
8
|
|
| |
9
|
John Irwin , Jean-Marc Loingtier , John R. Gilbert , Gregor Kiczales , John Lamping , Anurag Mendhekar , Tatiana Shpeisman, Aspect-Oriented Programming of Sparse Matrix Code, Proceedings of the Scientific Computing in Object-Oriented Parallel Environments, p.249-256, December 08-11, 1997
|
| |
10
|
C. V. Lopes. Aspect-Oriented Programming: An historical perspective (what's in a name?). Technical report, Institute for Software Research, University of California, Irvine, December 2002.
|
| |
11
|
|
| |
12
|
W. Press et al. Numerical Recipes in C. Cambridge University Press, Cambridge, UK, 1993.
|
| |
13
|
L. A. Smith and J. M. Bull. A multithreaded Java Grande benchmark suite. In Proceedings of the Third Workshop on Java for High Performance Computing, June 2001.
|
 |
14
|
|
CITED BY 18
|
|
Pavel Avgustinov , Aske Simon Christensen , Laurie Hendren , Sascha Kuzins , Jennifer Lhoták , Ondřej Lhoták , Oege de Moor , Damien Sereni , Ganesh Sittampalam , Julian Tibble, abc: an extensible AspectJ compiler, Proceedings of the 4th international conference on Aspect-oriented software development, p.87-98, March 14-18, 2005, Chicago, Illinois
|
|
|
|
|
|
Chris Allan , Pavel Avgustinov , Aske Simon Christensen , Bruno Dufour , Christopher Goard , Laurie Hendren , Sascha Kuzins , Jennifer Lhoták , Ondrej Lhoták , Oege de Moor , Damien Sereni , Ganesh Sittampalam , Julian Tibble , Clark Verbrugge, abc the aspectBench compiler for aspectJ a workbench for aspect-oriented programming language and compilers research, Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
|
|
|
|
|
|
|
|
|
|
|
|
Dimple Kaul , Aniruddha Gokhale , Larry Dawson , Alan Tackett , Kelly McCauley, Applying aspect oriented programming to distributed storage metadata management, Proceedings of the 2nd workshop on Best practices in applying aspect-oriented software development, p.4-es, March 12-16, 2007, Vancouver, British Columbia, Canada
|
|
|
|
|
|
|
|
|
Purushotham V. Bangalore, Generating parallel applications for distributed memory systems using aspects, components, and patterns, Proceedings of the 6th workshop on Aspects, components, and patterns for infrastructure software, p.3-es, March 12-16, 2007, Vancouver, British Columbia, Canada
|
|
|
|
|
|
|
|
|
|
|
|
Zhanqi Cui , Linzhang Wang , Huigen Liu , Xuandong Li, Computational error handling as aspects: a case study, Proceedings of the 1st workshop on Linking aspect technology and evolution, p.7-11, March 03-03, 2009, Charlottesville, Virginia, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|