Files
ascendhuawei a61dda4612 upload
2020-09-16 11:50:53 -07:00

72 lines
2.3 KiB
Python

import acl
from atlas_utils.constants import *
from atlas_utils.lib.atlasutil_so import libatlas
def check_ret(message, ret):
if ret != ACL_ERROR_NONE:
raise Exception("{} failed ret={}"
.format(message, ret))
def copy_data_device_to_host(device_data, data_size):
host_buffer, ret = acl.rt.malloc_host(data_size)
if ret != ACL_ERROR_NONE:
print("Malloc host memory failed, error: ", ret)
return None
ret = acl.rt.memcpy(host_buffer, data_size,
device_data, data_size,
ACL_MEMCPY_DEVICE_TO_HOST)
if ret != ACL_ERROR_NONE:
print("Copy device data to host memory failed, error: ", ret)
acl.rt.free_host(host_buffer)
return None
return host_buffer
def copy_data_device_to_device(device_data, data_size):
device_buffer, ret = acl.rt.malloc(data_size, ACL_MEM_MALLOC_NORMAL_ONLY)
if ret != ACL_ERROR_NONE:
print("Malloc device memory failed, error: ", ret)
return None
ret = acl.rt.memcpy(device_buffer, data_size,
device_data, data_size,
ACL_MEMCPY_DEVICE_TO_DEVICE)
if ret != ACL_ERROR_NONE:
print("Copy device data to device memory failed, error: ", ret)
acl.rt.free(device_buffer)
return None
return device_buffer
def copy_data_host_to_device(host_data, data_size):
device_buffer, ret = acl.rt.malloc(data_size, ACL_MEM_MALLOC_NORMAL_ONLY)
if ret != ACL_ERROR_NONE:
print("Malloc device memory failed, error: ", ret)
return None
ret = acl.rt.memcpy(device_buffer, data_size,
host_data, data_size,
ACL_MEMCPY_HOST_TO_DEVICE)
if ret != ACL_ERROR_NONE:
print("Copy device data to device memory failed, error: ", ret)
acl.rt.free(device_buffer)
return None
return device_buffer
def align_up(value, align):
return int(int((value + align - 1) / align) * align)
def align_up16(value):
return align_up(value, 16)
def align_up2(value):
return align_up(value, 2)
def yuv420sp_size(width, height):
return width * height * 3 // 2
def unpack_bytes(dest, dest_size, src, src_size):
libatlas.UnpackFloatByteArray(dest, dest_size, src, src_size)