Download ATI Stream Software Development Kit (SDK) v2.0

pipin

Administrator
Teammitglied
Mitglied seit
16.10.2000
Beiträge
24.368
Renomée
9.694
Standort
East Fishkill, Minga, Xanten
  • SIMAP Race
  • QMC Race
  • RCN Russia
  • Spinhenge ESL
  • Docking@Home
  • BOINC Pentathlon 2019
  • SETI@Home Intel-Race II
  • THOR Challenge 2020
  • BOINC Pentathlon 2021
  • BOINC Pentathlon 2023
AMD hat das ATI Stream Software Development Kit (SDK) v2.0 nun nach längerer Beta-Phase als Produktionsversion fertiggestellt. Das Kit unterstützt Entwickler bei der Erstellung von Software auf Basis der <a href="http://www.amd.com/stream" target="b">ATI Stream Technologie</a>.

Neben der Unterstützung von OpenCl 1.0 bietet man auch den Ausblick auf Funktionen wie die Interoperabilität von OpenCL und OpenGL:
<blockquote>"Interoperability between OpenCL™ and OpenGL®allows developers to pass computed data from an OpenCL™ kernel directly to the OpenGL® programming interface for rendering on the display. By passing the data directly to the OpenGL® programming interface, the developer can avoid unnecessary transferring of data across the PCIe® link, potentially resulting in improved overall application performance."</blockquote>

<b>What’s New in v2.0:</b>

<blockquote> * First production release of ATI Stream SDK with OpenCL™ 1.0 support.

* New: Support for OpenCL™ ICD (Installable Client Driver). Please see this <a href="http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71" target="b">knowledge base article</a> for important information concerning changes that must be made to code developed with previous beta releases of the ATI Stream SDK v2.0.

* New: Support for atomic functions for 32-bit integers.

* New: Microsoft® Visual Studio® 2008-integrated <a href="http://developer.amd.com/gpu/StreamProfiler/Pages/default.aspx" target="b">ATI Stream Profiler</a> performance analysis tool.

* Preview: Support for OpenCL™ / OpenGL® interoperability. Please see <a href="http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=84" target="b">this knowledge base article</a> for more information about this preview feature.

* Preview: Support for OpenCL™ / Microsoft® DirectX® 10 interoperability. Please see <a href="http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=85" target="b">this knowledge base article</a> for more information about this preview feature.

* Preview: Support for double-precision floating point basic arithmetic in OpenCL™ C kernels. Please see <a href="http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=88" target="b">this knowledge base article</a> for more information about this preview feature.

* Updated OpenCL™ runtime to conditionally load ATI CAL runtime libraries to allow execution on compatible CPUs without ATI Catalyst™ installed.

* Updated OpenCL™ runtime to allow simultaneous use of OpenCL™ and ATI CAL APIs in a single user application.

* Updated cl.hpp from the Khronos OpenCL working group release.

* Various OpenCL™ compiler and runtime fixes and enhancements (see <a href="http://www.planet3dnow.de/vbulletin/attachment.php?attachmentid=17375&stc=1&d=1261468940">developer release notes</a> for more details).</blockquote>

Das ATI Stream Software Development Kit (SDK) v2.0 ist für Linux, Windows XP, Windows Vista und Windows 7 erhältlich und kann nach einer Registrierung bei AMD Developer Central heruntergeladen werden.


<b>Download:</b> <a href="http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx#five" target="b">ATI Stream Software Development Kit (SDK) v2.0</a>
 
Anscheinend wird nun zumindest Preview-Mäßig auch Double-Precision unterstützt, das wird die BOINC-Entwickler freuen...
Also, wo bleiben die OpenCL-BoinC-Apps? ;)
 
Könnte es sein, dass das meine Entdeckungen hier:
http://www.planet3dnow.de/vbulletin/showthread.php?p=4103764#post4103764

bestätigt, und OpenCL Befehle nicht via CAL abgearbeitet werden?
Nein. OpenCL läuft immer noch über die Intermediate Language, was ein Teil von CAL ist. Die ganze Optimierung der Kernels macht erst der CAL-Compiler, der den IL-Code in die Instruktionen für die GPU übersetzt. Es läuft also so:

OpenCL-Kernel ->[OpenCL-Compiler] -> IL-Kernel -> [CAL-Compiler] -> Hardware-Instruktionen
Anscheinend wird nun zumindest Preview-Mäßig auch Double-Precision unterstützt, das wird die BOINC-Entwickler freuen...
Also, wo bleiben die OpenCL-BoinC-Apps? ;)
Da fehlt noch die dringend benötigte Image-Erweiterung, um auf die Daten über die Texture-Einheiten zugreifen zu können. Ohne die Texture-Caches wäre z.B. Milkyway merklich und Collatz deutlich (ich will gar nicht wissen, wieviel) langsamer.

