The Open Source Libraries available for download here have been optimized for AMD GPU technology and are created for use with applications using OpenCL™. They have been brought together here for your convenience, but each library may also be obtained from its Open Source repository.
GMAC eases the task of programming GPU systems by relieving programmers from the burden of tracking which processor (i.e., CPU or GPU) has most recently modified a data structures, and by handling all of the OpenCL™ data manipulation so that both CPUs and GPUs may the access the data structures in a coherent way. A major consequence, and advantage, of the GMAC memory model is elimination of memory copy calls (e.g., clEnqueueReadBuffer() /clEnqueueWrite- Buffer()) in applications source code by removing the explicit data transfers.
On AMDs APUs, GMAC automatically selects the optimal data transfer path between the CPU and the GPU based on the application memory access patterns. For more information read the GMAC user manual included with the download. GMAC is also available here and on bitbucket
Task Manager is a user level library that supports task scheduling and load balancing across multiple OpenCL™ devices to create highly efficient applications by exploiting all of the resources of heterogeneous multi-core system. Task Manager provides a mechanism for heterogeneous applications to schedule tasks with arbitrary granularity on the CPU and GPU cores according to task dependencies and priorities.
With TM you can:
- Submit C/C++ tasks to the scheduler
- Submit GPU’s tasks that are written using OpenCL™
- Submit complex tasks that can run on either CPU or GPU
- Leverage popular parallel algorithms such as parallel_for, pipeline, splitgrid, etc.
- Exploit the full capability of the system using TM tasks APIs rather than by writing multi-threaded code.
- Gain accelerated performance by using load balancing policies
Using TM, a developer does not need to directly address:
- How/when to select an appropriate device to run a task
- How/when to balance tasks among CPUs and GPUs
For more information read the TM documentation included with the download. TM is also available on bitbucket.