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;
...
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;
...