MCPcopy Create free account
hub / github.com/Cambricon/mlu-ops / MLUOP_WIN_API calParallelNumLowBound

Function MLUOP_WIN_API calParallelNumLowBound

kernels/fft/fft.cpp:1176–1370  ·  view source on GitHub ↗

low bound

Source from the content-addressed store, hash-verified

1174
1175// low bound
1176mluOpStatus_t MLUOP_WIN_API calParallelNumLowBound(mluOpHandle_t handle,
1177 mluOpFFTPlan_t fft_plan,
1178 int *facbuf, const int stage,
1179 int &parallel_num_lb,
1180 const int is_row_major) {
1181 const size_t nram_space_size =
1182 (handle->nram_size + REM_FOR_STACK - 32 * 1024 - FFT_MAXFACTORS * 4);
1183 size_t workspace_size = 0;
1184 size_t reservespace_size = 0;
1185 const int max_radix = 64;
1186 size_t TYPE_SIZE = 0;
1187 parallel_num_lb = 0;
1188 size_t nram_space_need = 0;
1189 size_t nram_space_need_tw = 0;
1190 size_t nram_space_need_dftmtx =
1191 (stage == 1) ? max_radix * max_radix * 2 * 2 * 4
1192 : max_radix * max_radix * 2 * 4; // complex
1193 // int nram_space_need_dftmtx_align = 0;
1194 size_t space_need_matmul = 0;
1195 size_t space_need_matmul_tmp = 0;
1196 int small_stage_num = facbuf[0];
1197 int _n = facbuf[1];
1198 int radix = 0;
1199 int section_num = 0;
1200 int butterfly_num = 0;
1201 int para_num = 0;
1202 int K_num = 0;
1203 int align_M = 0;
1204 int align_K = 0;
1205 int align_N = 0;
1206
1207 mluOpStatus_t status;
1208
1209 switch (fft_plan->fft_type) {
1210 // r2c
1211 case CNFFT_COMPLEX_HALF2HALF:
1212 case CNFFT_COMPLEX_FLOAT2FLOAT:
1213 case CNFFT_HALF2COMPLEX_HALF:
1214 case CNFFT_FLOAT2COMPLEX_FLOAT: {
1215 TYPE_SIZE = 4;
1216 K_num = 64 / TYPE_SIZE;
1217
1218 if (stage == 1) {
1219 nram_space_need = 0;
1220 // nram_para_load_ping
1221 nram_space_need += _n * 2 * TYPE_SIZE; // complex
1222 // nram_para_load_pong
1223 nram_space_need += _n * 2 * TYPE_SIZE; // complex
1224 // nram_para_store_ping
1225 nram_space_need += _n * 2 * TYPE_SIZE; // complex
1226 // nram_para_store_pong
1227 nram_space_need += _n * 2 * TYPE_SIZE; // complex
1228
1229 nram_space_need += _n * 5 * TYPE_SIZE; // complex
1230 } else {
1231 nram_space_need = 0;
1232 // nram_para_load_ping
1233 nram_space_need += _n * 2 * TYPE_SIZE; // complex

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected