@@ -63,9 +63,8 @@ def register_linker(name, linker):
6363# If a string is passed as the optimizer argument in the constructor
6464# for Mode, it will be used as the key to retrieve the real optimizer
6565# in this dictionary
66- exclude = []
67- if not config .cxx :
68- exclude = ["cxx_only" ]
66+
67+ exclude = ["cxx_only" , "BlasOpt" ]
6968OPT_NONE = RewriteDatabaseQuery (include = [], exclude = exclude )
7069# Even if multiple merge optimizer call will be there, this shouldn't
7170# impact performance.
@@ -346,6 +345,11 @@ def __setstate__(self, state):
346345 optimizer = predefined_optimizers [optimizer ]
347346 if isinstance (optimizer , RewriteDatabaseQuery ):
348347 self .provided_optimizer = optimizer
348+
349+ # Force numba-required rewrites if using NumbaLinker
350+ if isinstance (linker , NumbaLinker ):
351+ optimizer = optimizer .including ("numba" )
352+
349353 self ._optimizer = optimizer
350354 self .call_time = 0
351355 self .fn_time = 0
@@ -443,16 +447,20 @@ def clone(self, link_kwargs=None, optimizer="", **kwargs):
443447# string as the key
444448# Use VM_linker to allow lazy evaluation by default.
445449FAST_COMPILE = Mode (
446- VMLinker (use_cloop = False , c_thunks = False ),
447- RewriteDatabaseQuery (include = ["fast_compile" , "py_only" ]),
450+ NumbaLinker (),
451+ # TODO: Fast_compile should just use python code, CHANGE ME!
452+ RewriteDatabaseQuery (
453+ include = ["fast_compile" , "numba" ],
454+ exclude = ["cxx_only" , "BlasOpt" , "local_careduce_fusion" ],
455+ ),
456+ )
457+ FAST_RUN = Mode (
458+ NumbaLinker (),
459+ RewriteDatabaseQuery (
460+ include = ["fast_run" , "numba" ],
461+ exclude = ["cxx_only" , "BlasOpt" , "local_careduce_fusion" ],
462+ ),
448463)
449- if config .cxx :
450- FAST_RUN = Mode ("cvm" , "fast_run" )
451- else :
452- FAST_RUN = Mode (
453- "vm" ,
454- RewriteDatabaseQuery (include = ["fast_run" , "py_only" ]),
455- )
456464
457465NUMBA = Mode (
458466 NumbaLinker (),
@@ -565,6 +573,7 @@ def register_mode(name, mode):
565573 Add a `Mode` which can be referred to by `name` in `function`.
566574
567575 """
576+ # TODO: Remove me
568577 if name in predefined_modes :
569578 raise ValueError (f"Mode name already taken: { name } " )
570579 predefined_modes [name ] = mode
0 commit comments