import logging import six import plaidml2.edsl as edsl from plaidml2.ffi import ffi, ffi_call, lib logger = logging.getLogger(__name__) def __init(): ffi_call(lib.plaidml_op_init) ffi.init_once(__init, 'plaidml_op_init') def op(op_name, args): value = edsl.Value(args) return edsl.Value( ffi_call(lib.plaidml_op_make, op_name.encode(), value.as_ptr())) def abs(x): return op('abs', [x]).as_tensor() def all(x, axis=None, keepdims=False): return op('all', [x, axis, keepdims]).as_tensor()
from collections import namedtuple import logging import six from plaidml2 import DType from plaidml2.ffi import ForeignObject, ffi, ffi_call, lib logger = logging.getLogger(__name__) def __init(): ffi_call(lib.plaidml_edsl_init) ffi.init_once(__init, 'plaidml_edsl_init') class LogicalShape(ForeignObject): __ffi_del__ = lib.plaidml_logical_shape_free __ffi_repr__ = lib.plaidml_logical_shape_repr def __init__(self, dtype=None, dims=[], ptr=None, layout=''): if ptr: ffi_obj = ptr elif dtype is not None: raw_dims = ffi.new('int64_t[]', [0 if x is None else x for x in dims]) ffi_obj = ffi_call(lib.plaidml_logical_shape_alloc, dtype, len(dims), raw_dims, layout.encode()) else:
# Copyright 2019 Intel Corporation. import numpy as np import plaidml2 as plaidml import plaidml2.settings as plaidml_settings from plaidml2.ffi import ForeignObject, decode_str, ffi, ffi_call, lib def __init(): ffi_call(lib.plaidml_exec_init) ffi.init_once(__init, 'plaidml_exec_init') def list_devices(): ndevices = ffi_call(lib.plaidml_device_list_count) raw_devices = ffi.new('plaidml_string*[]', ndevices) ffi_call(lib.plaidml_device_list, ndevices, raw_devices) return [decode_str(x) for x in raw_devices] def list_targets(): ntargets = ffi_call(lib.plaidml_target_list_count) raw_targets = ffi.new('plaidml_string*[]', ntargets) ffi_call(lib.plaidml_target_list, ntargets, raw_targets) return [decode_str(x) for x in raw_targets] class Executable(ForeignObject):
import numpy as np from plaidml2.core._version import PLAIDML_VERSION from plaidml2.ffi import Error, ForeignObject, ffi, ffi_call, lib def __init(): ffi_call(lib.plaidml_init) lib_version = ffi.string(ffi_call(lib.plaidml_version)).decode() if lib_version != PLAIDML_VERSION: raise EnvironmentError( 'Version mismatch. plaidml (python): {}, {} (C++): {}'.format( PLAIDML_VERSION, lib.lib_name, lib_version)) return PLAIDML_VERSION __version__ = ffi.init_once(__init, 'plaidml_init') @atexit.register def __shutdown(): ffi_call(lib.plaidml_shutdown) class DType(enum.IntEnum): """Describes the type of a tensor element.""" INVALID = 0 BOOLEAN = 2 INT8 = 0x10 INT16 = 0x11 INT32 = 0x12 INT64 = 0x13