|
| 1 | +from .library import * |
| 2 | +from ctypes import * |
| 3 | +from .util import (safe_call, to_str) |
| 4 | + |
| 5 | +def info(): |
| 6 | + safe_call(clib.af_info()) |
| 7 | + |
| 8 | +def device_info(): |
| 9 | + c_char_256 = c_char * 256 |
| 10 | + device_name = c_char_256() |
| 11 | + backend_name = c_char_256() |
| 12 | + toolkit = c_char_256() |
| 13 | + compute = c_char_256() |
| 14 | + |
| 15 | + safe_call(clib.af_device_info(pointer(device_name), pointer(backend_name), \ |
| 16 | + pointer(toolkit), pointer(compute))) |
| 17 | + dev_info = {} |
| 18 | + dev_info['device'] = to_str(device_name) |
| 19 | + dev_info['backend'] = to_str(backend_name) |
| 20 | + dev_info['toolkit'] = to_str(toolkit) |
| 21 | + dev_info['compute'] = to_str(compute) |
| 22 | + |
| 23 | + return dev_info |
| 24 | + |
| 25 | +def get_device_count(): |
| 26 | + c_num = c_int(0) |
| 27 | + safe_call(clib.af_get_device_count(pointer(c_num))) |
| 28 | + return c_num.value |
| 29 | + |
| 30 | +def get_device(): |
| 31 | + c_dev = c_int(0) |
| 32 | + safe_call(clib.af_get_device(pointer(c_dev))) |
| 33 | + return c_dev.value |
| 34 | + |
| 35 | +def set_device(num): |
| 36 | + safe_call(clib.af_set_device(num)) |
| 37 | + |
| 38 | +def is_dbl_supported(device=None): |
| 39 | + dev = device if device is not None else get_device() |
| 40 | + res = c_bool(False) |
| 41 | + safe_call(clib.af_get_dbl_support(pointer(res), dev)) |
| 42 | + return res.value |
| 43 | + |
| 44 | +def sync(device=None): |
| 45 | + dev = device if device is not None else get_device() |
| 46 | + safe_call(clib.af_sync(dev)) |
| 47 | + |
| 48 | +def device_mem_info(): |
| 49 | + alloc_bytes = c_size_t(0) |
| 50 | + alloc_buffers = c_size_t(0) |
| 51 | + lock_bytes = c_size_t(0) |
| 52 | + lock_buffers = c_size_t(0) |
| 53 | + safe_call(clib.af_device_mem_info(pointer(alloc_bytes), pointer(alloc_buffers),\ |
| 54 | + pointer(lock_bytes), pointer(lock_buffers))) |
| 55 | + mem_info = {} |
| 56 | + mem_info['alloc'] = {'buffers' : alloc_buffers.value, 'bytes' : alloc_bytes.value} |
| 57 | + mem_info['lock'] = {'buffers' : lock_buffers.value, 'bytes' : lock_bytes.value} |
| 58 | + return mem_info |
0 commit comments