AMD
Advanced Micro Devices, Inc. (AMD) is an American multinational semiconductor company based in Santa Clara, California, that develops computer processors and related technologies for business and consumer markets. While it initially manufact ...
CodeAnalyst is a
GUI
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
-based code
profiler for
x86 and
x86-64
x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
-based machines. CodeAnalyst has similar look and feel on both
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
and
Microsoft Windows platforms. CodeAnalyst uses specific hardware profiling techniques which are designed to work with AMD processors, as well as a timer-based profiling technique which does not require specific hardware support; this allows a subset of profiling features to work on non-AMD processors, such as
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the devel ...
processors.
As of March 2013, CodeAnalyst has been replaced by
AMD CodeXL
CodeXL (formerly AMD CodeXL) was an open-source software development tool suite which included a GPU debugger, a GPU profiler, a CPU profiler, Graphics frame analyzer and a static shader/kernel analyzer.
CodeXL was mainly developed by AMD. With ...
.
Code optimization
CodeAnalyst is built on
OProfile
In computing, OProfile is a system-wide statistical profiling tool for Linux. John Levon wrote it in 2001 for Linux kernel version 2.4 after his M.Sc. project; it consists of a kernel module, a user-space daemon and several user-space tools.
De ...
for the Linux platform and is available as a free download. The GUI assists in various kinds of
code profiling including time based profiling, hardware event-based profiling, instruction-based profiling and others. This produces statistics about details such as time spent in each
subroutine
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions ma ...
which can be
drilled down to the source code or
instruction level. The time taken by the instructions can be indicative of stalls in the
pipeline
Pipeline may refer to:
Electronics, computers and computing
* Pipeline (computing), a chain of data-processing stages or a CPU optimization found on
** Instruction pipelining, a technique for implementing instruction-level parallelism within a s ...
during instruction execution. Optimization could be as simple as reordering the instructions for maximum utilization of a data line cache or altering/removing the
branches
A branch, sometimes called a ramus in botany, is a woody structural member connected to the central trunk of a tree (or sometimes a shrub). Large branches are known as boughs and small branches are known as twigs. The term ''twig'' usually ...
and
loops so that the maximum number of execution units(Load/Store units,
ALU
ALU, Alu or alu may refer to:
Computing and science
;Computing
*Arithmetic logic unit, a digital electronic circuit
;Biology
* Alu sequence, a type of short stretch of DNA
*'' Arthrobacter luteus'', a bacterium
Organizations
* Abraham Lincoln ...
,
FP execution unit...) are utilized in parallel.
Support for
PERF was added in CodeAnalyst 3.4, allowing users to choose between OProfile and PERF as the profiling backend.
Instruction-Based Sampling
CodeAnalyst supports IBS (Instruction-Based Sampling) that was introduced in Family 10h AMD processors (Barcelona). With IBS support, CodeAnalyst can more precisely identify instructions that cause pipeline stalls and cache misses.
Open-source
The Linux version of CodeAnalyst is available under
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ulti ...
2.0.
AMD CodeAnalyst Performance Analyzer for Linux
/ref>
CodeAnalyst also uses other open-source components, including the Qt framework
Qt (pronounced "cute") is cross-platform software for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded syst ...
, libdwarf, libelf, and the Binary File Descriptor library
The Binary File Descriptor library (BFD) is the GNU Project's main mechanism for the portable manipulation of object files in a variety of formats. , it supports approximately 50 file formats for some 25 instruction set architectures.
History
W ...
.
See also
* AMD uProf
*Intel VTune
VTune Profiler (formerly VTune Amplifier) is a performance analysis tool for x86 based machines running Linux or Microsoft Windows operating systems. Many features work on both Intel and AMD hardware, but advanced hardware-based sampling require ...
*AMD CodeXL
CodeXL (formerly AMD CodeXL) was an open-source software development tool suite which included a GPU debugger, a GPU profiler, a CPU profiler, Graphics frame analyzer and a static shader/kernel analyzer.
CodeXL was mainly developed by AMD. With ...
* List of performance analysis tools
This is a list of performance analysis tools for use in software development.
General purpose, language independent
The following tools work based on log files that can be generated from various systems.
* time (Unix) - can be used to determi ...
References
External links
* https://web.archive.org/web/20120204112454/http://developer.amd.com/tools/CodeAnalyst/Pages/default.aspx
{{AMD graphics
AMD software
Free software programmed in C++
Free system software
Profilers
Software that uses Qt