AMD hat für sein AMD Accelerated Parallel Processing (APP) Software Development Kit (SDK) v2.7 als erstes Unternehme die Konformität zum OpenCL-1.2-Standard von der Khronos Group bestätigt bekommen. Zwar steht das aktualisierte SDK bereits seit Mitte Mai zum Download bereit, allerdings stand die erfolgreiche Prüfung durch die Khronos Group noch aus. Zudem erleichtert die neue Version C++-Programmierern die Nutzung von OpenCL, da sie sich beispielsweise nicht länger um den notwendigen, aber recht umfangreichen Host Code kümmern müssen. Hierzu wurden die Erweiterungen C++ Wrapper API und OpenCL Static C++ Kernel Language implementiert. Entsprechend freut sich Manju Hegde, Corporate Vice President, Heterogeneous Applications and Developer Solutions, über die Erreichung dieses wichtigen Meilensteins:
Zitat: Manju Hegde
“AMD continues leading the OpenCL movement, as demonstrated with the release of our latest SDK featuring the industry’s first fully-conformant OpenCL 1.2 implementation. Our latest development tools empower developers to more easily harness the power of heterogeneous computing to help improve the user experience by making it easy to write applications that can take greater advantage of the compute capabilities of AMD’s leading CPUs, GPUs and APUs.”
Das AMD APP SDK ist AMDs Lösung zur Entwicklung parallelisierter Software auf Basis der OpenCL-Programmierplattform. Das SDK trug früher den Namen ATI Stream SDK, der aber im Zuge des Wegfalls der Marke ATI im Januar 2011 in AMD APP SDK geändert wurde. Die OpenCL Entwicklungsumgebung unterstützt nicht nur die hauseigenen GPUs ab der "Evergreen"-Generation, sondern auch alle aktuellen x86 CPUs (muss mindestens SSE2 beherrschen). Gegenüber den acht vorangegangenen Veröffentlichungen (2.0, 2.01, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6) hat AMD erneut weitere Features hinzugefügt (siehe Liste unten). Außerdem wurden Fehler in Compiler und Runtime behoben. Eine genaue Liste der behobenen und bekannten Probleme ist in den offiziellen Release Notes dokumentiert.
Seit der Version 2.0 des ATI Stream SDK setzt AMD voll und ganz auf die plattformunabhängige, offene Open Computing Language (OpenCL), während mit dem ATI Stream SDK 1.x noch die proprietäre Hochsprache Brook+ verwendet wurde, die AMD aber nicht mehr weiterentwickelt. Ab dem Stream SDK 2.2 wird auch der OpenCL 1.1 Standard unterstützt, zudem bietet AMD Unterstützung für eine Reihe von Extensions (Erweiterung zum OpenCL 1.2 Standard). Dazu gehört auch die optionale herstellerübergreifende Erweiterung cl_khr_fp64, welche Berechnungen mit doppelter Genauigkeit ermöglicht. Seit der Version 2.7 des APP SDKs wird cl_khr_fp64 vollständig auf allen GPUs unterstützt, die hardwareseitig dazu in der Lage sind. Hierzu gehören sämtliche GPUs aus der Southern-Islands-Generation, die Cayman-GPUs, die Cypress-GPUs, die Trinity-APUs und alle x86 CPUs. Eine komplette Liste der auf den einzelnen Prozessoren unterstützten Erweiterungen kann dem AMD APP OpenCL Programming Guide auf der Seite 211 entnommen werden.
Was ist neu?
The OpenCL 1.2 adds the following key capabilities
Host access flags for memory objects enable more efficient buffer handling and provide added protection. For example, a buffer that is created as “write only” cannot be read from the host.
Pattern based GPU buffer and image initialization can help eliminate need for certain buffer/image transfers
Memory objects migration supports transfer of buffers prior to need
New generalized image creation API
Enhanced image/buffer map operations
OpenCL 1.2 CPU device partition including partition of a CPU after addition to a context
Generalized 1D and 2D images, image arrays, and image<-> buffer interop
Libraries support including the separation of compile and link phases and the ability to compile
The C++ Wrapper API provide the following new capabilities
Defaults for platform, queue, device, etc. significantly reduce the amount of boilerplate code required
Improved simplified constructors for cl::Buffer and addition of cl::copy functions
Additional support of events when using functors
Notable C++ features that are supported by the OpenCL Static C++ Kernel language
Kernel and function overloading
Inheritance
Strict inheritance
Friend classes
Multiple inheritance
Templates:
Kernel templates
Member templates
Template default argument
Limited class templates (the “virtual” keyword is not exposed)
Partial template specialization
Namespaces
References
‘this’ operator
with external symbols
Kernel reflection, the ability to query a kernel’s arguments
Support for printf as a built in function
Additional features supported in SDK 2.7 and the Catalyst 12.4 drivers include:
Support for Asynchronous PCI transfers
Video encode using VCE Encode (Win7)
Open Encode update (12.4)
Cl_khr_fp64 is now supported on AMD Radeon HD 6900 series devices (“Cayman”)
Added OpenGL interoperability under Linux for AMD Radeon HD 7000 series devices
Stability Improvements
Performance improvements
Support for AMD Radeon HD 7000 series devices (“Southern Islands”) NPI
Support for AMD’s Second Generation APUs (“Trinity”)
Kernel Analyzer v1.12
APP Profiler v2.5
APP KernelAnalyzer v 1.12
Support for Catalyst revisions through 12.1 – 12.4.
APP Profiler v2.5 includes several key new features, including:
Support for OpenCL 1.2.
Support for collecting performance counters on APU devices.
Full support for profiling with AMD Radeon HD7000 series GPUs:
Added support for kernel occupancy analysis.Added support for collecting performance counters for DirectCompute (DirectX 11) applications.
Addition of SALUBusy counter.
Fixed value reported for VALUBusy counter.
The values reported for LDSFetchInsts and LDSWriteInsts counters were inaccurate on AMD Radeon HD7000 series GPUs; thus, for those GPUs, those two counters have been replaced by a single LDSInsts counter.
Fixed display of kernel ISA.
Improved OpenCL analysis module: added detection of deprecated OpenCL APIs.
Added support for showing source and destination location, as well as zero-copy status for memory transfers initiated using clEnqueueMapBuffer or clEnqueueMapImage, which is shown in the API Trace view.
Added support for Microsoft Visual Studio projects that use user-defined macros in the project settings.
Fixed the --workingdirectory (-w) command line switch (set current directory) on Linux.
Fixed some problems with importing previously generated profile results into Microsoft Visual Studio.
Changed the default installation directory on Windows to %PROGRAMFILES(X86)%\AMD\AMD APP Profiler for consistency with other AMD tools.
Stability improvements
APP ML 1.8
Support for real to complex FFT
Support for all functions in BLAS level 2 and BLAS level 3.
Diesen Artikel bookmarken oder senden an ...
