White Shaarks

Multicore Software Development Kit

by kawaldeep on Jul.08, 2009, under Latest Web Technologies

Multicore architectures have become very popular. To take full advantage of such processor architectures, developers have to begin parallelism in their software. Developing parallel software is hard and error prone. Different types of tools to deal with concurrency related bugs are required to support the application development process.

The Multicore Software Development Kit (MSDK) for Java is a set of tools that developers can use to test, debug and analyze applications targeted for multicore hardware systems. These tools are capable of analyzing various concurrency related problems in the applications which take place due to different types of memory and synchronization errors. Also, the MSDK contains tools to do lock analysis and synchronization coverage analysis. Writing scalable and high-performance applications requires detailed analysis and profiling tools to help point out problem areas in the code. The MSDK provides tools to do profiling of all layers of the application execution stack.

How does it work?

The tools included in the Multicore SDK comprise of both static and dynamic analysis tools. The following are the set of tools included in MSDK V2.0:

Synchronization Coverage Analysis: A testing tool to figure out whether the different synchronization primitives used in the application code is doing something useful, or whether it is redundant. It is a dynamic tool which uses on-the-fly byte code rewriting techniques to instrument the application.

Orange Box Analysis: Useful for debugging program crashes. It provides the last few (configurable) read/write standards of variables by each thread. This is a dynamic analysis tool which uses on-the-fly byte code rewriting techniques to instrument the application.

Race Detection Tool: A debugging tool to detect data races in the application code. This is a dynamic analysis tool which uses on-the-fly byte code rewriting techniques to instrument the application.

Deadlock Detection Tool: A debugging tool to find deadlocks (and potential deadlocks) in the application code. This is a dynamic study tool that uses on-the-fly byte code rewriting techniques to instrument the application.

Lock Status Report: Very useful for debugging concurrent applications. It provides details about which thread holds, and which lock waits for a lock, and at what point in the code. This is a dynamic tool which uses on-the-fly byte code instrumentation.

MHP Analysis: A static analysis tool. It does a may-happen-in-parallel analysis and provides the statements that can implement in parallel. This analysis can be used in conjunction with the Race detector tool to reduce overheads and improve performance.

Performance Analysis Tool: A detailed performance analysis tool to figure out performance bottlenecks. It instruments the absolute application execution stack. Monitoring of the hardware performance counters, various system calls, operating system thread switches, various Java virtual machine functions and user application can be performed. Detailed profiling data can be visualized during application execution and can also be stored to do post-mortem analysis.


One comment to “Multicore Software Development Kit”

  1. Andy

    Coverity (http://www.coverity.com) has an interesting set of concurrency detection tools in both C/C++ and Java. They use both static analysis and dynamic analysis to detect deadlocks and race conditions.

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...