Beispiel #1
0
def register_symbol_manglers(kernel, manglers):
    from loopy.tools import unpickles_equally

    new_manglers = kernel.symbol_manglers[:]
    for m in manglers:
        if m not in new_manglers:
            if not unpickles_equally(m):
                raise LoopyError("mangler '%s' does not "
                                 "compare equally after being upickled "
                                 "and would disrupt loopy's caches" % m)

            new_manglers.insert(0, m)

    return kernel.copy(symbol_manglers=new_manglers)
Beispiel #2
0
def register_symbol_manglers(kernel, manglers):
    from loopy.tools import unpickles_equally

    new_manglers = kernel.symbol_manglers[:]
    for m in manglers:
        if m not in new_manglers:
            if not unpickles_equally(m):
                raise LoopyError("mangler '%s' does not "
                        "compare equally after being upickled "
                        "and would disrupt loopy's caches"
                        % m)

            new_manglers.insert(0, m)

    return kernel.copy(symbol_manglers=new_manglers)
Beispiel #3
0
def register_function_manglers(kernel, manglers):
    """
    :arg manglers: list of functions of signature ``(kernel, name, arg_dtypes)``
        returning a :class:`loopy.CallMangleInfo`.
    :returns: *kernel* with *manglers* registered
    """
    from loopy.tools import unpickles_equally

    new_manglers = kernel.function_manglers[:]
    for m in manglers:
        if m not in new_manglers:
            if not unpickles_equally(m):
                raise LoopyError("mangler '%s' does not "
                                 "compare equally after being upickled "
                                 "and would disrupt loopy's caches" % m)

            new_manglers.insert(0, m)

    return kernel.copy(function_manglers=new_manglers)
Beispiel #4
0
def register_function_manglers(kernel, manglers):
    """
    :arg manglers: list of functions of signature ``(kernel, name, arg_dtypes)``
        returning a :class:`loopy.CallMangleInfo`.
    :returns: *kernel* with *manglers* registered
    """
    from loopy.tools import unpickles_equally

    new_manglers = kernel.function_manglers[:]
    for m in manglers:
        if m not in new_manglers:
            if not unpickles_equally(m):
                raise LoopyError("mangler '%s' does not "
                        "compare equally after being upickled "
                        "and would disrupt loopy's caches"
                        % m)

            new_manglers.insert(0, m)

    return kernel.copy(function_manglers=new_manglers)
def register_preamble_generators(kernel, preamble_generators):
    """
    :arg manglers: list of functions of signature ``(preamble_info)``
        generating tuples ``(sortable_str_identifier, code)``,
        where *preamble_info* is a :class:`PreambleInfo`.

    :returns: *kernel* with *manglers* registered
    """
    from loopy.tools import unpickles_equally

    new_pgens = kernel.preamble_generators[:]
    for pgen in preamble_generators:
        if pgen not in new_pgens:
            if not unpickles_equally(pgen):
                raise LoopyError("preamble generator '%s' does not "
                        "compare equally after being upickled "
                        "and would thus disrupt loopy's caches"
                        % pgen)

            new_pgens.insert(0, pgen)

    return kernel.copy(preamble_generators=new_pgens)
Beispiel #6
0
def register_preamble_generators(kernel, preamble_generators):
    """
    :arg manglers: list of functions of signature ``(preamble_info)``
        generating tuples ``(sortable_str_identifier, code)``,
        where *preamble_info* is a :class:`PreambleInfo`.

    :returns: *kernel* with *manglers* registered
    """
    from loopy.tools import unpickles_equally

    new_pgens = kernel.preamble_generators[:]
    for pgen in preamble_generators:
        if pgen not in new_pgens:
            if not unpickles_equally(pgen):
                raise LoopyError("preamble generator '%s' does not "
                        "compare equally after being upickled "
                        "and would thus disrupt loopy's caches"
                        % pgen)

            new_pgens.insert(0, pgen)

    return kernel.copy(preamble_generators=new_pgens)