"""Set a function to be called whenever a dictionary entry is changed. :arg callable: the function. The function receives two arguments, the key-value pair of updated entries.""" self._update_function = callable parameters = Parameters() """A nested dictionary of parameters used by Firedrake""" # The COFFEE default optimization level is O2 coffee_default_optlevel = "Ov" coffee_opts = Parameters("coffee", optlevel=coffee_default_optlevel) coffee_opts.set_update_function(lambda k, v: coffee_reconfigure(**{k: v})) parameters.add(coffee_opts) # Default to the values of PyOP2 configuration dictionary pyop2_opts = Parameters("pyop2_options", **configuration) pyop2_opts.set_update_function( lambda k, v: configuration.unsafe_reconfigure(**{k: v})) # Override values pyop2_opts["type_check"] = True # PyOP2 must know about the COFFEE optimization level chosen by Firedrake pyop2_opts["opt_level"] = coffee_default_optlevel parameters.add(pyop2_opts)
"""Set a function to be called whenever a dictionary entry is changed. :arg callable: the function. The function receives two arguments, the key-value pair of updated entries.""" self._update_function = callable parameters = Parameters() """A nested dictionary of parameters used by Firedrake""" # The COFFEE default optimization level is O2 coffee_default_optlevel = "O2" coffee_opts = Parameters("coffee", optlevel=coffee_default_optlevel) coffee_opts.set_update_function(lambda k, v: coffee_reconfigure(**{k: v})) parameters.add(coffee_opts) # Default to the values of PyOP2 configuration dictionary pyop2_opts = Parameters("pyop2_options", **configuration) pyop2_opts.set_update_function(lambda k, v: configuration.unsafe_reconfigure(**{k: v})) # Override values pyop2_opts["type_check"] = True # PyOP2 must know about the COFFEE optimization level chosen by Firedrake pyop2_opts["opt_level"] = coffee_default_optlevel parameters.add(pyop2_opts)