Abstract
Fortress provides a nice set of abstractions used widely in scientific computing. The use of such abstractions enhances the productivity of programmers/users. Also, in scientific computations, boilerplate code has extensive usage. Keeping this in view, we embed Fortress abstractions in an X10 environment so that we can get better productivity without losing performance. In this paper, we transform Fortress into X10 through a transcompilation system. We describe compilation strategies for a few important constructs and discuss the performance of the generated X10 code with respect to the original Fortress code. The translated X10 code outperforms the original Fortress code with a maximum of 206x speedup achieved in the best case. The system also supports the multiresolution language approach that simplifies parallel programming by allowing domain scientists to write programs in the Fortress syntax that is closer to the mathematical notation. The translated X10 code, which can further be compiled to either C++ or Java, implicitly assures performance and may further be optimized for performance by utilizing the low-level features of X10 (or C++/Java).



Similar content being viewed by others
References
Allen, E., Chase, D., Luchangco, V., Maessen, J.-W., Steele, G.L.: Object-oriented units of measurement. In: Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ’04), pp. 384–403. ACM, New York (2004)
Allen, E., Culpepper, R., Nielsen, J.D., Rafkind, J., Ryu, S.: Growing a syntax. In: Proceedings of Workshop on Foundations of Object-Oriented Languages (2009)
Bettini, L.: Implementing DSL with Xtext and Xtend, 2nd edn. Packt Publishing, New York (2016)
Birken, K.: Building code generators for DSLs using a partial evaluator for the Xtend Language. In: Proceedings of the 6th International Symposium on Leveraging Applications of Formal Methods, Verification and Validation, Technologies for Mastering Change, Vol. 8802, pp. 407–424. Springer, New York (2014)
Buckwalter, B.: Dimensional: statically checked physical dimensions for Haskell (2008)
Callahan, D., Chamberlain, B.L., Zima, H.P.: The cascade high productivity language. In: 9th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS 2004), pp. 52–60. IEEE Computer Society (2004)
Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: an object-oriented approach to non-uniform cluster computing. SIGPLAN Not. 40, 519–538 (2005)
de Buffon, Georges-Louis Leclerc Comte: Essai da’rithme’tique morale, Histoire naturelle generale et particuliere, Supplement, 4, 685 (1777)
Dunfield, J.: A unified system of type refinements, Ph.d thesis, Carnegie Mellon University (2007)
Ebcioglu, K., Saraswat, V., Sarkar, V.: X10: Programming for hierarchical parallelism and non-uniform data access. In: International Workshop on Language Runtimes OOPSLA (2004)
Emoto, K., Zhenjiang, H., Kakehi, K., Matsuzaki, K., Takeichi, M.: Generators-of-generators library with optimization capabilities in fortress. Euro-Par 2, 26–37 (2010). https://doi.org/10.1007/978-3-642-15291-7_4
Fowler, M.: Domain-Specific Languages. Addison-Wesley, London (2010)
Jiang, L., Su, Z.: Osprey: a practical type system for validating dimensional unit correctness of C programs. In: 28th International Conference on Software Engineering (ICSE ’06), pp. 262–271. ACM, New York (2006)
Kennedy, A.: Programming Languages and Dimensions. Ph.d Thesis, St Catharines College (1995)
Kennedy, A.: Types for units-of-measure: theory and practice. In: Central European Functional Programming School, pp. 268–305. Springer, Berlin, Heidelberg (2009)
McCalpin, J.D.: STREAM Benchmark. http://www.cs.virginia.edu/stream/
Multiresolution Languages for Portable yet Efficient Parallel Programming, Bradford L. Chamberlain, whitepaper (2007)
NAS Parallel Benchmarks. http://www.nas.nasa.gov/publications/npb.html
Nurkiewicz, T.: Scala traits implementation and interoperability (2013)
Ryu, S.: Parsing fortress syntax, In: 7th International Conference on Principles and Practice of Programming in Java (PPPJ ’09), pp. 76–84. ACM, New York (2009)
Steinberg, D., et al.: EMF: Eclipse Modeling Framework 2.0, 2nd edn. Addison-Wesley Professional, ISBN: 0321331885 (2009)
Sun MicroSystems Inc.: The fortress language specification (2008)
Voelter, M., et al.: DSL Engineering-Designing. Implementing and Using Domain-Specific Languages, 1–558 dslbook.org, ISBN: 978-1-4812-1858-0 (2013)
Xtend Language homepage. http://www.xtend-lang.org
Xtext homepage. http://www.eclipse.org/Xtext/
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
The authors’ names are listed in alphabetical order.
Rights and permissions
About this article
Cite this article
Anand, A.S., Sayani, K. & Shyamasundar, R.K. Fortress Abstractions in X10 Framework. Int J Parallel Prog 49, 911–933 (2021). https://doi.org/10.1007/s10766-021-00719-w
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-021-00719-w