# Wie VLIW4/5 code erzeugen?



## thysol (12. Juli 2011)

Hi,
Ich habe einen OpenCL GPU Benchmark geschrieben der allerdings sehr schlecht auf Radeons laeuft. Wie nutze ich die 4/5D Shader aktueller Radeons? Momentan habe ich nur SIMD code:



> using System;
> using System.Collections.Generic;
> using System.ComponentModel;
> using System.Data;
> ...


_

Was muss ich aendern damit die 4/5D Shader aktueller Radeons voll ausgelastet werden?_


----------



## bingo88 (12. Juli 2011)

Ich bin jetzt mit AMD + OpenCL net so fit, aber ich meine mich zu erinnern, man müsste die Vektor-Datentypen (z. B. float4) nutzen.

```
float x[4];
...
float4 f4 = vload4(0, x); // 4 floats laden

// Zugriff mittels
f.x = ...;
f.y = ...;
f.z = ...;
f.w = ...;
```


----------



## Fragile Heart (12. Juli 2011)

Ich bin mir gerade nicht sicher, wollte das zwar immer mal auf ATI Karten versuchen, hatte bisher aber nie die Zeit oder Lust mir eine Karte zu kaufen, aber ich meine das die AMD Shader zum Teil gar nicht unabhängig sind. Würde bedeuten, dass viele Sachen in der Form kaum gehen. 

Die Modifikation von bingo macht schon Sinn, aber ob das geht, kann ich dir wirklich nicht sagen und aus Mangel an Hardware auch nicht mal schnell testen.


----------



## bingo88 (12. Juli 2011)

Ich bin mir schon relativ sicher, dass es in die Richtung gehen muss. Da ich aber auch nur ne NV-Karte habe (und nebenbei eh nur CUDA nutze), kann ich dir da keine first hand experience mitgeben. Ich mein die Geforce's haben ne skalare Architektur und können daher besser mit diesen einzelnen Datenhäppchen umgehen, während AMD mit VLIW Vektor-Pakete erwartet. Wenn du z.B. pro Schelifeniteration (pro Thread) nur 1 Wert verarbeitest, macht das der GF nix, die Radeon verliert allerdings Leistung, da 3 von 4 "Einheiten" nichts machen. Sorry wenn das jetzt was konfus formuliert ist...


----------



## thysol (13. Juli 2011)

Vielen Dank fuer eure Hilfe. Ich glaube ich lasse das mit dem VLIW4/5 code. Erstens steige ich bald auf Nvidia um und zweitens soll die naechste AMD GPU Generation auch eine SIMD Architektur sein.


----------



## Fragile Heart (13. Juli 2011)

Wobei SIMD an dieser Stelle nicht zwingend 1D Units bedeuten muss.


----------

