Skip to content

WIP: OpenBLAS results detector #125

@ghost

Description

import traceback

from scipy.linalg import lapack
from scipy.linalg import basic

def patch_get_lapack_funcs(get_lapack_funcs):

    def patched_get_lapack_funcs(*args, **kw):
        patched_funcs = []
        try:
            lapack_funcs = list(get_lapack_funcs(*args, **kw))
            is_iterable = True
        except TypeError:
            lapack_funcs = [get_lapack_funcs(*args, **kw)]
            is_iterable = False
        for lapack_func in lapack_funcs:
            def make_patched_lapack_func(lapack_func):
                def patched_lapack_func(*args, **kw):
                    # TODO: Verify closure capture
                    result = lapack_func(*args, **kw)
                    traceback.print_stack()
                    print('Result '+ repr(result))

                    return result

                return patched_lapack_func

            patched_funcs.append(make_patched_lapack_func(lapack_func))

        if is_iterable:
            return tuple(patched_funcs)
        else:
            return patched_funcs[0]

    return patched_get_lapack_funcs

lapack.get_lapack_funcs = patch_get_lapack_funcs(lapack.get_lapack_funcs)
basic.get_lapack_funcs = lapack.get_lapack_funcs


from scipy.linalg.tests.test_basic import TestSolve

t = TestSolve()
t.setup_method()
t.test_random()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions