Computational & Technology Resources
an online resource for computational,
engineering & technology publications
Civil-Comp Proceedings
ISSN 1759-3433
CCP: 101
PROCEEDINGS OF THE THIRD INTERNATIONAL CONFERENCE ON PARALLEL, DISTRIBUTED, GRID AND CLOUD COMPUTING FOR ENGINEERING
Edited by:
Paper 54

C++ Statically Typed Matrix in Parallel Application Programming

P.S. Rakic1, D.D. Milašinovic2, Z. Suvajdzin Rakic1, M. Hajdukovic1, Z. Zivanov1 and P. Maric1

1University of Novi Sad, Faculty of Technical Sciences, Novi Sad, Serbia
2University of Novi Sad, Faculty of Civil Engineering, Subotica, Serbia

Full Bibliographic Reference for this paper
, "C++ Statically Typed Matrix in Parallel Application Programming", in , (Editors), "Proceedings of the Third International Conference on Parallel, Distributed, Grid and Cloud Computing for Engineering", Civil-Comp Press, Stirlingshire, UK, Paper 54, 2013. doi:10.4203/ccp.101.54
Keywords: TML, statically typed matrix, MPI, C++, template meta programming, parallel programming.

Summary
In this paper, we argue that in the context of matrix implementation in a statically typed language, static typing is more appropriate than dynamic or hybrid; especially if the language provides features enabling efficient and elegant implementation, such as C++ does. Static typing is not perfect and cannot provide general guaranties for program correctness. Nevertheless, it can provide compile-time type verification and generally improve program robustness.

Program efficiency is important, especially in high performance computing. In recent years more attention has been paid to automatic assertion of program correctness and programmer friendly interfaces.

Message passing interface (MPI) is the de-facto standard for high performance message passing programs. In version 3, C++ binding were removed from the version with the explanation that it provides very little utility over C bindings. It is suggested that the C++ interface should be offered by the third party libraries that provide interfaces to MPI that better support modern C++ development styles: support for user defined and standard library data types, type inference and use of modern C++ techniques for maximum efficiency [1]. Boost.MPI [2] is a C++ MPI wrapper library often offered as example for direction in which the MPI C++ interface should be developed [3].

To enhance type safeness we developed a proof-of-concept statically typed library called TML [4]. In this paper we discuss the application of such a library in parallel programming, particularly in an MPI environment. The interface of the dimension type is extended to allow easy broadcasting of matrix dimensions. Type safe collective operations with TML matrices and Boost.MPI like interfaces are discussed. Execution speed measurements are offered as evidence that high level, type safe operations can be implemented without hindering efficiency.

References
1
J. Squyres, "The MPI C++ bindings: what does it mean to you?", URL, Oct 2012.
2
D. Gregor, M. Troyer, "Boost MPI Library", URL, Dec 2012.
3
D. Gregor, J. Squyres, A. Lumsdaine, "MPI for High-Level Languages", URL, Oct 2008, On the MPI-forum site.
4
P.S. Rakic, L. Stricevic, Z. Suvajdzin Rakic, "Statically typed matrix: in C++ library", in Proceedings of the Fifth Balkan Conference in Informatics, BCI 12, pages 217-222. ACM, New York, NY, USA, 2012,

purchase the full-text of this paper (price £20)

go to the previous paper
return to the table of contents
return to the book description
purchase this book (price £40 +P&P)