
Overview
AMD has a long-standing track record of collaboration with open software development communities and continues to support the open source ecosystem. In addition to providing innovative advances in computing platforms, AMD has teams dedicated to building or enhancing open source tools and technologies to help software developers code faster for faster code.
Contributions
AMD CodeAnalyst Performance Analyzer for Linux®
AMD CodeAnalyst Performance Analyzer for Linux is an open source, front-end graphical user interface to Oprofile. The graphical user interface simplifies the process of collecting performance data and enhances data analysis, and shows profiles in both tabular and chart form. Users can drill down from system-level processes and modules to source code or instructions. AMD CodeAnalyst also supports Instruction-Based Sampling (IBS), a new performance measurement technique available on AMD Family 10h processors.
Aparapi
Aparapi is an API for expressing data parallel workloads in Java and a runtime component capable of converting the Java bytecode of compatible workloads into OpenCL™ so that it can be executed on a variety of GPU devices.
CodeSleuth Profiler
CodeSleuth is an Eclipse plug-in that allows developers to access these performance counters and relate them back to Java source. This tool enables you to track counter information from raw address locations, through the machine code emitted by Java Virtual Machines (JVMs), and back to the Java source. Once you identify the location of performance issues in the Java source, you can modify the code to improve application performance.Best of all, CodeSleuth works on all x86 platforms, not just AMD systems.
Embedded Technologies
AMD Embedded Solutions give designers ample flexibility to design scalable, x86- based, low-cost and feature-rich products, and drive energy conservation into their systems without compromising application performance or compatibility, graphics performance or features. AMD supports a wide range of products and technologies for Embedded solutions including AMD64 Embedded Processors, AMD M690T/E + SB600, RS780E + SB710, AMD 785E + SB8xx, Discrete GPUs and Geode LX processing technologies. AMD Embedded also supports the Linux Open Source and coreboot communities with public documentation, contributions to the community, publically available reference boards and example code.
FlickrNet Contribution
FlickrNet is an open source routine that implements the flickr API. AMD submitted modificationsto Flickr.cs, UploadProgressEvent.cs, and Lockfile.cs for use in the AMD Fusion Media Explorer for a better user experience.
GCC & GNU Tools
AMD’s contributions to GNU projects help enable developers using GCC to best leverage today’s architectures and to help future-proof current software products.AMD works closely with Red Hat, Novell, and the Free Software Foundation to ensure that the GCC versions included in their distributions contain optimized RPMs that take advantage of the latest features in AMD platforms.In addition, AMD also provides optimized RPMs for select versions of GCC, available for direct download.
Google Unladen Swallow
The Unladen Swallow project is an optimization branch of CPython, which focuses on speeding the execution of Python code, via a custom virtual machine with a JIT build on top of LLVM.AMD contributes performance optimizations for this important runtime.
Graphics Drivers
AMD provides programming guides, developer support, and significant code contribution to the X/DRI open source graphics drivers. The open source drivers cover all of the ATI Radeon discrete and integrated graphics products, and allow Linux, BSD, and Solaris distributions to provide out-of-box support for AMD’s powerful and versatile graphics products.
Linux Kernel
AMD’s Operating System Research Center (OSRC) contributes to the core Linux kernel by providing enablement for AMD processors.
OpenJDK
AMD has made several contributions to the OpenJDK project focusing on performance improvements and performance analysis.By improving JVM performance, finding ways to make Java work better across multi-core environments, dealing with data concurrency more efficiently, and handling garbage collection more effectively, we are building performance advantages directly into Java tools and environments, making developers’ jobs easier.
OpenCL Emulator-Debugger (ocl-emu)
The OpenCL Emulator-Debugger is an open source project created by AMD that allows developers to compile and debug OpenCL kernels as C++ procedures with the full support of Microsoft® Visual Studio® C++ development and debugging environtments.
OProfile
OProfile is a system-wide profiler for Linux systems. The OSRC maintains the kernel, and at times submits patches to fix issues. AMD CodeAnalyst for Linux is based on OProfile.
Perfmon2
Perfmon2 is a hardware-based performance monitoring interface for Linux. The OSRC submits patches to add support for new CPU features.
PTLsim
PTLsim is an open-source full-system simulator that provides a detailed out-of-order core. The OSRC currently maintains the stable upstream version. We also use PTLsim for implementing AMD’s Advanced Synchronization Facility (ASF) and provide a released version containing ASF support: PTLsim-ASF.
QEMU
QEMU is the user-space component for Linux’s KVM hypervisor. All virtualization code that doesn’t need to be in the kernel has to be submitted to upstream QEMU. QEMU is also a crucial component of the Xen hypervisor. AMD has contributed multi-core guest support, -cpu host support to propagate native CPUID bits to the guest, NUMA support for guests, support for new AMD instructions (SSE4a, popcnt) in the emulator, reworking of CPUID code for more accurate emulation, and the userspace part for cross-vendor migration.
Tapper
Tapper is a new open source tool to help QA departments maintain a complete test life cycle from planning to execution and reporting.
x86info
x86info is a CPU identification utility for Linux. The OSRC adds patches to support new AMD CPUs.
x86 Open64 Compiler Suite
The x86 Open64 compiler system is a high performance, production quality code generation tool designed for high performance parallel computing workloads.This compiler system offers a high level of advanced optimizations, multi-threading, and processor support that includes global optimization, vectorization, interprocedural analysis, feedback directed optimizations, loop transformations, and code generation which extracts the optimal performance from each x86 processor core.
Xen™ Virtual Machine Monitor
The OSRC supports and maintains both the base hypervisor (running on bare metal AMD hardware) and its SVM-using component.
XML RPC
XML-RPC is a Remote Procedure Calling protocol that works over the Internet. An XML-RPC message is an HTTP-POST request. The body of the request is in XML. A procedure executes on the server and the value it returns is also formatted in XML. AMD contributed code that disabled remote RPC calls.
XvBA SDK and Tools
X-Video Bitstream Acceleration (XvBA) is AMD’s video acceleration API for Linux. It allows Linux applications to take advantage of the UVD engine in AMD GPUs to accelerate video decoding.
The XvBA SDK contains the header file and XvBA Specification.
XvBA Tools is a library and small suite of tools for demonstrating use of XvBA.
Open Source Projects of Note from Outside of AMD
OTOO
OTOO is a performance optimized particle simulation code that is based on the octree method for heterogeneous systems. Main applications of OTOO are astrophysical simulations such as N-body models and the evolution of a violent merger of stars. OTOO was used for modeling a merger of two white dwarf stars. It was found that OTOO is powerful and practical to simulate the fate of the process.
SnuCL
SnuCL is an OpenCL framework that extends the original OpenCL semantics to the heterogeneous cluster environment. The target cluster consists of a single host node and multiple compute nodes. They are connected by an interconnection network, such as Gigabit and InfiniBand switches. The host node contains multiple CPU cores and each compute node consists of multiple CPU cores and multiple GPUs. For such clusters, SnuCL provides an illusion of a single heterogeneous system for the programmer.
VexCL
VexCL is vector expression template library for OpenCL. It has been created for ease of C++ based OpenCL development. Multi-device (and multi-platform) computations) are supported.