Other functionality#

Metadata (“tags”) for Arrays and Array Axes#

class arraycontext.metadata.NameHint(name: str)[source]#

A tag acting on arrays or array axes. Express that name is a useful starting point in forming an identifier for the tagged object.

name#

A string. Must be a valid Python identifier. Not necessarily unique.

ArrayContext-generating fixture for pytest#

class arraycontext.PytestArrayContextFactory[source]#
class arraycontext.PytestPyOpenCLArrayContextFactory(device)[source]#
__init__(device)[source]#
Parameters:

device – a pyopencl.Device.

__call__() ArrayContext[source]#

Call self as a function.

arraycontext.pytest_generate_tests_for_array_contexts(factories: Sequence[str | Type[PytestArrayContextFactory]], *, factory_arg_name: str = 'actx_factory') Callable[[Any], None][source]#

Parametrize tests for pytest to use an ArrayContext.

Using this function in pytest test scripts allows you to use the argument factory_arg_name, which is a callable that returns a ArrayContext. All test functions will automatically be run once for each implemented array context. To select specific array context implementations explicitly define, for example,

pytest_generate_tests = pytest_generate_tests_for_array_context([
    "pyopencl",
    ])

to use the pyopencl-based array context. For pyopencl-based contexts pyopencl.tools.pytest_generate_tests_for_pyopencl() is used as a backend, which allows specifying the PYOPENCL_TEST environment variable for device selection.

The environment variable ARRAYCONTEXT_TEST can also be used to overwrite any chosen implementations through factories. This is a comma-separated list of known array contexts.

Current supported implementations include:

Parameters:

factories – a list of identifiers or PytestPyOpenCLArrayContextFactory classes (not instances) for which to generate test fixtures.

arraycontext.pytest_generate_tests_for_pyopencl_array_context(metafunc) None[source]#

Parametrize tests for pytest to use a PyOpenCLArrayContext.

Performs device enumeration analogously to pyopencl.tools.pytest_generate_tests_for_pyopencl().

Using the line:

from arraycontext import (
     pytest_generate_tests_for_pyopencl_array_context
     as pytest_generate_tests)

in your pytest test scripts allows you to use the argument actx_factory, in your test functions, and they will automatically be run once for each OpenCL device/platform in the system, as appropriate, with an argument-less function that returns an ArrayContext when called.

It also allows you to specify the PYOPENCL_TEST environment variable for device selection.

Program creation for loopy#

arraycontext.make_loopy_program(domains, statements, kernel_data=None, name='mm_actx_kernel', tags=None)[source]#

Return a loopy.LoopKernel suitable for use with ArrayContext.call_loopy().