|
28 | 28 | | Procedures are required for SDC DataFrameType handling in Numba |
29 | 29 | ''' |
30 | 30 |
|
31 | | -import sdc |
32 | | - |
33 | | - |
34 | | -def sdc_dataframepassimpl_overload(*args, **kwargs): |
35 | | - """ |
36 | | - This is a pointer intended to use as Numba AnnotateTypes run_pass() function |
37 | | - A hook made to overload Numba function and: |
38 | | - - call original function |
39 | | - - call hiframes.dataframe_pass.DataFramePass |
40 | | - - call compiler.PostprocessorPass |
41 | | - - call hiframes.hiframes_typed.HiFramesTypedPass |
42 | | -
|
43 | | - return True if any passes mutated original Numba IR |
44 | | -
|
45 | | - This function needs to be removed if SDC DataFrame support |
46 | | - no more needs Numba IR transformations via DataFramePass |
47 | | - """ |
48 | | - |
49 | | - if sdc.config.numba_typed_passes_annotatetypes_orig is None: |
50 | | - """ |
51 | | - Unexpected usage of this function |
52 | | - """ |
53 | | - |
54 | | - return False |
55 | | - |
56 | | - status_numba_pass = sdc.config.numba_typed_passes_annotatetypes_orig(*args, **kwargs) |
| 31 | +from numba.untyped_passes import InlineClosureLikes |
| 32 | +from numba.typed_passes import AnnotateTypes |
57 | 33 |
|
58 | | - numba_state_var = args[1] |
59 | | - |
60 | | - status_dataframe_pass = sdc.hiframes.dataframe_pass.DataFramePassImpl(numba_state_var).run_pass() |
61 | | - status_postprocess_pass = sdc.compiler.PostprocessorPass().run_pass(numba_state_var) |
62 | | - status_dataframe_typed_pass = sdc.hiframes.hiframes_typed.HiFramesTypedPassImpl(numba_state_var).run_pass() |
63 | | - |
64 | | - is_ir_mutated = status_numba_pass or status_dataframe_pass or status_postprocess_pass or status_dataframe_typed_pass |
| 34 | +import sdc |
65 | 35 |
|
66 | | - return is_ir_mutated |
67 | 36 |
|
68 | | -def sdc_hiframespassimpl_overload(*args, **kwargs): |
| 37 | +def sdc_nopython_pipeline_lite_register(state, name='nopython'): |
69 | 38 | """ |
70 | | - This is a pointer intended to use as Numba InlineClosureLikes run_pass() function |
71 | | - A hook made to overload Numba function and: |
72 | | - - call compiler.InlinePass |
73 | | - - call hiframes.hiframes_untyped.HiFramesPass |
74 | | - - call original function |
| 39 | + This is to register some sub set of Intel SDC compiler passes in Numba NoPython pipeline |
| 40 | + Each pass, enabled here, is expected to be called many times on every decorated function including |
| 41 | + functions which are not related to Pandas. |
75 | 42 |
|
76 | | - return True if any passes mutated original Numba IR |
| 43 | + Test: SDC_CONFIG_PIPELINE_SDC=0 python -m sdc.runtests -k sdc.tests.test_series.TestSeries.test_series_sort_values1 |
77 | 44 |
|
78 | 45 | This function needs to be removed if SDC DataFrame support |
79 | 46 | no more needs Numba IR transformations via DataFramePass |
80 | 47 | """ |
81 | 48 |
|
82 | | - if sdc.config.numba_untyped_passes_inlineclosurelikes_orig is None: |
83 | | - """ |
84 | | - Unexpected usage of this function |
85 | | - """ |
86 | | - |
87 | | - return False |
| 49 | + if sdc.config.numba_compiler_define_nopython_pipeline_orig is None: |
| 50 | + raise ValueError("Intel SDC. Unexpected usage of DataFrame passes registration function.") |
88 | 51 |
|
89 | | - numba_state_var = args[1] |
| 52 | + numba_pass_manager = sdc.config.numba_compiler_define_nopython_pipeline_orig(state, name) |
90 | 53 |
|
91 | | - status_inlinepass_pass = sdc.compiler.InlinePass().run_pass(numba_state_var) |
92 | | - status_hiframespass_pass = sdc.hiframes.hiframes_untyped.HiFramesPassImpl(numba_state_var).run_pass() |
| 54 | + # numba_pass_manager.add_pass_after(sdc.compiler.InlinePass, InlineClosureLikes) |
| 55 | + # numba_pass_manager.add_pass_after(sdc.hiframes.hiframes_untyped.HiFramesPass, sdc.compiler.InlinePass) |
| 56 | + numba_pass_manager.add_pass_after(sdc.hiframes.hiframes_untyped.HiFramesPass, InlineClosureLikes) |
93 | 57 |
|
94 | | - status_numba_pass = sdc.config.numba_untyped_passes_inlineclosurelikes_orig(*args, **kwargs) |
| 58 | + numba_pass_manager.add_pass_after(sdc.hiframes.dataframe_pass.DataFramePass, AnnotateTypes) |
| 59 | + numba_pass_manager.add_pass_after(sdc.compiler.PostprocessorPass, AnnotateTypes) |
| 60 | + # numba_pass_manager.add_pass_after(sdc.hiframes.hiframes_typed.HiFramesTypedPass, sdc.hiframes.dataframe_pass.DataFramePass) |
95 | 61 |
|
96 | | - is_ir_mutated = status_inlinepass_pass or status_hiframespass_pass or status_numba_pass |
| 62 | + numba_pass_manager.finalize() |
97 | 63 |
|
98 | | - return is_ir_mutated |
| 64 | + return numba_pass_manager |
0 commit comments