PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenCL: FFT code von AMDs neuer APP lib


Frizz
2010-12-24, 12:20:50
Hallo,

ich würde gerne den FFT code aus AMDs neuer APP lib verwenden. Da ich allerdings nicht das ganze API + dll verwenden will, sondern nur den OpenCL code, dachte ich ich lass mir den Kernel in eine Datei ausgeben und rufe ihn dann so auf.

Rumpfprogramm steht. Kernel File ist auch da. Nur weiß ich nicht genau wie, wie oft, mit welchen Parametern, ich diesen Kernel für ein 32K FFT aufrufen muss.

Speziell diese cb_t structure verstehe ich nicht. Anscheinend wird nur ein Feld ("u") wirklich benützt: uint last_row = 128 * cb[1].u;

Frage an Euch: Hat jemand mit dem AMD Code schon herumexperimentiert? Wie muß ich den Kernel für ein 32K FFT aufrufen?


...
typedef union {
float f;
uint u;
int i;
} cb_t;

__attribute__((reqd_work_group_size(64,1,1)))
__kernel void
fft_fwd(
__constant cb_t *cb __attribute__((max_constant_size(32))),
__global float2 *gcomplx_in,
__global float2 *gcomplx_out)
{

__local float lds[1024];
__global float2 * gpc;
uint tbase;
...

del_4901
2010-12-24, 14:48:53
Das ist ne Union und keine Struct, schau dir mal die Unterschiede an, dann verstehst du schon.

Frizz
2010-12-24, 15:37:45
Damit weiß ich immer noch nicht mit welchen Parametern ich den Kernel aufrufen muß.

Gipsel
2010-12-26, 17:04:10
Damit weiß ich immer noch nicht mit welchen Parametern ich den Kernel aufrufen muß.
Ohne daß ich mir das angeschaut habe, aber gibt es da kein Beispiel für, anhand dessen man verfolgen kann, welche Parameter wie übergeben werden müssen?

Frizz
2010-12-27, 01:57:34
Ohne daß ich mir das angeschaut habe, aber gibt es da kein Beispiel für, anhand dessen man verfolgen kann, welche Parameter wie übergeben werden müssen?

Leider nein. AMD hat das, anders als z.B. Apple, in eine Lib verpackt. Den Source Code kann man leider nicht einsehen.

Es gibt eben nur die Möglichkeit sich den generierten Kernel Code in eine Datei ausgeben zu lassen. Allerdings weiß man dann immer noch nicht, wie oft und mit welchen Parametern der Kernel aufgerufen werden muss.

Ich hab mal den Kernel mit angehängt.

Ich suche, wie gesagt, die Aufrufparameter für eine 32K FFT.