コード例 #1
0
ファイル: __init__.py プロジェクト: ucb-sejits/ctree
import _ctypes
import sys

from ctree.types import (
    codegen_type,
    register_type_recognizers,
    register_type_codegenerators,
)

#Py2 and Py3 common types

register_type_recognizers(
    {
        int: ctypes.c_long,
        bool: ctypes.c_bool,
        float: ctypes.c_double,
        str: lambda t: ctypes.c_char(t.encode()) if len(t) == 1 else ctypes.c_char_p(t.encode()),
        type(None): lambda t: None
    }
)

import sys

if sys.maxsize > 2 ** 32:
    X64_BIT = True
else:
    # Python alias c_int to c_long on 32 bit platforms
    X64_BIT = False

register_type_codegenerators({
    ctypes.c_short: lambda t: "short",
コード例 #2
0
import types
import ctypes
import _ctypes
import sys

from ctree.types import (
    codegen_type,
    register_type_recognizers,
    register_type_codegenerators,
)

if sys.version_info >= (3, 0):
    register_type_recognizers({
        int: lambda t: ctypes.c_long(t),
        bool: lambda t: ctypes.c_bool(t),
        float: lambda t: ctypes.c_double(t),
        str: lambda t: ctypes.c_char(str.encode(t)) if len(t) == 1 else
        ctypes.c_char_p(str.encode(t)),
        type(None): lambda t: None,
    })

    register_type_codegenerators({
        ctypes.c_int: lambda t: "int",
        ctypes.c_long: lambda t: "long",
        ctypes.c_float: lambda t: "float",
        ctypes.c_double: lambda t: "double",
        ctypes.c_char: lambda t: "char",
        ctypes.c_char_p: lambda t: "char*",
        ctypes.c_void_p: lambda t: "void*",
        ctypes.c_bool: lambda t: "bool",
        ctypes.c_ulong: lambda t: "size_t",
        type(None): lambda n: "void",
コード例 #3
0
ファイル: __init__.py プロジェクト: devvirus/CsvToJson
from ctree.types import (
    codegen_type,
    register_type_recognizers,
    register_type_codegenerators,
)


def codegen_ndptr(ndptr):
    prefix = ""
    if getattr(ndptr, "_global", False):
        prefix += "__global "
    return prefix + "%s*" % codegen_type(ndptr._dtype_.type())


register_type_recognizers(
    {np.ndarray: lambda obj: np.ctypeslib.as_ctypes(obj)})

register_type_codegenerators({
    # pointers
    np.ctypeslib._ndptr:
    codegen_ndptr,

    # boolean types
    np.bool8:
    lambda t: "bool",

    # signed integer types
    np.byte:
    lambda t: "char",
    np.short:
    lambda t: "short",
コード例 #4
0
ファイル: __init__.py プロジェクト: i-Zaak/ctree
import numpy as np

from ctree.types import (
    codegen_type,
    register_type_recognizers,
    register_type_codegenerators,
)

def codegen_ndptr(ndptr):
    prefix = ""
    if getattr(ndptr, "_global", False):
        prefix += "__global "
    return prefix + "%s*" % codegen_type(ndptr._dtype_.type())

register_type_recognizers({
    np.ndarray: lambda obj: np.ctypeslib.as_ctypes(obj)
})

register_type_codegenerators({
    # pointers
    np.ctypeslib._ndptr: codegen_ndptr,

    # boolean types
    np.bool8:            lambda t: "bool",

    # signed integer types
    np.byte:             lambda t: "char",
    np.short:            lambda t: "short",
    np.intc:             lambda t: "int",
    np.longlong:         lambda t: "long long",
コード例 #5
0
    import llvm.core

    llvm.core.load_library_permanently(libOpenCL)

except:
    log.warn("Failed to load OpenCL runtime.")

import pycl

from ctree.types import (
    codegen_type,
    register_type_recognizers,
    register_type_codegenerators,
)

register_type_recognizers({})

register_type_codegenerators({
    pycl.cl_context: lambda t: "cl_context",
    pycl.cl_command_queue: lambda t: "cl_command_queue",
    pycl.cl_kernel: lambda t: "cl_kernel",
    pycl.cl_mem: lambda t: "cl_mem",
})

devices_context_queue_map = {}


def get_context_and_queue_from_devices(devices):
    key = tuple(device.vendor_id for device in devices)
    try:
        return devices_context_queue_map[key]
コード例 #6
0
ファイル: __init__.py プロジェクト: mbdriscoll/ctree
    return prefix + "%s*" % codegen_type(ndptr._dtype_.type())

register_type_recognizers({
    np.ndarray: lambda obj: np.ctypeslib.as_ctypes(obj),
    np.bool8:            ct.c_bool,

    # signed integer types
    np.byte:             ct.c_char,
    np.short:            ct.c_short,
    np.intc:             ct.c_int,
    np.longlong:         ct.c_longlong,

    # technically not universally compatible
    np.int8:             ct.c_char,
    np.int16:            ct.c_short,
    np.int32:            ct.c_int,
    np.int64:            ct.c_long,

    # unsigned integer types
    np.ubyte:            ct.c_ubyte,
    np.ushort:           ct.c_ushort,
    np.uintc:            ct.c_uint,
    np.ulonglong:        ct.c_ulonglong,

    # floating point types
    np.single:           ct.c_float,
    np.float32:          ct.c_float,
    np.double:           ct.c_double,
    np.float64:          ct.c_double,
})

register_type_codegenerators({
コード例 #7
0
ファイル: __init__.py プロジェクト: ucb-sejits/ctree
from ctree.types import (
    codegen_type,
    register_type_recognizers,
    register_type_codegenerators,
)

#Py2 and Py3 common types

register_type_recognizers({
    int:
    ctypes.c_long,
    bool:
    ctypes.c_bool,
    float:
    ctypes.c_double,
    str:
    lambda t: ctypes.c_char(t.encode())
    if len(t) == 1 else ctypes.c_char_p(t.encode()),
    type(None):
    lambda t: None
})

import sys

if sys.maxsize > 2**32:
    X64_BIT = True
else:
    # Python alias c_int to c_long on 32 bit platforms
    X64_BIT = False
コード例 #8
0
ファイル: __init__.py プロジェクト: i-Zaak/ctree
log = logging.getLogger(__name__)
import ctree


if ctree.OCL_ENABLED:

    import pycl

    from ctree.types import (
        codegen_type,
        register_type_recognizers,
        register_type_codegenerators,
    )

    register_type_recognizers({
    })

    register_type_codegenerators({
        pycl.cl_context:        lambda t: "cl_context",
        pycl.cl_command_queue:  lambda t: "cl_command_queue",
        pycl.cl_kernel:         lambda t: "cl_kernel",
        pycl.cl_mem:            lambda t: "cl_mem",
    })


    devices_context_queue_map = {}


def get_context_and_queue_from_devices(devices):
    key = tuple(device.vendor_id for device in devices)
    try:
コード例 #9
0
ファイル: __init__.py プロジェクト: ucb-sejits/ctree
register_type_recognizers({
    np.ndarray:
    lambda obj: np.ctypeslib.as_ctypes(obj),
    np.bool8:
    ct.c_bool,

    # signed integer types
    np.byte:
    ct.c_char,
    np.short:
    ct.c_short,
    np.intc:
    ct.c_int,
    np.longlong:
    ct.c_longlong,

    # technically not universally compatible
    np.int8:
    ct.c_char,
    np.int16:
    ct.c_short,
    np.int32:
    ct.c_int,
    np.int64:
    ct.c_long,

    # unsigned integer types
    np.ubyte:
    ct.c_ubyte,
    np.ushort:
    ct.c_ushort,
    np.uintc:
    ct.c_uint,
    np.ulonglong:
    ct.c_ulonglong,

    # floating point types
    np.single:
    ct.c_float,
    np.float32:
    ct.c_float,
    np.double:
    ct.c_double,
    np.float64:
    ct.c_double,
})