示例#1
0
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()
示例#2
0
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:
示例#3
0
# 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):
示例#4
0
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