Intel will announce an update to its Parallel Studio development tools at next week’s Developer Forum. The update will include debugging support for Java and more reliable floating-point processes.
Intel’s Parallel Studio XE 2013 includes a host of improvements aimed at saving developers time when building and troubleshooting multi-threaded and parallel applications. James Reinders, director of software products and an evangelist for Intel Software, said that, traditionally, the Parallel Studio tools have focused on Fortran and C++.
“Java, to us, is something that shows up in applications,” he said. “It’s mixed in. Users want us to be able to tell them a little about that. Our tools do some of the debugging and find memory leak errors, and our performance tools have been extended to use Java. The Java runtimes today have hooks in them for performance tools to get info back. We can tell the computer is running something in the Java runtime. The users want to see which Java application was doing what. We’re able to do that now. We’ve had some Java support in the past, but it was always limited to one JVM.”
Now, he added, Intel’s Parallel Studio XE 2013 can attach to multiple JVMs running on the same system. That gives developers more flexibility to find problems that may exist across a Java application ecosystem.
But Parallel Studio XE 2013, and the company’s forthcoming HPC-focused Intel Cluster Studio XE 2013, both offer new capabilities for standard C++ and Fortran applications as well. Both software suites support C++11 and Fortran 2008, though there are still areas where said support is being filled in.
“No one has implemented C++11 and Fortran 2008 completely,” said Reinders. “We’re working very hard to implement features. We’re implementing them in order of customer feedback. We’ve made great strides, and we have most of C++11 and most of Fortran 2008 done, but we aren’t ready to say everything is done.”
Still, there are plenty of new features for users of the traditional versions of these languages as well. Chief among them is the new ability to lock floating-point numbers into place, to prevent variables from changing between application usage.
Reinders said this comes from “conditional numeric reproducibility. It’s about floating-point numbers. I think a lot of people don’t think about it: We were taught in school [that] addition and multiplication are associative. Well, they’re not associative if you do round off. Floating points are approximations. When you run programs multiple times, if it computes the math at all differently, you could get different results. They shake your ability to be confident your program is stable.
“So we’ve implemented things to allow the programmer to take control of that, and ask our libraries and compilers to ensure the same math is done every run. That comes with a performance penalty, and in practice it’s around 10% to 20%. Our customers are telling us the overhead is usually quite reasonable and having that reproducibility is valuable.”
Intel Parallel Studio XE 2013 is available in three versions: one for Fortran, one for C++ and one for both. The Fortran edition is US$1,899, the C++ edition is $1,599, and the mixed edition is $2,299. Later this year, Intel will ship Intel Cluster Studio XE 2013, which includes some additional tools targeted at the HPC market. Specifically, Intel Cluster Studio XE 2013 includes the new Intel Message Passing Interface library, as well as the Intel Trace Analyzer and Collector. Intel Cluster Studio XE 2013 will cost $2,949.
All of these new capabilities make Intel’s Parallel Studio a useful tool for finding difficult bugs in multi-threaded programs. One example of this is the new heap growth analysis available in this version. This new capability can be used to track down memory leaks.
“As people take programs and add parallelism to them, they find that they’re debugging a program that has concurrency, and that’s not easy,” said Reinders. “Problems can happen many different ways. Even if you make a simple programming error, in a program with thousands of threads, there’s so much that can happen, it’s difficult to envision where the source of the error is. We’ve extended traditional error-checking methods or made them work in parallel environments.
“The traditional definition of a memory leak is a piece of memory that was allocated, and all references and pointers to it are obliterated, and it was never released back to the OS, so it’s lost without any benefit to the application.
“Memory leak tools look at all memory and find lost memory. But there’s another case where a program’s logic has gone awry and it’s keeping memory and keeping pointers, so it’s not considered a leak. What we can do is give the user a number of intuitive tools to track how much heap usage they have at given points in time, and to look at if there’s steady growth happening.”