| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,6 +2,4 @@ | |||
| 2 | 2 | from .data import * | |
| 3 | 3 | from .util import * | |
| 4 | 4 | from .algorithm import * | |
| 5 | - | ||
| 6 | - def info(): | ||
| 7 | - clib.af_info() | ||
| 5 | + from .device import * | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,58 @@ | |||
| 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 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,4 +1,3 @@ | |||
| 1 | - import inspect | ||
| 2 | 1 | from .library import * | |
| 3 | 2 | ||
| 4 | 3 | def dim4(d0=1, d1=1, d2=1, d3=1): | |
@@ -22,9 +21,12 @@ def dim4_tuple(dims): | |||
| 22 | 21 | def is_valid_scalar(a): | |
| 23 | 22 | return isinstance(a, float) or isinstance(a, int) or isinstance(a, complex) | |
| 24 | 23 | ||
| 24 | + def to_str(c_str): | ||
| 25 | + return str(c_str.value.decode('utf-8')) | ||
| 26 | + | ||
| 25 | 27 | def safe_call(af_error): | |
| 26 | 28 | if (af_error != AF_SUCCESS.value): | |
| 27 | 29 | c_err_str = c_char_p(0) | |
| 28 | 30 | c_err_len = c_longlong(0) | |
| 29 | 31 | clib.af_get_last_error(pointer(c_err_str), pointer(c_err_len)) | |
| 30 | - raise RuntimeError(c_err_str.value, af_error) | ||
| 32 | + raise RuntimeError('test', to_str(c_err_str), af_error) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,22 @@ | |||
| 1 | + #!/usr/bin/python | ||
| 2 | + import arrayfire as af | ||
| 3 | + | ||
| 4 | + af.info() | ||
| 5 | + print(af.device_info()) | ||
| 6 | + print(af.get_device_count()) | ||
| 7 | + print(af.is_dbl_supported()) | ||
| 8 | + af.sync() | ||
| 9 | + | ||
| 10 | + print('starting the loop') | ||
| 11 | + for k in range(af.get_device_count()): | ||
| 12 | + af.set_device(k) | ||
| 13 | + dev = af.get_device() | ||
| 14 | + assert(k == dev) | ||
| 15 | + | ||
| 16 | + print(af.is_dbl_supported(k)) | ||
| 17 | + | ||
| 18 | + a = af.randu(100, 100) | ||
| 19 | + af.sync(dev) | ||
| 20 | + mem_info = af.device_mem_info() | ||
| 21 | + assert(mem_info['alloc']['buffers'] == 1) | ||
| 22 | + assert(mem_info[ 'lock']['buffers'] == 1) | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments