You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

SliceLink.py 1.5 kB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839
  1. from __future__ import absolute_import
  2. import ctypes
  3. from .._base import _LIB
  4. from .. import ndarray as _nd
  5. def matrix_slice(in_arr, out_arr, begin_pos, stream=None):
  6. assert isinstance(in_arr, _nd.NDArray)
  7. assert isinstance(out_arr, _nd.NDArray)
  8. pointer_func = ctypes.c_int64 * len(begin_pos)
  9. pointer = pointer_func(*list(begin_pos))
  10. _LIB.DLGpuSlice(in_arr.handle, out_arr.handle, pointer,
  11. stream.handle if stream else None)
  12. def matrix_slice_gradient(in_arr, out_arr, begin_pos, stream=None):
  13. assert isinstance(in_arr, _nd.NDArray)
  14. assert isinstance(out_arr, _nd.NDArray)
  15. pointer_func = ctypes.c_int64 * len(begin_pos)
  16. pointer = pointer_func(*list(begin_pos))
  17. _LIB.DLGpuSliceGradient(in_arr.handle, out_arr.handle,
  18. pointer, stream.handle if stream else None)
  19. def matrix_slice_simple(in_arr, out_arr, gpu_buf, stream=None):
  20. assert isinstance(in_arr, _nd.NDArray)
  21. assert isinstance(out_arr, _nd.NDArray)
  22. assert isinstance(gpu_buf, _nd.NDArray)
  23. _LIB.DLGpuSliceSimple(in_arr.handle, out_arr.handle,
  24. gpu_buf.handle, stream.handle if stream else None)
  25. def matrix_slice_gradient_simple(in_arr, out_arr, gpu_buf, stream=None):
  26. assert isinstance(in_arr, _nd.NDArray)
  27. assert isinstance(out_arr, _nd.NDArray)
  28. assert isinstance(gpu_buf, _nd.NDArray)
  29. _LIB.DLGpuSliceGradientSimple(
  30. in_arr.handle, out_arr.handle, gpu_buf.handle, stream.handle if stream else None)