MCPcopy Create free account
hub / github.com/clMathLibraries/clFFT / GenerateKernel

Method GenerateKernel

src/library/generator.stockham.cpp:3200–4470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3198 };
3199
3200 void GenerateKernel(std::string &str, cl_device_id Dev_ID)
3201 {
3202 std::string twType = RegBaseType<PR>(2);
3203 std::string rType = RegBaseType<PR>(1);
3204 std::string r2Type = RegBaseType<PR>(2);
3205
3206 bool inInterleaved; // Input is interleaved format
3207 bool outInterleaved; // Output is interleaved format
3208 inInterleaved = ( (params.fft_inputLayout == CLFFT_COMPLEX_INTERLEAVED) ||
3209 (params.fft_inputLayout == CLFFT_HERMITIAN_INTERLEAVED) ) ? true : false;
3210 outInterleaved = ( (params.fft_outputLayout == CLFFT_COMPLEX_INTERLEAVED) ||
3211 (params.fft_outputLayout == CLFFT_HERMITIAN_INTERLEAVED) ) ? true : false;
3212
3213 // use interleaved LDS when halfLds constraint absent
3214 bool ldsInterleaved = inInterleaved || outInterleaved;
3215 ldsInterleaved = halfLds ? false : ldsInterleaved;
3216 ldsInterleaved = blockCompute ? true : ldsInterleaved;
3217
3218 bool inReal; // Input is real format
3219 bool outReal; // Output is real format
3220 inReal = (params.fft_inputLayout == CLFFT_REAL) ? true : false;
3221 outReal = (params.fft_outputLayout == CLFFT_REAL) ? true : false;
3222
3223 size_t large1D = 0;
3224 if(params.fft_realSpecial)
3225 large1D = params.fft_N[0] * params.fft_realSpecial_Nr;
3226 else
3227 large1D = params.fft_N[0] * params.fft_N[1];
3228
3229 // Pragma
3230 str += ClPragma<PR>();
3231
3232 // Twiddle table
3233 if(length > 1)
3234 {
3235 TwiddleTable twTable(length);
3236
3237 str += "\n__constant ";
3238 str += twType; str += " ";
3239 str += TwTableName();
3240 str += "["; str += SztToStr(length-1); str += "] = {\n";
3241 twTable.GenerateTwiddleTable<PR>(radices, str);
3242 str += "};\n\n";
3243 }
3244 str += "\n";
3245
3246 // twiddle factors for 1d-large 3-step algorithm
3247 if(params.fft_3StepTwiddle)
3248 {
3249 TwiddleTableLarge twLarge(large1D);
3250 twLarge.GenerateTwiddleTable<PR>(str);
3251 }
3252
3253 std::string sfx = FloatSuffix<PR>();
3254
3255 // Base type
3256 str += "#define fptype "; str += RegBaseType<PR>(1); str += "\n\n";
3257

Callers 1

generateKernelMethod · 0.45

Calls 12

TwTableNameFunction · 0.85
SztToStrFunction · 0.85
PassNameFunction · 0.85
GetRadixMethod · 0.80
GetNumB1Method · 0.80
GenerateButterflyMethod · 0.80
GetNumB2Method · 0.80
GetNumB4Method · 0.80
GeneratePassMethod · 0.80
GetPositionMethod · 0.80
OffsetCalcFunction · 0.70
clearMethod · 0.45

Tested by

no test coverage detected