Allerdings ist mit dem SDK2 auch eine vorläufge Dokumentation für die Evergreens draußen. Da sind doch einige neue Befehle hinzugekommen. Für MW wird es nichts bringen, aber Collatz könnte vielleicht auf Evergreens ein klein wenig schneller werden, wenn man es auf die neuen Karten anpaßt (für das Handling von großen Integern gibt es einen neuen Befehl, der den Übertrag bei der Addition bestimmt, im Prinzip ein Carry-Flag). Das muß ich mir aber noch mal genauer ansehen.
 
Nein. OpenCL läuft immer noch über die Intermediate Language
Was heißt noch?
Wird OpenCL mal direkt auf den Hardware-Instruktionen laufen?

@Gipsel
Unterstützt ATI Stream Software Development Kit (SDK) v2.0 schon alles beim OpenCl 1.0???
Oder fehlt da noch was wie Double-Precision oder sonst was?

Wenn ich es richtig verstanden habe, dann kann man jetzt mit diesem Werkzeug Software schreiben bzw. bestehende Software umschreiben und wie lange dauert das?

Sorry, die naive Fragen, aber da habe ich noch keinen Überblick.
Vorallem wäre es interessant, wenn du mal erzählst, wie hinten-Nach eigentlich ATI jetzt noch mit ATI Stram SDK v2.0 im Vergleich zu Cuda jetzt bzw. Cuda 3.0 mit Fermi ist????????????????????????????
 
Für die, die es interessiert, hier mal alle OpenCL Infos meiner HD5870 die ich nach Installation des RTM SDKs erhalte:

OpenCL device information for device-ID 00F8CC00

Vendor: Advanced Micro Devices, Inc. (VendorID: 4098)
Name: Cypress (available / compiler: available)

Type: GPU

OpenCL software driver version: CAL 1.4.515
supported OpenCL version (FULL_PROFILE): OpenCL 1.0 ATI-Stream-v2.0.0

general information
associated with platform-ID: 00C51434
compute units (cores): 20 @ 900 MHz (max)
error correction support: no
profiling timer resolution: 1 ns

supported OpenCL extensions (in Beta-4 wurden noch keine unterstüzt)
cl_khr_global_int32_base_atomics
cl_khr_global_int32_extended_atomics
cl_khr_local_int32_base_atomics
cl_khr_local_int32_extended_atomics

parallel computing capabilities
max work-items in a work-group (aka work-group size): 256
max work-items in dimension 1 of the work-group: 256
max work-items in dimension 2 of the work-group: 256
max work-items in dimension 3 of the work-group: 256

memory resources information - general
address space size: 32 bits (little endian)

global memory size: 256 MB
global memory cache type supported: read / write
global memory cache size: 0 Bytes
global memory cache line size: 0 Bytes

local memory supported: yes
local memory size: 32 KB (war mit der Beta-4 noch auf 16KB begrenzt)

smallest alignment for any data type: 128 Bytes

memory resources information - buffers
base address alignment of allocated objects: 32768 Bits
max allocation size: 256 MB
max constant buffer allocation size: 64 KB

memory resources information - images
images support: no

command-queue properties
out-of-order execution mode enabled: no
queue-profiling enabled: yes

kernels information
execute OpenCL kernels: yes
execute native kernels: no
max constant kernel arguments: 8
max kernel arguments size: 1024 Bytes

single precision floating-point capabilities
denorms: no
INF and quiet NaNs: yes
round to nearest: yes
round to zero: no
round to +ve and -ve infinity: no
IEEE754-2008 fused multiply-add: no

preferred vector width size for built-in scalar types
scalar elements per vector (char): 16
scalar elements per vector (short): 8
scalar elements per vector (int): 4
scalar elements per vector (long): 2
scalar elements per vector (float): 4
scalar elements per vector (double): 0 (0 = no cl_khr_fp64 support)
<opencl device="" information="" for="" device-id="" 00f8cc00=""><general information=""><supported opencl="" extensions="">
<memory resources="" information="" -="" general=""><memory resources="" information="" -="" buffers=""><memory resources="" information="" -="" images=""><command-queue properties=""><kernels information=""><single precision="" floating-point="" capabilities="">
So wie ich das sehe gibt es noch keinen offiziellen OpenCL Double-Precission Support (bisher wird die entsprechende Extension nicht angeboten).

Dia
</single></kernels></command-queue></memory></memory></memory></supported></general></opencl>
 
