|
|
|
/**
|
|
|
|
* Copyright 2019-2020 Huawei Technologies Co., Ltd
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef INC_EXTERNAL_ACL_ACL_TDT_H_
|
|
|
|
#define INC_EXTERNAL_ACL_ACL_TDT_H_
|
|
|
|
|
|
|
|
#include "acl/acl_base.h"
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
enum acltdtTensorType {
|
|
|
|
ACL_TENSOR_DATA_UNDEFINED = -1,
|
|
|
|
ACL_TENSOR_DATA_TENSOR,
|
|
|
|
ACL_TENSOR_DATA_END_OF_SEQUENCE,
|
|
|
|
ACL_TENSOR_DATA_ABNORMAL
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct acltdtDataItem acltdtDataItem;
|
|
|
|
typedef struct acltdtDataset acltdtDataset;
|
|
|
|
typedef struct acltdtChannelHandle acltdtChannelHandle;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get tensor type from item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] pointer to the data item
|
|
|
|
*
|
|
|
|
* @retval Tensor type.
|
|
|
|
* @retval ACL_DT_UNDEFINED if dataItem is null
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY acltdtTensorType acltdtGetTensorTypeFromItem(const acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get data type from item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] pointer to the data item
|
|
|
|
*
|
|
|
|
* @retval Data type.
|
|
|
|
* @retval ACL_DT_UNDEFINED if dataItem is null
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclDataType acltdtGetDataTypeFromItem(const acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get data address from item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] pointer to data item
|
|
|
|
*
|
|
|
|
* @retval null for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY void *acltdtGetDataAddrFromItem(const acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get data size from item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] pointer to data item
|
|
|
|
*
|
|
|
|
* @retval 0 for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY size_t acltdtGetDataSizeFromItem(const acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get dim's number from item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] pointer to data item
|
|
|
|
*
|
|
|
|
* @retval 0 for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY size_t acltdtGetDimNumFromItem(const acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get dims from item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] the struct of data item
|
|
|
|
* @param dims [IN|OUT] pointer to the dims of dataTtem
|
|
|
|
* @param dimNum [IN] the size of the dims
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtGetDimsFromItem(const acltdtDataItem *dataItem, int64_t *dims, size_t dimNum);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Create the struct of data item
|
|
|
|
*
|
|
|
|
* @param tdtType [IN] Tdt tensor type
|
|
|
|
* @param dims [IN] pointer of tdtDataItem's dims
|
|
|
|
* @param dimNum [IN] Dim number
|
|
|
|
* @param dataType [IN] Data type
|
|
|
|
* @param data [IN] Data pointer
|
|
|
|
* @param size [IN] Data size
|
|
|
|
*
|
|
|
|
* @retval null for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*
|
|
|
|
* @see acltdtDestroyDataItem
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY acltdtDataItem *acltdtCreateDataItem(acltdtTensorType tdtType, const int64_t *dims, size_t dimNum,
|
|
|
|
aclDataType dataType, void *data, size_t size);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Destroy the struct of data item
|
|
|
|
*
|
|
|
|
* @param dataItem [IN] pointer to the data item
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtCreateDataItem
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtDestroyDataItem(acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Create the tdt dataset
|
|
|
|
*
|
|
|
|
* @retval null for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*
|
|
|
|
* @see acltdtDestroyDataset
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY acltdtDataset *acltdtCreateDataset();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Destroy the tdt dataset
|
|
|
|
*
|
|
|
|
* @param dataset [IN] pointer to the dataset
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtCreateDataset
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtDestroyDataset(acltdtDataset *dataset);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get the data item
|
|
|
|
*
|
|
|
|
* @param dataset [IN] pointer to the dataset
|
|
|
|
* @param index [IN] index of the dataset
|
|
|
|
*
|
|
|
|
* @retval null for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*
|
|
|
|
* @see acltdtAddDataItem
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY acltdtDataItem *acltdtGetDataItem(const acltdtDataset *dataset, size_t index);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get the data item
|
|
|
|
*
|
|
|
|
* @param dataset [OUT] pointer to the dataset
|
|
|
|
* @param dataItem [IN] pointer to the data item
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtGetDataItem
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtAddDataItem(acltdtDataset *dataset, acltdtDataItem *dataItem);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Get the size of dataset
|
|
|
|
*
|
|
|
|
* @param dataset [IN] pointer to the dataset
|
|
|
|
*
|
|
|
|
* @retval 0 for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY size_t acltdtGetDatasetSize(const acltdtDataset *dataset);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Stop the channel
|
|
|
|
*
|
|
|
|
* @param handle [IN] pointer to the channel handle
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtCreateChannel | acltdtDestroyChannel
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtStopChannel(acltdtChannelHandle *handle);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Create the channel
|
|
|
|
*
|
|
|
|
* @param deviceId [IN] the device id
|
|
|
|
* @param name [IN] the channel's name
|
|
|
|
*
|
|
|
|
* @retval null for failed
|
|
|
|
* @retval OtherValues success
|
|
|
|
*
|
|
|
|
* @see acltdtStopChannel | acltdtDestroyChannel
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY acltdtChannelHandle *acltdtCreateChannel(uint32_t deviceId, const char *name);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Destroy the channel
|
|
|
|
*
|
|
|
|
* @param handle [IN] pointer to the channel handle
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtCreateChannel | acltdtStopChannel
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtDestroyChannel(acltdtChannelHandle *handle);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Send tensor to device
|
|
|
|
*
|
|
|
|
* @param handle [IN] pointer to the channel handle
|
|
|
|
* @param dataset [IN] pointer to the dataset
|
|
|
|
* @param timeout [IN] to be reserved, now it must be -1
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtReceiveTensor
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtSendTensor(const acltdtChannelHandle *handle, const acltdtDataset *dataset,
|
|
|
|
int32_t timeout);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup AscendCL
|
|
|
|
* @brief Receive tensor from device
|
|
|
|
*
|
|
|
|
* @param handle [IN] pointer to the channel handle
|
|
|
|
* @param dataset [OUT] pointer to the dataset
|
|
|
|
* @param timeout [IN] to be reserved, now it must be -1
|
|
|
|
*
|
|
|
|
* @retval ACL_SUCCESS The function is successfully executed.
|
|
|
|
* @retval OtherValues Failure
|
|
|
|
*
|
|
|
|
* @see acltdtSendTensor
|
|
|
|
*/
|
|
|
|
ACL_FUNC_VISIBILITY aclError acltdtReceiveTensor(const acltdtChannelHandle *handle, acltdtDataset *dataset,
|
|
|
|
int32_t timeout);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // INC_EXTERNAL_ACL_ACL_TDT_H_
|