Factors for large radices network. Head info: facbuf[0] = stage_num; facbuf[1] = _n; Stages info: facbuf[5 * stage_num + 0] = r; facbuf[5 * stage_num + 1] = section_num; facbuf[5 * stage_num + 2] = out_stride; facbuf[5 * stage_num + 3] = in_stride; facbuf[5 * stage_num + 4] = small_factors_offset;
| 853 | // facbuf[5 * stage_num + 3] = in_stride; |
| 854 | // facbuf[5 * stage_num + 4] = small_factors_offset; |
| 855 | mluOpStatus_t MLUOP_WIN_API fftTwoStepFactor(mluOpHandle_t handle, |
| 856 | mluOpFFTPlan_t fft_plan, |
| 857 | const int _n, int *facbuf, |
| 858 | const int is_row_major, |
| 859 | const int factor_type) { |
| 860 | mluOpStatus_t status = MLUOP_STATUS_SUCCESS; |
| 861 | int n = _n; |
| 862 | int r, in_stride, section_num, stage_num = 0, out_stride = 1; |
| 863 | |
| 864 | int large_radix = 1; |
| 865 | int large_count = 1; |
| 866 | int small_factors_offset = 22 * 5; |
| 867 | int max_nram_size = handle->nram_size + REM_FOR_STACK - 32 * 1024; |
| 868 | while (n > 1) { |
| 869 | if (is_row_major) { |
| 870 | if (max_nram_size >= NRAM_SIZE_370) { |
| 871 | switch (_n) { |
| 872 | case (200): |
| 873 | r = 200; |
| 874 | break; |
| 875 | |
| 876 | case (600): |
| 877 | r = 600; |
| 878 | break; |
| 879 | |
| 880 | case (256): |
| 881 | r = 256; |
| 882 | break; |
| 883 | |
| 884 | case 1024: |
| 885 | if (n % 32 == 0) { |
| 886 | r = 32; |
| 887 | } |
| 888 | break; |
| 889 | |
| 890 | case 2048: |
| 891 | if (n % 64 == 0) { |
| 892 | r = 64; |
| 893 | } else if ((n % 32) == 0) { |
| 894 | r = 32; |
| 895 | } |
| 896 | break; |
| 897 | |
| 898 | case 6000: |
| 899 | if (n % 300 == 0) { |
| 900 | r = 300; |
| 901 | } else if ((n % 20) == 0) { |
| 902 | r = 20; |
| 903 | } |
| 904 | break; |
| 905 | |
| 906 | case 7000: |
| 907 | if (n % 280 == 0) { |
| 908 | r = 280; |
| 909 | } else if ((n % 25) == 0) { |
| 910 | r = 25; |
| 911 | } |
| 912 | break; |
nothing calls this directly
no outgoing calls
no test coverage detected