Hotlist > Developer > Management

AMD CodeAnalyst Helps Developers Optimize and Tune Applications

AMD CodeAnalyst helps developers find and fix performance issues by showing where an application is spending most of its processing time.  




fact sheet
Vendor: Advanced Micro Devices, Inc. (www.amd.com)

Vendor's Information:
About AMD CodeAnalyst Performance Analyzer

About AMD


Everyone likes when the software they are using for work or play runs cleanly and quickly, so they can focus on the task at hand, not software performance. And developers that can identify and repair performance issues in their software code before it's released can produce cleaner, more efficient code that results in a better experience for end users.

Software performance tuning can be a tricky area, however. Software developers who tweak their code trying to optimize their application can sometimes slow down the application, said Paul Drongowski, Senior Member of Technical Staff at AMD.

To help developers cope with this process of trial and error, AMD offers AMD CodeAnalyst Performance Analyzer, a performance analysis tool suite that can analyze any software component running on a processor. CodeAnalyst helps developers find and fix performance issues by showing where an application is spending most of its processing time.

CodeAnalyst can be downloaded for free by registered members of AMD Developer Central.

CodeAnalyst works like a scientific instrument to help make the process of performance tuning easier. It helps developers with each of the steps to finding and fixing performance issues: measuring performance, identifying hot spots that consume the most execution time, and diagnosing the issue.

CodeAnalyst uses system-wide profiling to collect data on the performance of software components, including user mode application modules and kernel mode driver modules, as they run. After CodeAnalyst profiles an application or other software component, it presents the data it collected in tabular or graphical form.

Timer-Based Profiling collects samples at predetermined intervals when a program is being analyzed and can be used to identify possible bottlenecks, execution penalties, or optimization opportunities. CodeAnalyst can do Timer-Based Profiling on any machine with an Advanced Programmable Interrupt Controller (APIC).

Event-Based Profiling profiles the hardware performance events across AMD's processor families including AMD Athlon™, AMD Opteron™ (family 10h, including quad and six-core processors), AMD Turion™ (family 11h), and AMD Phenom™ processor families (family 10h, including triple-core processors). It uses an event multiplexing technique to profile more than four events during a test run.

Instruction-Based Sampling (IBS) uses a hardware feature unique to AMD that allows developers to see deeper and get a better understanding of what their code is doing. IBS is a performance measurement technique supported by AMD Family 10h processors. It collects a wide range of hardware event information in a single measurement run.

IBS precisely associates hardware event information with the instructions that causes the events. It associates a data cache miss, for example, with the AMD64 instruction performing the memory read or write operation that caused the miss. IBS helps software developers to locate performance issues with pin-point accuracy.

CodeAnalyst is available for both Windows and Linux platforms. While the analytical capabilities of the Windows and Linux versions are slightly different, both versions share the same GUI and a common look and feel. Developers working on code for both platforms have a very small learning curve when switching from one version to the other, Drongowski said.

On Windows, CodeAnalyst supports Windows XP, Windows Vista, Windows 2003, Windows Server 2008, and for developers it's fully integrated into Visual Studio 2005 and Visual Studio 2008.

The latest Windows version of CodeAnalyzer (version 2.9) comes with an API that allows developers to build custom tools. Drongowski calls the API, which collects and reads the profile data, a major advance because it opens CodeAnalyst up so developers can build on the infrastructure and use their imagination to build tools to perform new kinds of performance analysis.

The Thread Profiling feature in the Windows version of CodeAnalyzer shows developers where the program is executing on different cores of a multi-core processor. Armed with information on how much parallelism they're exploiting, developers can then break the program into new threads if necessary. In a Non-Uniform Memory Architecture (NUMA), the Thread Profile shows non-local memory accesses. Developers can then use the data to improve the data layout of their application to use the faster local memory access if it's needed.

Thread Profiling in CodeAnalyst is just one way that AMD supports developers working on multi-threaded applications. AMD Developer Central also has performance libraries that contain a broad array of routines and functions designed to save development time and effort and many are multithreaded already.

The latest Windows version of CodeAnalyst also features the ability to add a customized note to each profile session so developers can track essential details about the session.

The most recent CodeAnalyst version for Linux (version 2.8) is available as open source code or via a pre-built RPM available for Red Hat Enterprise Linux, Fedora, Novell SUSE Linux, or Open SUSE. AMD is working to make CodeAnalyst part of future Linux distributions.

The Linux version of CodeAnalyst is built on OProfile, an open source system-wide profiler. Any improvements AMD makes to the OProfile code are put back into the OProfile project.

Developers who choose to build CodeAnalyst from the source code, such as those using Ubuntu or other distributions without an RPM, will find the build process is much easier in version 2.8 than in earlier versions.

CodeAnalyst has a broad range of existing users in the developer community, ranging from game developers to developers creating financial services applications. AMD does its part making it easy to get started with CodeAnalyst, thanks to the free download and a plethora of resources on AMD Developer Central, including a CodeAnalyst discussion forum and a Hard-Core Software Optimization Blog.

   
Rate This Content:
Low     High
4 after 6 ratings