Da fehlt noch die dringend benötigte Image-Erweiterung, um auf die Daten über die Texture-Einheiten zugreifen zu können. Ohne die Texture-Caches wäre z.B. Milkyway merklich und Collatz deutlich (ich will gar nicht wissen, wieviel) langsamer.
upps, hast recht, die hatte ich ganz vergessen... blöd dass das caching nur auf diesem Weg funktioniert....
Allerdings ist mit dem SDK2 auch eine vorläufge Dokumentation für die Evergreens draußen. Da sind doch einige neue Befehle hinzugekommen. Für MW wird es nichts bringen, aber Collatz könnte vielleicht auf Evergreens ein klein wenig schneller werden, wenn man es auf die neuen Karten anpaßt (für das Handling von großen Integern gibt es einen neuen Befehl, der den Übertrag bei der Addition bestimmt, im Prinzip ein Carry-Flag). Das muß ich mir aber noch mal genauer ansehen.
Interessant, aber das bringt dir ja nur was wenn du direkt CAL programmierst, oder?
OpenCL ist ja spezifiziert (alles andere wäre ja auch ein Hindernis bei der Portabilität) da kann AMD nicht mal eben nen anderen Datentyp oder Befehl hinzufügen...
 
Für die, die es interessiert, hier mal alle OpenCL Infos meiner HD5870 die ich nach Installation des RTM SDKs erhalte:
Interessant.
Sind das alle OpenCL 1.0 Features, die von SDK 2,0v teils unterstützt teils nicht unterstützt werden, oder sind das alle, die SDK 2,0v unterstützt???

Sieht eher als, als ob das allle OpenCL 1.0 Features wäre, die von SDK 2.0v noch nicht unterstützt werden.
Was mir auffällt.
IEEE754-2008 fused multiply-add: no
Ich glaube, das ist gar nicht so unwichtig.
Bzw. das einzige was mir jetzt bekannt vorkommt, was immer das ist.
 
Was heißt noch?
Wird OpenCL mal direkt auf den Hardware-Instruktionen laufen? ...
Warum?

OpenCL ist eine abstrakte Sprache, die für allerlei Chips gedacht ist.

Was die Maschinensprache auf den Chips angeht, so ist das sehr unterschiedlich und ändert sich auch bei den gleichen Firmen von Prozessorgeneration zu Prozessorgeneration.

MFG Bobo(2009)
 
Interessant.
Sind das alle OpenCL 1.0 Features, die von SDK 2,0v teils unterstützt teils nicht unterstützt werden, oder sind das alle, die SDK 2,0v unterstützt???

Sieht eher als, als ob das allle OpenCL 1.0 Features wäre, die von SDK 2.0v noch nicht unterstützt werden.
Was mir auffällt.
IEEE754-2008 fused multiply-add: no
Ich glaube, das ist gar nicht so unwichtig.
Bzw. das einzige was mir jetzt bekannt vorkommt, was immer das ist.

Das sind Abfragen über OpenCL, also die wirklich von der HW unterstützten Sachen bzw. die nicht unterstützten.

Dia
 
OpenCL 1.0 wird vollständig unterstützt.
OpenCL 1.0 beinhaltet DP nicht! Es kann aber via Extensions von den Herstellern bereitgestellt werden.


MfG @
 
Interessant, aber das bringt dir ja nur was wenn du direkt CAL programmierst, oder?
Für MW und Collatz sind die aufwendigen Kernel direkt in IL geschrieben ;)
So wie ich das sehe gibt es noch keinen offiziellen OpenCL Double-Precission Support (bisher wird die entsprechende Extension nicht angeboten).
Die Grundrechenarten in double Precision werden ohne offiziellen Support als "Preview" unterstützt (im Prinzip der Zustand wie in Brook+). Die komplette Unterstützung mit den entsprechenden Funktionen soll irgendwann nachgereicht werden.
Was mir auffällt.
IEEE754-2008 fused multiply-add: no
Ich glaube, das ist gar nicht so unwichtig.
Bzw. das einzige was mir jetzt bekannt vorkommt, was immer das ist.
Die Hardware kann das aber, habe ich schon mal testen lassen (habe keine HD5000er- Karte). Wenn man in IL die FMA-Befehle reinschreibt (die waren damals noch undokumentiert), werden die auf Evergreens auch ausgeführt. Das wird eben noch nicht über OpenCL unterstützt, sprich, der OpenCL-Compiler kann noch nicht entsprechenden IL-Code erzeugen, der CAL-Compiler kann damit aber bereits umgehen. Das wird wohl (wie auch die Image-Erweiterung) irgendwann nächstes Jahr nachgeliefert.
 
Zurück
Oben Unten