Project 69: Virtual Machines Virtual machine technology provides significant potential advantages for portability and reproducibility of numerical results across a wide range of underlying host architectures. Examples of such environments are the Java Virtual Machine and the .NET environment, along with the corresponding Java and C# languages. Of concern to WG 2.5 are the performance of scientific software in such environments, as well as the tools provided to facilitate the development and maintenance of mathematical software. WG 2.5 provided input to and support for the Numerics Working Group of the Java Grande Forum during the period 1998-2003. Since that time the Working Group has continued to monitor progress of numerical software in Java and C#. --------------------------------------------------------------------- Oxford 1996: ============ The people are: Hanson, Vouk, Grosse, Ford, Hemker, and Gentleman. The description will be prepared by Ford, Gentleman, Grosse, and Hanson. Patras 1998: ============ Java (Numerical Concerns) ------------------------- Boisvert led a wide ranging discussion of the various groups and organisations now discussing changes to Java (some of which have significant implications for the numerical community). In particular the Java Numerics WG and the Java Grande Forum are two groups who are considering changes to the language and, if we monitor/participate in their discussions, we could have an effect on the outcome. The aggressive timetable of these meetings requires that our participation be 'off-line' and interactive as many of the recommendations of these groups are due in a matter of months. Key issues that were identified and discussed included: Complex Arithmetic - The need for a mechanism whereby complex arithmetic could be efficiently implemented. Efficient use of local Hardware - The trade-offs between 'bitwise reproduceability' and efficiency. Arrays - Improvements to multidimensional array handling. Transcendentals - Better definitions and specifications for the transcendental functions. Boisvert agreed to circulate a position paper on the key issues and would like support and comments from the WG. Later in the meeting the WG agreed to write a letter in support of Boisvert's activities and to endorse his participation on the various Java committees. Purdue 1999: ============ Report on Java Grande Forum --------------------------- Boisvert presented an extensive overview of the numerical issues being discussed and the mandate of the JGF. (For details see the website http://math.nist.gov/javanumerics/ ). Ottawa 2000: ============ Boisvert reported on Java activities and the NIST Digital Library of Mathematical Functions. He presented a summary of recent developments related to Java and Java Numerics in particular. See the JGF website http://math.nist.gov/javanumerics/ for the latest information. Resolution on Java Numerics Support ----------------------------------- The WG passed a resolution strongly endorsing Ron Boisvert's continuing participation in the Java Numerics meetings and activities. The resolution (which passed unanimously) was: "WG 2.5 continues to strongly support the efforts of the Numerics Working Group (NWG) of the Java Grande Forum to represent the interests of the numerical software community in the evolution of the Java language and its environment." Amsterdam 2001: =============== A discussion of recent activities of Java Numerics and of the activities of Java Grande Forum was led by Boisvert. Sun has responded to some of the concerns raised by these groups so it was felt that we should continue to participate in these and related activities. Java Benchmarks --------------- Boisvert presented a summary of recent investigations related to accuracy and cost of numerical methods implemented in Java. Inherent performance penalties associated with representing small objects (such as complex numbers) were noted. One effect is the creation of numerous temporary objects, whose garbage collection can overwhelm a computation. It was pointed out that on a recent VM some scientific benchmarks were achieving levels comparable to those achieved with C, but performance penalties (by a factor of up to 50) are still found on some VMs. Portland 2002: ============= Boisvert presented a detailed report on some recent activities of this project. The activity has been focused on the meetings of the Java Grande Forum and their attempt to clarify/improve the standard to obtain clear function semantics. In particular requests have been submitted to allow multi-dimensional arrays, and FMAs (fused multiply/add). There currently is some reluctance of companies and government to become more actively involved because of ongoing litigation involving 'ownership' of Java. There is some hope that future changes to Java which are of interest to our community may be considered. Such changes include access to machine constants and the addition of new intrinsic mathematical functions. Gaffney's Technical talk "Optimization from a Java interface - Numerical methods framework" at the WG meeting can be considered to be a report also on activities related to this project Strobl 2003: ============ Boisvert presented a review of recent developments in this area. In particular he noted that the Java Grande forum was winding down. The technical issues have been identified and a resolution proposed but it is not clear whether they will be implemented. Recent activity in the C-Sharp community should be monitored as there seems to be an interest in advocating the use of this language for scientific computing. Washington 2004: ================ Boisvert presented at the meeting a review of recent developments in this area. In particular he noted that the Java Grande forum was now dormant. A JAVA Numerics web page http://math.nist.gov/javanumerics/ was still maintained at NIST. Ford discussed the need for JAVA wrappers for standard libraries. Pozo's talk at the Workshop is an example of the activities that are related to this project. Hong Kong 2005: =============== Ron Boisvert reported that the technical issues related to numerical computing and Java are largely solved. What remains to address is standardization issues. Boisvert also reported that there is a continuing interest for using Java for numerical computing. As an example, he showed that JAMA, a Java subset of Linpack, maintained by NIST, is being increasingly downloaded. There were ca. 4000 downloads in the year 2000, and ca. 14 000 downloads are expected in 2005. Finally, Boisvert reported on performance figures of 614 MFlops for the Java version of the NIST SciMark benchmark under Sun VM 1.5 on Dual Opteron. Prescott 2006: ============== Boisvert presented a review of recent developments in this area. While some related forums have become dormant there are still some developments that should be monitored. Many of the significant issues seem to be political rather than technical. Nevertheless decisions made with respect to Java and other languages (such as C#) could have implications for our community. Vouk pointed out that other virtualization concepts are receiving attention and these should also be monitored. (An example is the notion of virtual 'services'.) Uppsala 2007: ============= This project remains active although there was no formal report. Several members are monitoring recent developments with respect to Java and other languages (such as C#). Toronto 2008: ============= This project remains active although there was no formal report. Raleigh 2009: ============= It was noted that virtualization is now a big deal, HPC in cloud computing. This project has recently been dormant, but some members felt that it could become relevant and should therefore remain as an active project. Leuven 2010: ============ Ron Boisvert made a short presentation. The topic is still important. Vouk pointed out that while virtual machines have become main stream, there are still related issues of interest for WG 2.5. Boulder 2011: ============= Although there was no report, members felt that this was still an active area of research and should remain an active project. Santander 2012: =============== There was no report on this project. Some felt that the project description needed to be updated and extended to include the relevance of Cloud Computing. Shanghai 2013: ============== There was no report on this project. Boisvert suggested that this topic may be fused with project 65. Some felt that the project description needed to be updated and extended to include the relevance of Cloud Computing. Vienna 2014: ============ Virtual machines have come of age. Originally introduced as technology to extend the life of otherwise obsolete code by emulating a particular computer's instruction set on a different platform, VMs were later extended to "machines" that existed only as a specification, such as the Java language and runtime environment. In the latter case the goal was to enable portability and reproducibility of results. Today, operating-system-level virtualization is an important enabling component of cloud computing. While an important tool for portability, virtual machines can negatively impact performance, and hence VMs will continue to provide both opportunities and risks for numerical software. While working Group 2.5 is now formally closing its project on virtual machines, interest will continue within a proposed new project and working conference on scientific computing in the cloud.