@@ -34,7 +34,6 @@ void GeModel::Init() { | |||
} | |||
GeModel::GeModel() { | |||
attrs_.InitDefault(); | |||
Init(); | |||
} | |||
@@ -78,12 +77,12 @@ void GeModel::SetPlatformVersion(const std::string &platform_version) { this->pl | |||
void GeModel::SetPlatformType(uint8_t platform_type) { this->platform_type_ = platform_type; } | |||
void GeModel::SetAttr(const ProtoAttrMapHelper &attrs) { attrs_ = attrs; } | |||
void GeModel::SetAttr(const ProtoAttrMap &attrs) { attrs_ = attrs; } | |||
ProtoAttrMapHelper GeModel::MutableAttrMap() { return attrs_; } | |||
ProtoAttrMap &GeModel::MutableAttrMap() { return attrs_; } | |||
ConstProtoAttrMapHelper GeModel::GetAttrMap() const { | |||
return ConstProtoAttrMapHelper(attrs_.GetProtoOwner(), attrs_.GetProtoMsg()); | |||
ConstProtoAttrMap &GeModel::GetAttrMap() const { | |||
return attrs_; | |||
} | |||
Status GeModel::GetSessionId(uint32_t model_id, uint64_t &session_id) const { | |||
@@ -17,10 +17,12 @@ | |||
#ifndef GE_MODEL_GE_MODEL_H_ | |||
#define GE_MODEL_GE_MODEL_H_ | |||
#include <securec.h> | |||
#include <map> | |||
#include <memory> | |||
#include <string> | |||
#include "securec.h" | |||
#include "runtime/rt.h" | |||
#include "common/tbe_kernel_store.h" | |||
#include "common/cust_aicpu_kernel_store.h" | |||
#include "framework/common/debug/log.h" | |||
@@ -60,9 +62,9 @@ class GeModel : public AttrHolder { | |||
void SetPlatformVersion(const std::string &platform_version); | |||
void SetPlatformType(uint8_t platform_type); | |||
void SetAttr(const ProtoAttrMapHelper &attrs); | |||
void SetAttr(const ProtoAttrMap &attrs); | |||
ProtoAttrMapHelper MutableAttrMap() override; | |||
ProtoAttrMap &MutableAttrMap() override; | |||
using AttrHolder::SetAttr; | |||
using AttrHolder::GetAllAttrs; | |||
@@ -77,12 +79,12 @@ class GeModel : public AttrHolder { | |||
} | |||
protected: | |||
ConstProtoAttrMapHelper GetAttrMap() const override; | |||
ConstProtoAttrMap &GetAttrMap() const override; | |||
private: | |||
void Init(); | |||
ProtoAttrMapHelper attrs_; /*lint !e148*/ | |||
ProtoAttrMap attrs_; /*lint !e148*/ | |||
Graph graph_; | |||
std::shared_ptr<domi::ModelTaskDef> task_; /*lint !e148*/ | |||
@@ -5,5 +5,6 @@ approvers: | |||
reviewers: | |||
- justin_zhao | |||
- zhangyongfeng88 | |||
- w00267184 | |||
options: | |||
no_parent_owners: true |
@@ -869,7 +869,7 @@ ACL_FUNC_VISIBILITY aclError aclmdlSetAIPPInputFormat(aclmdlAIPP *aippParmsSet, | |||
* | |||
* @see aclmdlCreateAIPP | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError aclmdlSetAIPPCscParams(aclmdlAIPP *aippParmsSet, int8_t csc_switch, int16_t cscMatrixR0C0, | |||
ACL_FUNC_VISIBILITY aclError aclmdlSetAIPPCscParams(aclmdlAIPP *aippParmsSet, int8_t cscSwitch, int16_t cscMatrixR0C0, | |||
int16_t cscMatrixR0C1, int16_t cscMatrixR0C2, int16_t cscMatrixR1C0, | |||
int16_t cscMatrixR1C1, int16_t cscMatrixR1C2, int16_t cscMatrixR2C0, | |||
int16_t cscMatrixR2C1, int16_t cscMatrixR2C2, | |||
@@ -1106,7 +1106,7 @@ ACL_FUNC_VISIBILITY aclError aclmdlGetAippType(uint32_t modelId, size_t index, a | |||
* | |||
* @param modelId [IN] model id | |||
* @param index [IN] index of tensor | |||
* @param aippinfo [OUT] Pointer for static aipp info | |||
* @param aippInfo [OUT] Pointer for static aipp info | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval ACL_ERROR_MODEL_AIPP_NOT_EXIST The tensor of index is not configured with aipp | |||
@@ -1115,7 +1115,7 @@ ACL_FUNC_VISIBILITY aclError aclmdlGetAippType(uint32_t modelId, size_t index, a | |||
* @see aclmdlLoadFromFile | aclmdlLoadFromMem | aclmdlLoadFromFileWithMem | | |||
* aclmdlLoadFromMemWithMem | aclmdlGetInputIndexByName | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError aclmdlGetFirstAippInfo(uint32_t modelId, size_t index, aclAippInfo *aippinfo); | |||
ACL_FUNC_VISIBILITY aclError aclmdlGetFirstAippInfo(uint32_t modelId, size_t index, aclAippInfo *aippInfo); | |||
/** | |||
* @ingroup AscendCL | |||
@@ -541,7 +541,7 @@ ACL_FUNC_VISIBILITY aclError aclrtSynchronizeEvent(aclrtEvent event); | |||
* | |||
* @see aclrtCreateEvent | aclrtRecordEvent | aclrtSynchronizeStream | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError aclrtEventElapsedTime(float *ms, aclrtEvent start, aclrtEvent end); | |||
ACL_FUNC_VISIBILITY aclError aclrtEventElapsedTime(float *ms, aclrtEvent startEvent, aclrtEvent endEvent); | |||
/** | |||
* @ingroup AscendCL | |||
@@ -731,6 +731,43 @@ ACL_FUNC_VISIBILITY aclError aclrtMemset(void *devPtr, size_t maxCount, int32_t | |||
ACL_FUNC_VISIBILITY aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, | |||
aclrtMemcpyKind kind, aclrtStream stream); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief synchronous memory replication of two-dimensional matrix between host and device | |||
* | |||
* @param dst [IN] destination address pointer | |||
* @param dpitch [IN] pitch of destination memory | |||
* @param src [IN] source address pointer | |||
* @param spitch [IN] pitch of source memory | |||
* @param width [IN] width of matrix transfer | |||
* @param height [IN] height of matrix transfer | |||
* @param kind [IN] memcpy type | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError aclrtMemcpy2d(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, | |||
size_t height, aclrtMemcpyKind kind); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief asynchronous memory replication of two-dimensional matrix between host and device | |||
* | |||
* @param dst [IN] destination address pointer | |||
* @param dpitch [IN] pitch of destination memory | |||
* @param src [IN] source address pointer | |||
* @param spitch [IN] pitch of source memory | |||
* @param width [IN] width of matrix transfer | |||
* @param height [IN] height of matrix transfer | |||
* @param kind [IN] memcpy type | |||
* @param stream [IN] asynchronized task stream | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError aclrtMemcpy2dAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, | |||
size_t height, aclrtMemcpyKind kind, aclrtStream stream); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Asynchronous initialize memory | |||
@@ -215,7 +215,7 @@ ACL_FUNC_VISIBILITY aclError acltdtStopChannel(acltdtChannelHandle *handle); | |||
* @brief Create the channel | |||
* | |||
* @param deviceId [IN] the device id | |||
* @param name [IN] the channel's name | |||
* @param name [IN] the name of channel | |||
* | |||
* @retval null for failed | |||
* @retval OtherValues success | |||
@@ -224,6 +224,22 @@ ACL_FUNC_VISIBILITY aclError acltdtStopChannel(acltdtChannelHandle *handle); | |||
*/ | |||
ACL_FUNC_VISIBILITY acltdtChannelHandle *acltdtCreateChannel(uint32_t deviceId, const char *name); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Create the channel with max size | |||
* | |||
* @param deviceId [IN] the device id | |||
* @param name [IN] the name of channel | |||
* @param capacity [IN] the capacity of channel | |||
* | |||
* @retval null for failed | |||
* @retval OtherValues success | |||
* | |||
* @see acltdtDestroyChannel | |||
*/ | |||
ACL_FUNC_VISIBILITY acltdtChannelHandle *acltdtCreateChannelWithCapacity(uint32_t deviceId, const char *name, | |||
size_t capacity); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Destroy the channel | |||
@@ -269,6 +285,19 @@ ACL_FUNC_VISIBILITY aclError acltdtSendTensor(const acltdtChannelHandle *handle, | |||
ACL_FUNC_VISIBILITY aclError acltdtReceiveTensor(const acltdtChannelHandle *handle, acltdtDataset *dataset, | |||
int32_t timeout); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief query the size of the channel | |||
* | |||
* @param handle [IN] pointer to the channel handle | |||
* @param size [OUT] current size of this channel | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtQueryChannelSize(const acltdtChannelHandle *handle, size_t *size); | |||
#ifdef __cplusplus | |||
} | |||
#endif | |||
@@ -0,0 +1,437 @@ | |||
/** | |||
* 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_QUEUE_H_ | |||
#define INC_EXTERNAL_ACL_ACL_TDT_QUEUE_H_ | |||
#include "acl/acl_base.h" | |||
#ifdef __cplusplus | |||
extern "C" { | |||
#endif | |||
#define ACL_TDT_QUEUE_PERMISSION_MANAGE 1 | |||
#define ACL_TDT_QUEUE_PERMISSION_DEQUEUE 2 | |||
#define ACL_TDT_QUEUE_PERMISSION_ENQUEUE 4 | |||
typedef void *acltdtBuf; | |||
typedef struct tagMemQueueAttr acltdtQueueAttr; | |||
typedef struct acltdtQueueRouteList acltdtQueueRouteList; | |||
typedef struct acltdtQueueRouteQueryInfo acltdtQueueRouteQueryInfo; | |||
typedef struct acltdtQueueRoute acltdtQueueRoute; | |||
typedef enum { ACL_TDT_QUEUE_NAME_PTR = 0, ACL_TDT_QUEUE_DEPTH_UINT32 } acltdtQueueAttrType; | |||
typedef enum { | |||
ACL_TDT_QUEUE_ROUTE_SRC_UINT32 = 0, | |||
ACL_TDT_QUEUE_ROUTE_DST_UINT32, | |||
ACL_TDT_QUEUE_ROUTE_STATUS_INT32 | |||
} acltdtQueueRouteParamType; | |||
typedef enum { | |||
ACL_TDT_QUEUE_ROUTE_QUERY_SRC = 0, | |||
ACL_TDT_QUEUE_ROUTE_QUERY_DST, | |||
ACL_TDT_QUEUE_ROUTE_QUERY_SRC_AND_DST | |||
} acltdtQueueRouteQueryMode; | |||
typedef enum { | |||
ACL_TDT_QUEUE_ROUTE_QUERY_MODE_ENUM = 0, | |||
ACL_TDT_QUEUE_ROUTE_QUERY_SRC_ID_UINT32, | |||
ACL_TDT_QUEUE_ROUTE_QUERY_DST_ID_UINT32 | |||
} acltdtQueueRouteQueryInfoParamType; | |||
/** | |||
* @ingroup AscendCL | |||
* @brief create queue | |||
* | |||
* @param attr [IN] pointer to the queue attr | |||
* @param qid [OUT] pointer to the qid | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtDestroyQueue | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtCreateQueue(const acltdtQueueAttr *attr, uint32_t *qid); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief destroy queue | |||
* | |||
* @param qid [IN] qid which to be destroyed | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueue | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtDestroyQueue(uint32_t qid); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief enqueue function | |||
* | |||
* @param qid [IN] qid | |||
* @param buf [IN] acltdtBuf | |||
* @param timeout [IN] timeout | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtDequeue | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtEnqueue(uint32_t qid, acltdtBuf buf, int32_t timeout); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief dequeue function | |||
* | |||
* @param qid [IN] qid | |||
* @param buf [OUT] pointer to the acltdtBuf | |||
* @param timeout [IN] timeout | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtEnqueue | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtDequeue(uint32_t qid, acltdtBuf *buf, int32_t timeout); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief grant queue to other process | |||
* | |||
* @param qid [IN] qid | |||
* @param pid [IN] pid of dst process | |||
* @param permission [IN] permission of queue | |||
* @param timeout [IN] timeout | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see ACL_TDT_QUEUE_PERMISSION_MANAGE | ACL_TDT_QUEUE_PERMISSION_DEQUEUE | ACL_TDT_QUEUE_PERMISSION_ENQUEUE | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtGrantQueue(uint32_t qid, int32_t pid, uint32_t permission, int32_t timeout); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief attach queue in current process | |||
* | |||
* @param qid [IN] qid | |||
* @param timeout [IN] timeout | |||
* @param permission [OUT] permission of queue | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtGrantQueue | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtAttachQueue(uint32_t qid, int32_t timeout, uint32_t *permission); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief bind queue routes | |||
* | |||
* @param qRouteList [IN|OUT] pointer to the route list | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtBindQueueRoutes(acltdtQueueRouteList *qRouteList); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief unbind queue routes | |||
* | |||
* @param qRouteList [IN|OUT] pointer to the route list | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtUnbindQueueRoutes(acltdtQueueRouteList *qRouteList); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief query queue routes according to query mode | |||
* | |||
* @param queryInfo [IN] pointer to the queue route query info | |||
* @param qRouteList [IN|OUT] pointer to the route list | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtQueryQueueRoutes(const acltdtQueueRouteQueryInfo *queryInfo, | |||
acltdtQueueRouteList *qRouteList); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief alloc acltdtBuf | |||
* | |||
* @param size [IN] alloc buf size | |||
* @param buf [OUT] pointer to the acltdtBuf | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtFreeBuf | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtAllocBuf(size_t size, acltdtBuf *buf); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief free acltdtBuf | |||
* | |||
* @param buf [IN] pointer to the acltdtBuf | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtAllocBuf | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtFreeBuf(acltdtBuf buf); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief get data buf address | |||
* | |||
* @param buf [IN] acltdtBuf | |||
* @param dataPtr [OUT] pointer to the data ptr which is acquired from acltdtBuf | |||
* @param size [OUT] pointer to the size | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtAllocBuf | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtGetBufData(const acltdtBuf buf, void **dataPtr, size_t *size); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Create the queue attr | |||
* | |||
* @retval null for failed | |||
* @retval OtherValues success | |||
* | |||
* @see acltdtDestroyQueueAttr | |||
*/ | |||
ACL_FUNC_VISIBILITY acltdtQueueAttr *acltdtCreateQueueAttr(); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Destroy the queue attr | |||
* | |||
* @param attr [IN] pointer to the queue attr | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueueAttr | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtDestroyQueueAttr(const acltdtQueueAttr *attr); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Set parameter for queue attr | |||
* | |||
* @param attr [IN|OUT] pointer to the queue attr | |||
* @param type [IN] parameter type | |||
* @param len [IN] parameter length | |||
* @param param [IN] pointer to parameter value | |||
* | |||
* @retval ACL_SUCCESS for success, other for failure | |||
* | |||
* @see acltdtCreateQueueAttr | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtSetQueueAttr(acltdtQueueAttr *attr, acltdtQueueAttrType type, size_t len, | |||
const void *param); | |||
/** | |||
* @ingroup AscendCL | |||
* | |||
* @brief Get parameter for queue attr. | |||
* | |||
* @param attr [IN] pointer to the queue attr | |||
* @param type [IN] parameter type | |||
* @param len [IN] parameter length | |||
* @param paramRetSize [OUT] pointer to parameter real length | |||
* @param param [OUT] pointer to parameter value | |||
* | |||
* @retval ACL_SUCCESS for success, other for failure | |||
* | |||
* @see acltdtCreateQueueAttr | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtGetQueueAttr(const acltdtQueueAttr *attr, acltdtQueueAttrType type, size_t len, | |||
size_t *paramRetSize, void *param); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Create the queue route | |||
* | |||
* @param srcId [IN] src id of queue route | |||
* @param dstId [IN] dst id of queue route | |||
* | |||
* @retval null for failed | |||
* @retval OtherValues success | |||
* | |||
* @see acltdtDestroyQueueRoute | |||
*/ | |||
ACL_FUNC_VISIBILITY acltdtQueueRoute *acltdtCreateQueueRoute(uint32_t srcId, uint32_t dstId); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Destroy the queue attr | |||
* | |||
* @param route [IN] pointer to the queue route | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueueRoute | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtDestroyQueueRoute(const acltdtQueueRoute *route); | |||
/** | |||
* @ingroup AscendCL | |||
* | |||
* @brief Get parameter for queue route. | |||
* | |||
* @param route [IN] pointer to the queue route | |||
* @param type [IN] parameter type | |||
* @param len [IN] parameter length | |||
* @param paramRetSize [OUT] pointer to parameter real length | |||
* @param param [OUT] pointer to parameter value | |||
* | |||
* @retval ACL_SUCCESS for success, other for failure | |||
* | |||
* @see acltdtCreateQueueRoute | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtGetQueueRouteParam(const acltdtQueueRoute *route, acltdtQueueRouteParamType type, | |||
size_t len, size_t *paramRetSize, void *param); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Create the queue route list | |||
* | |||
* @retval null for failed | |||
* @retval OtherValues success | |||
* | |||
* @see acltdtDestroyQueueRouteList | |||
*/ | |||
ACL_FUNC_VISIBILITY acltdtQueueRouteList *acltdtCreateQueueRouteList(); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Destroy the queue route list | |||
* | |||
* @param routeList [IN] pointer to the queue route list | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueueRouteList | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtDestroyQueueRouteList(const acltdtQueueRouteList *routeList); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief add queue route to the route list | |||
* | |||
* @param routeList [IN|OUT] pointer to the queue route list | |||
* @param route [IN] pointer to the queue route | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueueRouteList | acltdtCreateQueueRoute | |||
* | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtAddQueueRoute(acltdtQueueRouteList *routeList, const acltdtQueueRoute *route); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief get queue route from route list | |||
* | |||
* @param routeList [IN] pointer to the queue route list | |||
* @param index [IN] index of queue route in route list | |||
* @param route [IN|OUT] pointer to the queue route | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueueRouteList | acltdtCreateQueueRoute | |||
* | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtGetQueueRoute(const acltdtQueueRouteList *routeList, size_t index, | |||
acltdtQueueRoute *route); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief get queue route num from route list | |||
* | |||
* @param routeList [IN] pointer to the queue route list | |||
* | |||
* @retval the number of queue route | |||
* | |||
*/ | |||
ACL_FUNC_VISIBILITY size_t acltdtGetQueueRouteNum(const acltdtQueueRouteList *routeList); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Create the queue route query info | |||
* | |||
* @retval null for failed | |||
* @retval OtherValues success | |||
* | |||
* @see acltdtDestroyQueueRouteQueryInfo | |||
*/ | |||
ACL_FUNC_VISIBILITY acltdtQueueRouteQueryInfo *acltdtCreateQueueRouteQueryInfo(); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Destroy the queue route query info | |||
* | |||
* @param info [IN] pointer to the queue route info | |||
* | |||
* @retval ACL_SUCCESS The function is successfully executed. | |||
* @retval OtherValues Failure | |||
* | |||
* @see acltdtCreateQueueRouteQueryInfo | |||
* | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtDestroyQueueRouteQueryInfo(const acltdtQueueRouteQueryInfo *info); | |||
/** | |||
* @ingroup AscendCL | |||
* @brief Set parameter for queue route info | |||
* | |||
* @param attr [IN|OUT] pointer to the queue route info | |||
* @param type [IN] parameter type | |||
* @param len [IN] parameter length | |||
* @param param [IN] pointer to parameter value | |||
* | |||
* @retval ACL_SUCCESS for success, other for failure | |||
* | |||
* @see acltdtCreateQueueRouteQueryInfo | |||
*/ | |||
ACL_FUNC_VISIBILITY aclError acltdtSetQueueRouteQueryInfo(acltdtQueueRouteQueryInfo *param, | |||
acltdtQueueRouteQueryInfoParamType type, size_t len, | |||
const void *value); | |||
#ifdef __cplusplus | |||
} | |||
#endif | |||
#endif // INC_EXTERNAL_ACL_ACL_TDT_QUEUE_H_ |
@@ -56,6 +56,10 @@ static const int32_t ACL_ERROR_RT_NO_EVENT_RESOURCE = 207007; // no event res | |||
static const int32_t ACL_ERROR_RT_NO_STREAM_RESOURCE = 207008; // no stream resource | |||
static const int32_t ACL_ERROR_RT_NO_NOTIFY_RESOURCE = 207009; // no notify resource | |||
static const int32_t ACL_ERROR_RT_NO_MODEL_RESOURCE = 207010; // no model resource | |||
static const int32_t ACL_ERROR_RT_NO_CDQ_RESOURCE = 207011; // no cdq resource | |||
static const int32_t ACL_ERROR_RT_OVER_LIMIT = 207012; // over limit | |||
static const int32_t ACL_ERROR_RT_QUEUE_EMPTY = 207013; // queue is empty | |||
static const int32_t ACL_ERROR_RT_QUEUE_FULL = 207014; // queue is full | |||
static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error | |||
static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error | |||
@@ -125,7 +125,7 @@ enum acldvppPixelFormat { | |||
enum acldvppStreamFormat { H265_MAIN_LEVEL = 0, H264_BASELINE_LEVEL, H264_MAIN_LEVEL, H264_HIGH_LEVEL }; | |||
// Supported Channel Mode | |||
enum acldvppChannelMode { DVPP_CHNMODE_VPC = 1, DVPP_CHNMODE_JPEGD = 2, DVPP_CHNMODE_JPEGE = 4 }; | |||
enum acldvppChannelMode { DVPP_CHNMODE_VPC = 1, DVPP_CHNMODE_JPEGD = 2, DVPP_CHNMODE_JPEGE = 4, DVPP_CHNMODE_PNGD = 8 }; | |||
// Supported Border Type | |||
enum acldvppBorderType { BORDER_CONSTANT = 0, BORDER_REPLICATE, BORDER_REFLECT, BORDER_REFLECT_101 }; | |||
@@ -72,17 +72,23 @@ class GE_FUNC_VISIBILITY StatusFactory { | |||
class GE_FUNC_VISIBILITY ErrorNoRegisterar { | |||
public: | |||
ErrorNoRegisterar(uint32_t err, const std::string &desc) { StatusFactory::Instance()->RegisterErrorNo(err, desc); } | |||
ErrorNoRegisterar(uint32_t err, const char *desc) { StatusFactory::Instance()->RegisterErrorNo(err, desc); } | |||
ErrorNoRegisterar(uint32_t err, const std::string &desc) { | |||
StatusFactory::Instance()->RegisterErrorNo(err, desc); | |||
} | |||
ErrorNoRegisterar(uint32_t err, const char *desc) { | |||
StatusFactory::Instance()->RegisterErrorNo(err, desc); | |||
} | |||
~ErrorNoRegisterar() {} | |||
}; | |||
// Code compose(4 byte), runtime: 2 bit, type: 2 bit, level: 3 bit, sysid: 8 bit, modid: 5 bit, value: 12 bit | |||
#define GE_ERRORNO(runtime, type, level, sysid, modid, name, value, desc) \ | |||
constexpr ge::Status name = \ | |||
((0xFF & (static_cast<uint8_t>(runtime))) << 30) | ((0xFF & (static_cast<uint8_t>(type))) << 28) | \ | |||
((0xFF & (static_cast<uint8_t>(level))) << 25) | ((0xFF & (static_cast<uint8_t>(sysid))) << 17) | \ | |||
((0xFF & (static_cast<uint8_t>(modid))) << 12) | (0x0FFF & (static_cast<uint16_t>(value))); \ | |||
#define GE_ERRORNO(runtime, type, level, sysid, modid, name, value, desc) \ | |||
constexpr ge::Status name = (static_cast<uint32_t>(0xFFU & (static_cast<uint32_t>(runtime))) << 30) | \ | |||
(static_cast<uint32_t>(0xFFU & (static_cast<uint32_t>(type))) << 28) | \ | |||
(static_cast<uint32_t>(0xFFU & (static_cast<uint32_t>(level))) << 25) | \ | |||
(static_cast<uint32_t>(0xFFU & (static_cast<uint32_t>(sysid))) << 17) | \ | |||
(static_cast<uint32_t>(0xFFU & (static_cast<uint32_t>(modid))) << 12) | \ | |||
(static_cast<uint32_t>(0x0FFFU) & (static_cast<uint32_t>(value))); \ | |||
const ErrorNoRegisterar g_##name##_errorno(name, desc); | |||
#define GE_ERRORNO_EXTERNAL(name, desc) const ErrorNoRegisterar g_##name##_errorno(name, desc); | |||
@@ -28,6 +28,7 @@ | |||
namespace ge { | |||
// Option key: graph run mode | |||
const char *const OPTION_GRAPH_RUN_MODE = "ge.graphRunMode"; | |||
const char *const OPTION_DEVICE_TYPE = "ge.deviceType"; | |||
// Option key: ome init | |||
const char *const OPTION_EXEC_SESSION_ID = "ge.exec.sessionId"; | |||
@@ -67,6 +68,7 @@ const char *const OPTION_EXEC_ENABLE_TAILING_OPTIMIZATION = "ge.exec.isTailingOp | |||
const char *const OPTION_EXEC_DYNAMIC_INPUT = "ge.exec.dynamicInput"; | |||
const char *const OPTION_EXEC_DYNAMIC_EXECUTE_MODE = "ge.exec.dynamicGraphExecuteMode"; | |||
const char *const OPTION_EXEC_DATA_INPUTS_SHAPE_RANGE = "ge.exec.dataInputsShapeRange"; | |||
const char *const OPTION_EXEC_ENABLE_COPY_OUTPUT_ADDR = "ge.exec.enableCopyOutputAddr"; | |||
// Option key: memory init | |||
const char *const GRAPH_MEMORY_MAX_SIZE = "ge.graphMemoryMaxSize"; | |||
@@ -103,7 +103,7 @@ GE_FUNC_VISIBILITY graphStatus aclgrphBuildModel(const ge::Graph &graph, | |||
* @retval OtherValues Failure | |||
*/ | |||
ATTRIBUTED_DEPRECATED(GE_FUNC_VISIBILITY graphStatus aclgrphSaveModel(const char *, const ModelBufferData &)) | |||
GE_FUNC_VISIBILITY graphStatus aclgrphSaveModel(const string &output_file, const ModelBufferData &model); | |||
GE_FUNC_VISIBILITY graphStatus aclgrphSaveModel(const std::string &output_file, const ModelBufferData &model); | |||
GE_FUNC_VISIBILITY graphStatus aclgrphSaveModel(const char *output_file, const ModelBufferData &model); | |||
@@ -53,6 +53,7 @@ typedef enum { | |||
HCCL_E_PROFILING = 17, /**< call profiling api fail */ | |||
HCCL_E_CCE = 18, /**< call cce api fail */ | |||
HCCL_E_NETWORK = 19, /**< call network api fail */ | |||
HCCL_E_AGAIN = 20, /**< try again */ | |||
HCCL_E_RESERVED /**< reserved */ | |||
} HcclResult; | |||
@@ -58,6 +58,10 @@ static const int32_t ACL_ERROR_RT_NO_STREAM_RESOURCE = 207008; // no stream re | |||
static const int32_t ACL_ERROR_RT_NO_NOTIFY_RESOURCE = 207009; // no notify resource | |||
static const int32_t ACL_ERROR_RT_NO_MODEL_RESOURCE = 207010; // no model resource | |||
static const int32_t ACL_ERROR_RT_NO_CDQ_RESOURCE = 207011; // no cdq resource | |||
static const int32_t ACL_ERROR_RT_OVER_LIMIT = 207012; // over limit | |||
static const int32_t ACL_ERROR_RT_QUEUE_EMPTY = 207013; // queue is empty | |||
static const int32_t ACL_ERROR_RT_QUEUE_FULL = 207014; // queue is full | |||
static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init | |||
static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error | |||
static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1 +1 @@ | |||
Subproject commit 60df4b39a6f639c21dd7deb220b93345451938f5 | |||
Subproject commit 7d777404b3b7fe7daeaf00e566e431c6a05b040a |
@@ -17,6 +17,7 @@ | |||
#ifndef AICPU_OP_TYPE_LIST_H_ | |||
#define AICPU_OP_TYPE_LIST_H_ | |||
extern "C" { | |||
enum OpKernelType { | |||
TF_KERNEL, | |||
CPU_KERNEL | |||
@@ -36,12 +37,6 @@ struct SysOpInfo { | |||
OpKernelType kernelsType; | |||
}; | |||
struct OpParamInfo { | |||
uint64_t num; | |||
uint64_t dtypeList; | |||
uint64_t formatList; | |||
}; | |||
struct SysOpCheckInfo { | |||
uint64_t opListNum; | |||
uint64_t offSetLen; | |||
@@ -57,4 +52,6 @@ struct SysOpCheckResp { | |||
uint64_t opParamInfoList; | |||
}; | |||
#pragma pack(pop) | |||
} | |||
#endif // AICPU_OP_TYPE_LIST_H_ |
@@ -86,6 +86,47 @@ enum OriginalGraphShapeType { | |||
SHAPE_RESERVED /**< reserved */ | |||
}; | |||
enum HcclEventType { | |||
HCCL_EVENT_SEND_COMPLETION = 0, | |||
HCCL_EVENT_RECV_REQUEST, | |||
HCCL_EVENT_RECV_COMPLETION, | |||
HCCL_EVENT_CONGESTION_RELIEF, | |||
HCCL_EVENT_RESERVED /**< reserved */ | |||
}; | |||
const u32 TAG_MAX_LEN = 127; // ×î´óµÄtag ³¤¶È | |||
using TagAttr = struct TagAttrDef { | |||
char name[TAG_MAX_LEN + 1]; // tag±êʶ | |||
// tag±êʶµÄ½ÓÊÕÊý¾Ý£¬µ÷ÓÃÕßÊÇ·ñ»áÖ÷¶¯µ÷ÓýÓÊÕ½Ó¿Ú£¬0 = ·ñ, 1 = »á(Ô¤Áô£¬Ôݲ»Ö§³Ö)¡£ | |||
// ¶ÔÓÚactiveRecv = 0£¬µ±½ÓÊÕ²àÊÕµ½Êý¾Ý»òÕß·¢ËÍÇëÇóʱ£¬Ö÷¶¯Í¨Öªµ÷ÓÃÕß¡£ | |||
uint32_t activeRecv; | |||
uint32_t sendCredit; // ÅäÖøÃtagÔÊÐíinflightµÄsend¸öÊý | |||
uint32_t eventId; | |||
}; | |||
using HcclEventMsg = struct HcclEventMsgDef { | |||
HcclComm comm; | |||
u32 peerRank; | |||
u32 tag; | |||
// 0:HCCL_SEND_COMPLETION; 1:HCCL_RECV_COMPLETION; 2:HCCL_RECV_REQUEST; 3:HCCL_CONGESTION_RELIEF | |||
u32 hcclEventType; | |||
union { | |||
struct { | |||
u32 reserver; | |||
} sendCompletionItem; | |||
struct { | |||
u32 reserver; | |||
} recvRequestItem; | |||
struct { | |||
u32 reserver; | |||
} recvCompletionItem; | |||
struct CongestionReliefItem { | |||
u32 reserver; | |||
} congestionReliefItem; | |||
} desc; | |||
}; | |||
/** | |||
* @brief stream handle. | |||
*/ | |||
@@ -40,7 +40,6 @@ | |||
#include <semaphore.h> | |||
#include <fcntl.h> | |||
#include <dlfcn.h> | |||
#include <signal.h> | |||
#include <pthread.h> | |||
#include <syslog.h> | |||
#include <dirent.h> | |||
@@ -58,31 +58,31 @@ typedef long MM_LONG; | |||
typedef VOID *(*userProcFunc)(VOID *pulArg); | |||
typedef struct { | |||
userProcFunc procFunc; // Callback function pointer | |||
VOID *pulArg; // Callback function parameters | |||
userProcFunc procFunc; // Callback function pointer | |||
VOID *pulArg; // Callback function parameters | |||
} mmUserBlock_t; | |||
typedef struct { | |||
const char *dli_fname; | |||
void *dli_fbase; | |||
const char *dli_sname; | |||
void *dli_saddr; | |||
size_t dli_size; /* ELF only */ | |||
int dli_bind; /* ELF only */ | |||
int dli_type; | |||
const CHAR *dli_fname; | |||
VOID *dli_fbase; | |||
const CHAR *dli_sname; | |||
VOID *dli_saddr; | |||
size_t dli_size; /* ELF only */ | |||
INT32 dli_bind; /* ELF only */ | |||
INT32 dli_type; | |||
} mmDlInfo; | |||
typedef struct { | |||
int wSecond; // Seconds. [0-60] (1 leap second) | |||
int wMinute; // Minutes. [0-59] | |||
int wHour; // Hours. [0-23] | |||
int wDay; // Day. [1-31] | |||
int wMonth; // Month. [1-12] | |||
int wYear; // Year | |||
int wDayOfWeek; // Day of week. [0-6] | |||
int tm_yday; // Days in year.[0-365] | |||
int tm_isdst; // DST. [-1/0/1] | |||
long int wMilliseconds; // milliseconds | |||
INT32 wSecond; // Seconds. [0-60] (1 leap second) | |||
INT32 wMinute; // Minutes. [0-59] | |||
INT32 wHour; // Hours. [0-23] | |||
INT32 wDay; // Day. [1-31] | |||
INT32 wMonth; // Month. [1-12] | |||
INT32 wYear; // Year | |||
INT32 wDayOfWeek; // Day of week. [0-6] | |||
INT32 tm_yday; // Days in year.[0-365] | |||
INT32 tm_isdst; // DST. [-1/0/1] | |||
LONG wMilliseconds; // milliseconds | |||
} mmSystemTime_t; | |||
typedef sem_t mmSem_t; | |||
@@ -98,72 +98,72 @@ typedef ssize_t mmSsize_t; | |||
typedef size_t mmSize; // size | |||
typedef struct { | |||
UINT32 createFlag; | |||
INT32 oaFlag; | |||
UINT32 createFlag; | |||
INT32 oaFlag; | |||
} mmCreateFlag; | |||
typedef struct { | |||
VOID *sendBuf; | |||
INT32 sendLen; | |||
VOID *sendBuf; | |||
INT32 sendLen; | |||
} mmIovSegment; | |||
typedef struct in_addr mmInAddr; | |||
typedef struct { | |||
VOID *inbuf; | |||
INT32 inbufLen; | |||
VOID *outbuf; | |||
INT32 outbufLen; | |||
mmOverLap *oa; | |||
VOID *inbuf; | |||
INT32 inbufLen; | |||
VOID *outbuf; | |||
INT32 outbufLen; | |||
mmOverLap *oa; | |||
} mmIoctlBuf; | |||
typedef int mmAtomicType; | |||
typedef int mmAtomicType64; | |||
typedef enum { | |||
pollTypeRead = 1, // pipe read | |||
pollTypeRecv, // socket recv | |||
pollTypeIoctl, // ioctl | |||
pollTypeRead = 1, // pipe read | |||
pollTypeRecv, // socket recv | |||
pollTypeIoctl, // ioctl | |||
} mmPollType; | |||
typedef struct { | |||
mmPollHandle handle; // The file descriptor or handle of poll is required | |||
mmPollType pollType; // Operation type requiring poll | |||
mmPollHandle handle; // The file descriptor or handle of poll is required | |||
mmPollType pollType; // Operation type requiring poll | |||
// read or recv or ioctl | |||
INT32 ioctlCode; // IOCTL operation code, dedicated to IOCTL | |||
mmComPletionKey completionKey; // The default value is blank, which is used in windows | |||
INT32 ioctlCode; // IOCTL operation code, dedicated to IOCTL | |||
mmComPletionKey completionKey; // The default value is blank, which is used in windows | |||
// The data used to receive the difference between which handle is readable | |||
} mmPollfd; | |||
typedef struct { | |||
VOID *priv; // User defined private content | |||
mmPollHandle bufHandle; // Value of handle corresponding to buf | |||
mmPollType bufType; // Data types polled to | |||
VOID *buf; // Data used in poll | |||
UINT32 bufLen; // Data length used in poll | |||
UINT32 bufRes; // Actual return length | |||
VOID *priv; // User defined private content | |||
mmPollHandle bufHandle; // Value of handle corresponding to buf | |||
mmPollType bufType; // Data types polled to | |||
VOID *buf; // Data used in poll | |||
UINT32 bufLen; // Data length used in poll | |||
UINT32 bufRes; // Actual return length | |||
} mmPollData, *pmmPollData; | |||
typedef VOID (*mmPollBack)(pmmPollData); | |||
typedef struct { | |||
INT32 tz_minuteswest; // How many minutes is it different from Greenwich | |||
INT32 tz_dsttime; // type of DST correction | |||
INT32 tz_minuteswest; // How many minutes is it different from Greenwich | |||
INT32 tz_dsttime; // type of DST correction | |||
} mmTimezone; | |||
typedef struct { | |||
LONG tv_sec; | |||
LONG tv_usec; | |||
LONG tv_sec; | |||
LONG tv_usec; | |||
} mmTimeval; | |||
typedef struct { | |||
MM_LONG tv_sec; | |||
MM_LONG tv_nsec; | |||
MM_LONG tv_sec; | |||
MM_LONG tv_nsec; | |||
} mmTimespec; | |||
typedef struct { | |||
ULONGLONG totalSize; | |||
ULONGLONG freeSize; | |||
ULONGLONG availSize; | |||
ULONGLONG totalSize; | |||
ULONGLONG freeSize; | |||
ULONGLONG availSize; | |||
} mmDiskSize; | |||
#define mmTLS __thread | |||
@@ -174,40 +174,40 @@ typedef mode_t mmMode_t; | |||
typedef struct option mmStructOption; | |||
typedef struct { | |||
char addr[MMPA_MACINFO_DEFAULT_SIZE]; // ex:aa-bb-cc-dd-ee-ff\0 | |||
CHAR addr[MMPA_MACINFO_DEFAULT_SIZE]; // ex:aa-bb-cc-dd-ee-ff\0 | |||
} mmMacInfo; | |||
typedef struct { | |||
char **argv; | |||
INT32 argvCount; | |||
char **envp; | |||
INT32 envpCount; | |||
CHAR **argv; | |||
INT32 argvCount; | |||
CHAR **envp; | |||
INT32 envpCount; | |||
} mmArgvEnv; | |||
typedef struct { | |||
char arch[MMPA_CPUDESC_DEFAULT_SIZE]; | |||
char manufacturer[MMPA_CPUDESC_DEFAULT_SIZE]; // vendor | |||
char version[MMPA_CPUDESC_DEFAULT_SIZE]; // modelname | |||
INT32 frequency; // cpu frequency | |||
INT32 maxFrequency; // max speed | |||
INT32 ncores; // cpu cores | |||
INT32 nthreads; // cpu thread count | |||
INT32 ncounts; // logical cpu nums | |||
CHAR arch[MMPA_CPUDESC_DEFAULT_SIZE]; | |||
CHAR manufacturer[MMPA_CPUDESC_DEFAULT_SIZE]; // vendor | |||
CHAR version[MMPA_CPUDESC_DEFAULT_SIZE]; // modelname | |||
INT32 frequency; // cpu frequency | |||
INT32 maxFrequency; // max speed | |||
INT32 ncores; // cpu cores | |||
INT32 nthreads; // cpu thread count | |||
INT32 ncounts; // logical cpu nums | |||
} mmCpuDesc; | |||
typedef mode_t MODE; | |||
typedef struct { | |||
INT32 detachFlag; // Determine whether to set separation property 0, not to separate 1 | |||
INT32 priorityFlag; // Determine whether to set priority 0 and not set 1 | |||
INT32 priority; // Priority value range to be set 1-99 | |||
INT32 policyFlag; // Set scheduling policy or not 0 do not set 1 setting | |||
INT32 policy; // Scheduling policy value value | |||
// MMPA_THREAD_SCHED_RR | |||
// MMPA_THREAD_SCHED_OTHER | |||
// MMPA_THREAD_SCHED_FIFO | |||
INT32 stackFlag; // Set stack size or not: 0 does not set 1 setting | |||
UINT32 stackSize; // The stack size unit bytes to be set cannot be less than MMPA_THREAD_STACK_MIN | |||
INT32 detachFlag; // Determine whether to set separation property 0, not to separate 1 | |||
INT32 priorityFlag; // Determine whether to set priority 0 and not set 1 | |||
INT32 priority; // Priority value range to be set 1-99 | |||
INT32 policyFlag; // Set scheduling policy or not 0 do not set 1 setting | |||
INT32 policy; // Scheduling policy value value | |||
// MMPA_THREAD_SCHED_RR | |||
// MMPA_THREAD_SCHED_OTHER | |||
// MMPA_THREAD_SCHED_FIFO | |||
INT32 stackFlag; // Set stack size or not: 0 does not set 1 setting | |||
UINT32 stackSize; // The stack size unit bytes to be set cannot be less than MMPA_THREAD_STACK_MIN | |||
} mmThreadAttr; | |||
#ifdef __ANDROID__ | |||
@@ -326,8 +326,8 @@ MMPA_FUNC_VISIBILITY INT32 mmCondDestroy(mmCond *cond); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetPid(); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetTid(); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetPidHandle(mmProcess *processHandle); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetLocalTime(mmSystemTime_t *sysTime); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetSystemTime(mmSystemTime_t *sysTime); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetLocalTime(mmSystemTime_t *sysTimePtr); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetSystemTime(mmSystemTime_t *sysTimePtr); | |||
MMPA_FUNC_VISIBILITY INT32 mmSemInit(mmSem_t *sem, UINT32 value); | |||
MMPA_FUNC_VISIBILITY INT32 mmSemWait(mmSem_t *sem); | |||
@@ -393,7 +393,7 @@ MMPA_FUNC_VISIBILITY mmSsize_t mmWritev(mmProcess fd, mmIovSegment *iov, INT32 i | |||
MMPA_FUNC_VISIBILITY VOID mmMb(); | |||
MMPA_FUNC_VISIBILITY INT32 mmInetAton(const CHAR *addrStr, mmInAddr *addr); | |||
MMPA_FUNC_VISIBILITY mmProcess mmOpenFile(const CHAR *fileName, UINT32 access, mmCreateFlag fileFlag); | |||
MMPA_FUNC_VISIBILITY mmProcess mmOpenFile(const CHAR *fileName, UINT32 accessFlag, mmCreateFlag fileFlag); | |||
MMPA_FUNC_VISIBILITY mmSsize_t mmReadFile(mmProcess fileId, VOID *buffer, INT32 len); | |||
MMPA_FUNC_VISIBILITY mmSsize_t mmWriteFile(mmProcess fileId, VOID *buffer, INT32 len); | |||
MMPA_FUNC_VISIBILITY INT32 mmCloseFile(mmProcess fileId); | |||
@@ -407,13 +407,13 @@ MMPA_FUNC_VISIBILITY mmAtomicType64 mmValueSub64(mmAtomicType64 *ptr, mmAtomicTy | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateTaskWithDetach(mmThread *threadHandle, mmUserBlock_t *funcBlock); | |||
// The following 3 interfaces are to be deleted | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateNamedPipe(mmPipeHandle pipe[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenNamePipe(mmPipeHandle pipe[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateNamedPipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenNamePipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY VOID mmCloseNamedPipe(mmPipeHandle namedPipe[]); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreatePipe(mmPipeHandle pipe[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenPipe(mmPipeHandle pipe[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY VOID mmClosePipe(mmPipeHandle pipe[], UINT32 pipeCount); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreatePipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenPipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY VOID mmClosePipe(mmPipeHandle pipeHandle[], UINT32 pipeCount); | |||
// Poll related interface | |||
MMPA_FUNC_VISIBILITY mmCompletionHandle mmCreateCompletionPort(); | |||
@@ -467,10 +467,10 @@ MMPA_FUNC_VISIBILITY INT32 mmGetOptOpt(); | |||
MMPA_FUNC_VISIBILITY VOID mmSetOpOpt(INT32 mmOptOpt); | |||
MMPA_FUNC_VISIBILITY CHAR *mmGetOptArg(); | |||
MMPA_FUNC_VISIBILITY VOID mmSetOptArg(CHAR *mmOptArg); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetOpt(INT32 argc, char *const *argv, const char *opts); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetOpt(INT32 argc, CHAR *const *argv, const CHAR *opts); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetOptLong(INT32 argc, | |||
char *const *argv, | |||
const char *opts, | |||
CHAR *const *argv, | |||
const CHAR *opts, | |||
const mmStructOption *longOpts, | |||
INT32 *longIndex); | |||
@@ -496,7 +496,7 @@ MMPA_FUNC_VISIBILITY INT32 mmSetEnv(const CHAR *name, const CHAR *value, INT32 o | |||
MMPA_FUNC_VISIBILITY CHAR *mmStrTokR(CHAR *str, const CHAR *delim, CHAR **saveptr); | |||
MMPA_FUNC_VISIBILITY CHAR *mmDirName(CHAR *path); | |||
MMPA_FUNC_VISIBILITY CHAR *mmBaseName(CHAR *path); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetDiskFreeSpace(const char *path, mmDiskSize *diskSize); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetDiskFreeSpace(const CHAR *path, mmDiskSize *diskSize); | |||
/* | |||
* Function: set the thread name created by mmcreatetask | |||
@@ -540,7 +540,7 @@ MMPA_FUNC_VISIBILITY INT32 mmGetCpuInfo(mmCpuDesc **cpuInfo, INT32 *count); | |||
MMPA_FUNC_VISIBILITY INT32 mmCpuInfoFree(mmCpuDesc *cpuInfo, INT32 count); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateProcess(const CHAR *fileName, | |||
const mmArgvEnv *env, | |||
const char *stdoutRedirectFile, | |||
const CHAR *stdoutRedirectFile, | |||
mmProcess *id); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateTaskWithThreadAttr(mmThread *threadHandle, | |||
@@ -368,8 +368,8 @@ MMPA_FUNC_VISIBILITY INT32 mmCondDestroy(mmCond *cond); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetPid(VOID); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetTid(VOID); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetPidHandle(mmProcess *processHandle); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetLocalTime(mmSystemTime_t *sysTime); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetSystemTime(mmSystemTime_t *sysTime); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetLocalTime(mmSystemTime_t *sysTimePtr); | |||
MMPA_FUNC_VISIBILITY INT32 mmGetSystemTime(mmSystemTime_t *sysTimePtr); | |||
MMPA_FUNC_VISIBILITY INT32 mmSemInit(mmSem_t *sem, UINT32 value); | |||
MMPA_FUNC_VISIBILITY INT32 mmSemWait(mmSem_t *sem); | |||
MMPA_FUNC_VISIBILITY INT32 mmSemPost(mmSem_t *sem); | |||
@@ -431,7 +431,7 @@ MMPA_FUNC_VISIBILITY mmSsize_t mmWritev(mmSockHandle fd, mmIovSegment *iov, INT3 | |||
MMPA_FUNC_VISIBILITY VOID mmMb(); | |||
MMPA_FUNC_VISIBILITY INT32 mmInetAton(const CHAR *addrStr, mmInAddr *addr); | |||
MMPA_FUNC_VISIBILITY mmProcess mmOpenFile(const CHAR *fileName, UINT32 access, mmCreateFlag fileFlag); | |||
MMPA_FUNC_VISIBILITY mmProcess mmOpenFile(const CHAR *fileName, UINT32 accessFlag, mmCreateFlag fileFlag); | |||
MMPA_FUNC_VISIBILITY mmSsize_t mmReadFile(mmProcess fileId, VOID *buffer, INT32 len); | |||
MMPA_FUNC_VISIBILITY mmSsize_t mmWriteFile(mmProcess fileId, VOID *buffer, INT32 len); | |||
MMPA_FUNC_VISIBILITY INT32 mmCloseFile(mmProcess fileId); | |||
@@ -444,13 +444,13 @@ MMPA_FUNC_VISIBILITY mmAtomicType64 mmValueInc64(mmAtomicType64 *ptr, mmAtomicTy | |||
MMPA_FUNC_VISIBILITY mmAtomicType64 mmValueSub64(mmAtomicType64 *ptr, mmAtomicType64 value); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateTaskWithDetach(mmThread *threadHandle, mmUserBlock_t *funcBlock); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateNamedPipe(mmPipeHandle pipe[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenNamePipe(mmPipeHandle pipe[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreateNamedPipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenNamePipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY VOID mmCloseNamedPipe(mmPipeHandle namedPipe[]); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreatePipe(mmPipeHandle pipe[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenPipe(mmPipeHandle pipe[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY VOID mmClosePipe(mmPipeHandle pipe[], UINT32 pipeCount); | |||
MMPA_FUNC_VISIBILITY INT32 mmCreatePipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY INT32 mmOpenPipe(mmPipeHandle pipeHandle[], CHAR *pipeName[], UINT32 pipeCount, INT32 waitMode); | |||
MMPA_FUNC_VISIBILITY VOID mmClosePipe(mmPipeHandle pipeHandle[], UINT32 pipeCount); | |||
MMPA_FUNC_VISIBILITY mmCompletionHandle mmCreateCompletionPort(); | |||
MMPA_FUNC_VISIBILITY VOID mmCloseCompletionPort(mmCompletionHandle handle); | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -701,6 +701,31 @@ REG_OP(Unsqueeze) | |||
.ATTR(axes, ListInt, {}) | |||
.OP_END_FACTORY_REG(Unsqueeze) | |||
/** | |||
*@brief Inserts a dimension of 1 into a tensor's shape. Only the tensor shape is changed, without changing the data. \n | |||
*@par Inputs: | |||
*@li x: Original tensor. | |||
*@par Attributes: | |||
*@li axes: List of ints indicating the dimensions to be inserted. \n | |||
*@par Outputs: | |||
*y: Reshape tensor with same data as input. \n | |||
*@par Third-party framework compatibility | |||
*Compatible with the Onnx operator Unsqueeze. | |||
*@par Restrictions: | |||
* Warning: THIS FUNCTION IS DEPRECATED. Please use Unsqueeze instead. | |||
*/ | |||
REG_OP(UnsqueezeV2) | |||
.INPUT(x, TensorType::ALL()) | |||
.OUTPUT(y, TensorType::ALL()) | |||
.ATTR(axis, ListInt, {}) | |||
.OP_END_FACTORY_REG(UnsqueezeV2) | |||
/** | |||
*@brief Reshapes a tensor. Only the tensor shape is changed, without changing the data. \n | |||
@@ -753,6 +778,30 @@ REG_OP(Squeeze) | |||
.ATTR(axis, ListInt, {}) | |||
.OP_END_FACTORY_REG(Squeeze) | |||
/** | |||
*@brief Removes dimensions of size 1 from the shape of a tensor. \n | |||
*@par Inputs: | |||
*x: A tensor. \n | |||
*@par Attributes: | |||
*axis: An optional list of int32 or int64. If not specified, squeezes all dimensions of size 1. If specified, only squeezes the dimensions listed. It is an error to squeeze a dimension that is not 1. \n | |||
*@par Outputs: | |||
*y: A tensor. \n | |||
*@par Third-party framework compatibility | |||
*Compatible with the TensorFlow operator Squeeze. | |||
*@par Restrictions: | |||
* Warning: THIS FUNCTION IS DEPRECATED. Please use Squeeze instead. | |||
*/ | |||
REG_OP(SqueezeV2) | |||
.INPUT(x, TensorType::ALL()) | |||
.OUTPUT(y, TensorType::ALL()) | |||
.ATTR(axis, ListInt, {}) | |||
.OP_END_FACTORY_REG(SqueezeV2) | |||
/** | |||
*@brief Returns an integer representing the rank of input tensor. The rank of a tensor is the number of indices required to uniquely select each element of the tensor, that is, the dimension size of the tensor. \n | |||
@@ -1226,6 +1275,35 @@ REG_OP(NonZero) | |||
.ATTR(dtype, Type, DT_INT64) | |||
.OP_END_FACTORY_REG(NonZero) | |||
/** | |||
*@Returns a tensor containing the indices of all non-zero elements of input. \n | |||
*@par Inputs: | |||
*x: A Tensor. Must be one of the following types: float16, float32, int32, int64. | |||
*@par Attributes: | |||
* transpose: the output tensor will be transposed if true. \n | |||
*@par Outputs: | |||
* value: A Tensor. Has the same type as "x" . \n | |||
* index: A Tensor. The type is INT32, means index for input. \n | |||
* count: A Scalar. The type is INT32, means count for non_zero ele in input. \n | |||
*@par Third-party framework compatibility | |||
*Compatible with the PyTorch operator NonZeroWithValue. | |||
*/ | |||
REG_OP(NonZeroWithValue) | |||
.INPUT(x, TensorType({DT_DOUBLE, DT_FLOAT, DT_FLOAT16, DT_INT8, DT_UINT8, DT_INT16, \ | |||
DT_UINT16, DT_INT32, DT_UINT32, DT_INT64, DT_UINT64, DT_BOOL})) | |||
.OUTPUT(value, TensorType({DT_DOUBLE, DT_FLOAT, DT_FLOAT16, DT_INT8, DT_UINT8, DT_INT16, \ | |||
DT_UINT16, DT_INT32, DT_UINT32, DT_INT64, DT_UINT64, DT_BOOL})) | |||
.OUTPUT(index, TensorType({DT_INT32})) | |||
.OUTPUT(count, TensorType({DT_INT32})) | |||
.ATTR(transpose, Bool, false) | |||
.ATTR(dtype, Type, DT_INT32) | |||
.OP_END_FACTORY_REG(NonZeroWithValue) | |||
/** | |||
* @brief Expand the input tensor to a compatible shape. \n | |||
@@ -1258,24 +1336,53 @@ REG_OP(ExpandD) | |||
* Three inputs, including: | |||
* @li bucket_list: A 1-D tensor of type int32 with the value of ivf_counts and ivf_offset index. \n | |||
* @li ivf_counts: A 1-D tensor of type int32 with the value of ivf counts. \n | |||
* @li ivf_offset: A 1-D tensor of type int32 with the value of ivf offset. \n | |||
* @li ivf_offset: A 1-D tensor of type int32 or int64 with the value of ivf offset. \n | |||
* @par Attributes: | |||
* total_limit: A int64 type maximum value of the sum of ivf_counts corresponding to bucket_list. \n | |||
* @par Outputs: | |||
* @li buckets_limit: A 1-D tensor of type int32 with the sum <= total_limit. \n | |||
* @li buckets_offset: A 1-D tensor of type int32 with the value of ivf_offset corresponding to bucket_list. \n | |||
* @li buckets_offset: A 1-D tensor of type int32 or int64 with the value of ivf_offset corresponding to bucket_list. \n | |||
*/ | |||
REG_OP(CalcBucketsLimitAndOffset) | |||
.INPUT(bucket_list, TensorType({DT_INT32})) | |||
.INPUT(ivf_counts, TensorType({DT_INT32})) | |||
.INPUT(ivf_offset, TensorType({DT_INT32})) | |||
.INPUT(ivf_offset, TensorType({DT_INT32, DT_INT64})) | |||
.OUTPUT(buckets_limit, TensorType({DT_INT32})) | |||
.OUTPUT(buckets_offset, TensorType({DT_INT32})) | |||
.OUTPUT(buckets_offset, TensorType({DT_INT32, DT_INT64})) | |||
.REQUIRED_ATTR(total_limit, Int) | |||
.OP_END_FACTORY_REG(CalcBucketsLimitAndOffset) | |||
/** | |||
*@brief Get dim number in tensordesc. \n | |||
*@par Inputs: | |||
*x: A Tensor. \n | |||
*@par Outputs: | |||
*y: A 1D tensor. The data type must be int32. \n | |||
*/ | |||
REG_OP(GetShape) | |||
.DYNAMIC_INPUT(x, TensorType({DT_DOUBLE, DT_FLOAT, DT_FLOAT16, DT_INT8, DT_UINT8, DT_INT16, \ | |||
DT_UINT16, DT_INT32, DT_UINT32, DT_INT64, DT_UINT64, DT_BOOL})) | |||
.OUTPUT(y, TensorType({DT_INT32})) | |||
.OP_END_FACTORY_REG(GetShape) | |||
/** | |||
*@brief Update the tensor_desc of the output. \n | |||
* @par attributes: | |||
* @li shape: A listInt contains the data to update. \n | |||
*@par outputs: | |||
* y: a tensor_desc, type is int.\n | |||
*/ | |||
REG_OP(UpdateTensorDesc) | |||
.OUTPUT(y, TensorType({DT_BOOL, DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT32, DT_UINT8, | |||
DT_INT64, DT_UINT64, DT_INT16, DT_UINT16, DT_DOUBLE})) | |||
.REQUIRED_ATTR(shape, ListInt) | |||
.OP_END_FACTORY_REG(UpdateTensorDesc) | |||
} // namespace ge | |||
#endif // OPS_BUILT_IN_OP_PROTO_INC_ARRAY_OPS_H_ |
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -0,0 +1,58 @@ | |||
/** | |||
* 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. | |||
*/ | |||
/*! | |||
* \file cluster.h | |||
* \brief | |||
*/ | |||
#ifndef OPS_BUILT_IN_OP_PROTO_INC_CLUSTER_H_ | |||
#define OPS_BUILT_IN_OP_PROTO_INC_CLUSTER_H_ | |||
#include "graph/operator_reg.h" | |||
#include "graph/operator.h" | |||
namespace ge { | |||
/** | |||
* @brief Perform k-means clustering on a data matrix. \n | |||
* @par Inputs: | |||
* Three required inputs and one optional inputs, including: \n | |||
* @li x: A 2D tensor of data type float32. \n | |||
* @li y: A 2D tensor of data type float32. \n | |||
* @li sum_square_x: An optional 2D tensor of data type float32. \n | |||
* @li sum_square_y: A 2D tensor of data type float32. \n | |||
* @par Attributes: | |||
* use_actual_distance: Indicates whether to calculate the complete distance. \n | |||
* @par Outputs: | |||
* @li segment_sum: A tensor of data type float32. \n | |||
* @li segment_count: A tensor of data type float32. \n | |||
* @li k_mean_total_sum: A tensor of data type float32. \n | |||
*/ | |||
REG_OP(KMeansCentroids) | |||
.INPUT(x, TensorType({DT_FLOAT})) | |||
.INPUT(y, TensorType({DT_FLOAT})) | |||
.INPUT(sum_square_y, TensorType({DT_FLOAT})) | |||
.OPTIONAL_INPUT(sum_square_x, TensorType({DT_FLOAT})) | |||
.OUTPUT(segment_sum, TensorType({DT_FLOAT})) | |||
.OUTPUT(segment_count, TensorType({DT_FLOAT})) | |||
.OUTPUT(kmean_total_sum, TensorType({DT_FLOAT})) | |||
.ATTR(use_actual_distance, Bool, false) | |||
.OP_END_FACTORY_REG(KMeansCentroids) | |||
} // namespace ge | |||
#endif // OPS_BUILT_IN_OP_PROTO_INC_CLUSTER_H_ |
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -2336,12 +2336,14 @@ REG_OP(CacheAllIndexToLocal) | |||
/** | |||
*@brief LRUCacheV2, aicore LRUCache. | |||
*@par Inputs: | |||
*index_list: exchange index list | |||
*data: host data | |||
*cache: gm cache | |||
*tag: cache's tag | |||
*is_last_call: if is last call write all cache to data | |||
*@par Outputs: | |||
*data: output data | |||
*cache: gm cache | |||
@@ -2349,8 +2351,11 @@ REG_OP(CacheAllIndexToLocal) | |||
*index_offset_list: index_offset_list | |||
*not_in_cache_index_list: output not in cache's index_list | |||
*not_in_cache_number: scalar | |||
*@par Attributes: | |||
*pre_route_count: types of all outputs | |||
*@par Restrictions: | |||
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use. | |||
*/ | |||
REG_OP(LRUCacheV2) | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -132,7 +132,7 @@ REG_OP(MinimumGrad) | |||
*dst_type: An required attribute of type int32, specifying the dst data type. \n | |||
*@par Outputs: | |||
*y:A Tensor. Has the same type as x. | |||
*y:A Tensor with same shape as x, and data type is specified by dst_type. | |||
*/ | |||
REG_OP(Cast) | |||
.INPUT(x, TensorType({DT_BOOL, DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT32, DT_UINT8, | |||
@@ -3391,57 +3391,57 @@ REG_OP(TensorRedirect) | |||
.OP_END_FACTORY_REG(TensorRedirect) | |||
/** | |||
* @brief Performs the element-wise division of tensor x2 by tensor x3, | |||
* multiply the result by the scalar value and add it to tensor x1 | |||
* @brief Performs the element-wise division of tensor x1 by tensor x2, | |||
* multiply the result by the scalar value and add it to tensor input_data. | |||
* @par Inputs: | |||
* Four inputs, including: | |||
* @li input_data: A mutable input Tensor. Must be one of the following types: | |||
* float16, float32. | |||
* @li x1: A mutable input Tensor of the same type as x1. | |||
* @li x2: A mutable input Tensor of the same type as x1. | |||
* float16, float32, double, int64. | |||
* @li x1: A mutable input Tensor of the same type as input_data. | |||
* @li x2: A mutable input Tensor of the same type as input_data. | |||
* @li value: A mutable input Tensor. Must be one of the following types: | |||
* float16, float32, int32. \n | |||
* float16, float32, double, int64, int32. \n | |||
* @par Outputs: | |||
* y: A mutable Tensor. Has the same type as "x1". \n | |||
* y: A mutable Tensor. Has the same type as input_data. \n | |||
* @par Third-party framework compatibility | |||
* Compatible with the Pytorch operator Addcdiv. | |||
* Compatible with the Pytorch operator Addcdiv(version-1.5.0). | |||
*/ | |||
REG_OP(Addcdiv) | |||
.INPUT(input_data, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(x1, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(x2, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(value, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT32})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(input_data, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64})) | |||
.INPUT(x1, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64})) | |||
.INPUT(x2, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64})) | |||
.INPUT(value, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT32, DT_DOUBLE, DT_INT64})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64})) | |||
.OP_END_FACTORY_REG(Addcdiv) | |||
/** | |||
* @brief Performs the element-wise multiplication of tensor x2 by tensor x3, | |||
* @brief Performs the element-wise multiplication of tensor x1 by tensor x2, | |||
* multiply the result by the scalar value and add it to tensor input_data | |||
* @par Inputs: | |||
* Four inputs, including: | |||
* @li input_data: A mutable input Tensor. Must be one of the following types: | |||
* float16, float32, int8, int32, uint8. | |||
* @li x1: A mutable input Tensor of the same type as x1. | |||
* @li x2: A mutable input Tensor of the same type as x1. | |||
* @li value: A tensor which includes only one element of the same type as x1. \n | |||
* float16, float32, double, int64, int8, int32, uint8. | |||
* @li x1: A mutable input Tensor of the same type as input_data. | |||
* @li x2: A mutable input Tensor of the same type as input_data. | |||
* @li value: A tensor which includes only one element of the same type as input_data. \n | |||
* @par Outputs: | |||
* y: A mutable output Tensor. Has the same type as "x1". \n | |||
* y: A mutable output Tensor. Has the same type as input_data. \n | |||
* @par Third-party framework compatibility | |||
* Compatible with the Pytorch operator Addcmul. | |||
*/ | |||
REG_OP(Addcmul) | |||
.INPUT(input_data, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8 })) | |||
.INPUT(x1, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8 })) | |||
.INPUT(x2, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8 })) | |||
.INPUT(value, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8 })) | |||
.OUTPUT(y, TensorType({ DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8 })) | |||
.INPUT(input_data, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8, DT_DOUBLE, DT_INT64})) | |||
.INPUT(x1, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8, DT_DOUBLE, DT_INT64})) | |||
.INPUT(x2, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8, DT_DOUBLE, DT_INT64})) | |||
.INPUT(value, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8, DT_DOUBLE, DT_INT64})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_INT32, DT_UINT8, DT_DOUBLE, DT_INT64})) | |||
.OP_END_FACTORY_REG(Addcmul) | |||
/** | |||
@@ -3508,8 +3508,8 @@ REG_OP(StrideAdd) | |||
* Compatible with the Pytorch equal operator. \n | |||
*/ | |||
REG_OP(TensorEqual) | |||
.INPUT(input_x, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32, DT_INT8, DT_UINT8})) | |||
.INPUT(input_y, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32, DT_INT8, DT_UINT8})) | |||
.INPUT(input_x, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64, DT_INT32, DT_INT8, DT_UINT8})) | |||
.INPUT(input_y, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE, DT_INT64, DT_INT32, DT_INT8, DT_UINT8})) | |||
.OUTPUT(output_z, TensorType({DT_BOOL})) | |||
.OP_END_FACTORY_REG(TensorEqual) | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1848,14 +1848,51 @@ REG_OP(DenseImageWarpGrad) | |||
*Warning:THIS FUNCTION IS EXPERIMENTAL. Please do not use. | |||
*/ | |||
REG_OP(GridSampler2D) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(grid, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.INPUT(grid, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.ATTR(interpolation_mode, String, "bilinear") | |||
.ATTR(padding_mode, String, "zeros") | |||
.ATTR(align_corners, Bool, false) | |||
.OP_END_FACTORY_REG(GridSampler2D) | |||
/** | |||
*@brief Computes the gradients of GridSampler2D. | |||
*@par Inputs: | |||
*@li grad: A 4-D Tensor with shape `[batch, channels, height, width]`. | |||
*@li x: A 4-D Tensor with shape `[batch, channels, height, width]`. | |||
*@li grid: flow field grid, 4-D Tensor with shape `[batch, height, width, 2]`. | |||
*@par Attributes: | |||
*@li interpolation_mode: An optional string specifying the interpolation method. | |||
Defaults to "bilinear". | |||
*@li padding_mode: An optional string specifying the pad method. | |||
Defaults to "zeros". | |||
*@li align_corners: An optional bool. If "true", the centers of the corner | |||
pixels of the input and output tensors are aligned. Defaults to false. | |||
*@par Outputs: | |||
*dx: Returns 4-D Tensor with the same dtype and shape as `x`. | |||
*dgrid: Returns 4-D Tensor with the same dtype and shape as `grid`. | |||
*@par Third-party framework compatibility | |||
*Compatible with pytorch GridSampler2DGrad operator. | |||
*@par Restrictions: | |||
*Warning:THIS FUNCTION IS EXPERIMENTAL. Please do not use. | |||
*/ | |||
REG_OP(GridSampler2DGrad) | |||
.INPUT(grad, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.INPUT(grid, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.OUTPUT(dx, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.OUTPUT(dgrid, TensorType({DT_FLOAT16, DT_FLOAT, DT_DOUBLE})) | |||
.ATTR(interpolation_mode, String, "bilinear") | |||
.ATTR(padding_mode, String, "zeros") | |||
.ATTR(align_corners, Bool, false) | |||
.OP_END_FACTORY_REG(GridSampler2DGrad) | |||
/** | |||
*@brief This operation unnormalize input Grid, which is usually gennerated by affine_grid. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -410,10 +410,10 @@ form square matrices. \n | |||
*/ | |||
REG_OP(Svd) | |||
.INPUT(x, TensorType({ DT_DOUBLE, DT_FLOAT })) | |||
.OUTPUT(sigma, TensorType({ DT_DOUBLE, DT_FLOAT })) | |||
.OUTPUT(u, TensorType({ DT_DOUBLE, DT_FLOAT })) | |||
.OUTPUT(v, TensorType({ DT_DOUBLE, DT_FLOAT })) | |||
.INPUT(x, TensorType({ DT_DOUBLE, DT_FLOAT, DT_COMPLEX64, DT_COMPLEX128 })) | |||
.OUTPUT(sigma, TensorType({ DT_DOUBLE, DT_FLOAT, DT_COMPLEX64, DT_COMPLEX128 })) | |||
.OUTPUT(u, TensorType({ DT_DOUBLE, DT_FLOAT, DT_COMPLEX64, DT_COMPLEX128 })) | |||
.OUTPUT(v, TensorType({ DT_DOUBLE, DT_FLOAT, DT_COMPLEX64, DT_COMPLEX128 })) | |||
.ATTR(compute_uv, Bool, true) | |||
.ATTR(full_matrices, Bool, false) | |||
.OP_END_FACTORY_REG(Svd) | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -480,7 +480,7 @@ REG_OP(HistogramFixedWidth) | |||
.INPUT(range, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32, DT_INT64})) | |||
.INPUT(nbins, TensorType({DT_INT32})) | |||
.OUTPUT(y, TensorType({DT_INT32})) | |||
.ATTR(dtype, String, "int32") | |||
.ATTR(dtype, Int, 3) | |||
.OP_END_FACTORY_REG(HistogramFixedWidth) | |||
/** | |||
@@ -511,7 +511,7 @@ REG_OP(HistogramFixedWidthD) | |||
.INPUT(range, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32, DT_INT64})) | |||
.OUTPUT(y, TensorType({DT_INT32})) | |||
.REQUIRED_ATTR(nbins, Int) | |||
.ATTR(dtype, String, "int32") | |||
.ATTR(dtype, Int, 3) | |||
.OP_END_FACTORY_REG(HistogramFixedWidthD) | |||
/** | |||
@@ -938,6 +938,57 @@ REG_OP(LpNorm) | |||
.ATTR(epsilon, Float, 1e-12) | |||
.OP_END_FACTORY_REG(LpNorm) | |||
/** | |||
* @brief Computes LpNormReduce. | |||
* @par Inputs: | |||
* x: An ND tensor of type float16, float32. \n | |||
* | |||
* @par Attributes: | |||
* @li p: Int, "inf" or "-inf", default value is 2. | |||
* @li axes: ListInt, {} means all axes will be computed. | |||
* @li keepdim: Bool, default is false. | |||
* @li epsilon: Float, default is 1e-12. \n | |||
* @par Outputs: | |||
* y: An ND tensor of type float16, float32. The shape of y is depending | |||
* on axes and keepdim. \n | |||
* @par Third-party framework compatibility | |||
* Compatible with the Pytorch operator LpNormReduce. | |||
*/ | |||
REG_OP(LpNormReduce) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.ATTR(p, Int, 2) | |||
.ATTR(axes, ListInt, {}) | |||
.ATTR(keepdim, Bool, false) | |||
.ATTR(epsilon, Float, 1e-12) | |||
.OP_END_FACTORY_REG(LpNormReduce) | |||
/** | |||
* @brief Computes LpNormUpdate. | |||
* @par Inputs: | |||
* x: An ND tensor of type float16, float32. \n | |||
* | |||
* @par Attributes: | |||
* @li p: Int, "inf" or "-inf", default value is 2. | |||
* @li epsilon: Float, default is 1e-12. \n | |||
* @par Outputs: | |||
* y: An ND tensor of type float16, float32. \n | |||
* @par Third-party framework compatibility | |||
* Compatible with the Pytorch operator LpNormUpdate. | |||
*/ | |||
REG_OP(LpNormUpdate) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.ATTR(p, Int, 2) | |||
.ATTR(epsilon, Float, 1e-12) | |||
.OP_END_FACTORY_REG(LpNormUpdate) | |||
/** | |||
* @brief get complex. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -49,10 +49,10 @@ namespace ge { | |||
* Compatible with the TensorFlow operator BatchMatmul. | |||
*/ | |||
REG_OP(MatMul) | |||
.INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32})) | |||
.INPUT(x2, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32})) | |||
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32})) | |||
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32})) | |||
.INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16})) | |||
.INPUT(x2, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16})) | |||
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16})) | |||
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16})) | |||
.ATTR(transpose_x1, Bool, false) | |||
.ATTR(transpose_x2, Bool, false) | |||
.OP_END_FACTORY_REG(MatMul) | |||
@@ -88,10 +88,10 @@ REG_OP(MatMul) | |||
* Compatible with the TensorFlow operator BatchMatmul. | |||
*/ | |||
REG_OP(MatMulV2) | |||
.INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_INT8, DT_INT4})) | |||
.INPUT(x2, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_INT8 DT_INT4})) | |||
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32})) | |||
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32})) | |||
.INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_INT8, DT_INT4, DT_BF16})) | |||
.INPUT(x2, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_INT8, DT_INT4, DT_BF16})) | |||
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16})) | |||
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16})) | |||
.OPTIONAL_INPUT(offset_w, TensorType({DT_INT8, DT_INT4})) | |||
.ATTR(transpose_x1, Bool, false) | |||
.ATTR(transpose_x2, Bool, false) | |||
@@ -531,6 +531,36 @@ REG_OP(ScatterAdd) | |||
.ATTR(use_locking, Bool, false) | |||
.OP_END_FACTORY_REG(ScatterAdd) | |||
/** | |||
*@brief Adds sparse "updates" to a variable reference . \n | |||
*@par Inputs: | |||
* Three inputs, including: | |||
*@li var: An ND Tensor . | |||
*Must be one of the following types: float16, float32, int32, int8, uint8 | |||
*@li indices: An ND Tensor of type int32 or int64 | |||
*@li updates: An ND Tensor . | |||
*Must be one of the following types: float16, float32, int32, int8, uint8 | |||
*@par Attributes: | |||
* axis: An required int. The axis along which to index. \n | |||
*@par Outputs: | |||
*var: A Tensor. Has the same type and format as input "var" . \n | |||
*@par Third-party framework compatibility | |||
* Compatible with the pytorch operator ScatterAdd. | |||
*/ | |||
REG_OP(ScatterAddWithAxis) | |||
.INPUT(var, TensorType({DT_FLOAT16,DT_FLOAT,DT_INT32,DT_INT8,DT_UINT8})) | |||
.INPUT(indices, TensorType::IndexNumberType()) | |||
.INPUT(updates, TensorType({DT_FLOAT16,DT_FLOAT,DT_INT32,DT_INT8,DT_UINT8})) | |||
.OUTPUT(var, TensorType({DT_FLOAT16,DT_FLOAT,DT_INT32,DT_INT8,DT_UINT8})) | |||
.REQUIRED_ATTR(axis, Int) | |||
.OP_END_FACTORY_REG(ScatterAddWithAxis) | |||
/** | |||
*@brief Divides a variable reference by sparse updates . \n | |||
@@ -1066,6 +1096,40 @@ REG_OP(MatrixSetDiagV2) | |||
.OUTPUT(output, TensorType::BasicType()) | |||
.OP_END_FACTORY_REG(MatrixSetDiagV2) | |||
/** | |||
*@brief Returns a batched matrix tensor with new batched diagonal values . \n | |||
*@par Inputs: | |||
* Three inputs, including: | |||
*@li input: "Rank `r+1`, where `r >= 1`. \n | |||
*@li diagonal: Rank `r` when `k` is an integer or `k[0] == k[1]`. Otherwise, it has rank `r+1`. \n | |||
*@li k: | |||
*Diagonal offset(s). Positive value means superdiagonal, 0 refers to the main \n | |||
*diagonal, and negative value means subdiagonals. `k` can be a single integer \n | |||
*(for a single diagonal) or a pair of integers specifying the low and high ends \n | |||
*of a matrix band. `k[0]` must not be larger than `k[1]`. \n | |||
*@par Attributes: | |||
*@li align: An optional string. Defaults to RIGHT_LEFT. It is a string specifying \n | |||
*how superdiagonals and subdiagonals should be aligned, respectively. \n | |||
*other optional: LEFT_RIGHT, LEFT_LEFT, and RIGHT_RIGHT.\n | |||
*@par Outputs: | |||
*output: Rank `r+1`, with `output.shape = input.shape` . \n | |||
*@par Third-party framework compatibility | |||
* Compatible with the TensorFlow operator ScatterUpdate. | |||
*/ | |||
REG_OP(MatrixSetDiagV3) | |||
.INPUT(input, TensorType::BasicType()) | |||
.INPUT(diagonal, TensorType::BasicType()) | |||
.INPUT(k, TensorType({DT_INT32})) | |||
.OUTPUT(output, TensorType::BasicType()) | |||
.ATTR(align, String, "RIGHT_LEFT") | |||
.OP_END_FACTORY_REG(MatrixSetDiagV3) | |||
/** | |||
*@brief Returns a batched diagonal tensor with given batched diagonal values . \n | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -114,7 +114,8 @@ Must be 5D if input "x" is with format NC1HWC0. Specifies the variance of "x". | |||
*@li reserve_space_1: An optional Tensor of type float32. Must be 1D if input "x" is with format NHWC or NCHW. | |||
Must be 5D if input "x" is with format NC1HWC0. Specifies the mean of "x" for gradient computation. Pass "None" to skip this output. | |||
*@li reserve_space_2: An optional Tensor of type float32. Must be 1D if input "x" is with format NHWC or NCHW. | |||
Must be 5D if input "x" is with format NC1HWC0. Specifies the variance of "x" for gradient computation. Pass "None" to skip this output . \n | |||
Must be 5D if input "x" is with format NC1HWC0. Specifies the variance of "x" for gradient computation. Pass "None" to skip this output . | |||
*@li reserve_space_3: An optional Tensor of type float32. For compatibility with tensorflow, only has one useless element. \n | |||
*@attention Constraints: | |||
*@li If the operation is used for inference and outputs "reserve_space_1" and "reserve_space_2" are available, | |||
@@ -136,11 +137,35 @@ REG_OP(BatchNorm) | |||
.OUTPUT(batch_variance, TensorType({DT_FLOAT})) | |||
.OUTPUT(reserve_space_1, TensorType({DT_FLOAT})) | |||
.OUTPUT(reserve_space_2, TensorType({DT_FLOAT})) | |||
.OUTPUT(reserve_space_3, TensorType({DT_FLOAT})) | |||
.ATTR(epsilon, Float, 0.0001) | |||
.ATTR(data_format, String, "NHWC") | |||
.ATTR(is_training, Bool, true) | |||
.OP_END_FACTORY_REG(BatchNorm) | |||
/** | |||
*@brief part of SyncBatchNormBackward . \n | |||
*@par Inputs: | |||
* Three inputs, including: | |||
*@li sum_dy: A Tensor. Must be one of the following types: float16, float32 . | |||
*@li sum_dy_dx_pad: A Tensor. Must be one of the following types: float16, float32 . | |||
*@li mean: A Tensor. Must be one of the following types: float16, float32 . | |||
*@li invert_std: A Tensor. Must be one of the following types: float16, float32 . \n | |||
*@par Outputs: | |||
*@li sum_dy_xmu: A Tensor. Has the same type and format as input "sum_dy" | |||
*@li y: A Tensor. Has the same type and format as input "sum_dy" . \n | |||
*/ | |||
REG_OP(SyncBatchNormBackwardReduce) | |||
.INPUT(sum_dy, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(sum_dy_dx_pad, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(mean, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(invert_std, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(sum_dy_xmu, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OP_END_FACTORY_REG(SyncBatchNormBackwardReduce) | |||
/** | |||
*@brief Performs batch normalization . \n | |||
@@ -260,7 +285,8 @@ REG_OP(BatchNormExt2) | |||
*@li x: A 4D or 5D Tensor of type float16 or float32, with format NHWC, NCHW, or NC1HWC0. | |||
*@li scale: A 4D or 5D Tensor of type float32, with format NHWC, NCHW, or NC1HWC0. | |||
*@li reserve_space_1: A 4D or 5D Tensor of type float32, with format NHWC, NCHW, or NC1HWC0. It is an output of BatchNorm. | |||
*@li reserve_space_2: A 4D or 5D Tensor of type float32, with format NHWC, NCHW, or NC1HWC0. It is an output of BatchNorm . \n | |||
*@li reserve_space_2: A 4D or 5D Tensor of type float32, with format NHWC, NCHW, or NC1HWC0. It is an output of BatchNorm . | |||
*@li reserve_space_3: A 1D optional Tensor of type float32. It is an output of BatchNorm . \n | |||
*@par Attributes: | |||
*@li epsilon: An optional float32. Defaults to "0.0001". A small float number added to the variance of "x". | |||
@@ -287,6 +313,7 @@ REG_OP(BatchNormGrad) | |||
.INPUT(scale, TensorType({DT_FLOAT})) | |||
.INPUT(reserve_space_1, TensorType({DT_FLOAT})) | |||
.INPUT(reserve_space_2, TensorType({DT_FLOAT})) | |||
.OPTIONAL_INPUT(reserve_space_3, TensorType({DT_FLOAT})) | |||
.OUTPUT(x_backprop, TensorType({DT_FLOAT16,DT_FLOAT})) | |||
.OUTPUT(scale_backprop, TensorType({DT_FLOAT})) | |||
.OUTPUT(offset_backprop, TensorType({DT_FLOAT})) | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -269,10 +269,10 @@ REG_OP(DepthwiseConv2DBackpropInputD) | |||
*@par Inputs: | |||
*Two required inputs and two optional inputs, including: \n | |||
* @li x: A 4D tensor of type float16 or int8, with shape [N, C, H, W] or [N, H, W, C] | |||
* @li filter: A 4D tensor of type float16 or int8, with shape [H, W, C, K] | |||
* @li x: A 4D tensor of type float16 or int8 or int4, with shape [N, C, H, W] or [N, H, W, C] | |||
* @li filter: A 4D tensor of type float16 or int8 or int4, with shape [H, W, C, K] | |||
* @li bias: An optional tensor of type float16 or int32 | |||
* @li offset_w: An optional float16 or int8, used for quantized inference | |||
* @li offset_w: An optional float16 or int8 or int4, used for quantized inference | |||
* @par Attributes: | |||
* @li strides: A required list or tuple. The stride of the sliding window for | |||
@@ -312,10 +312,10 @@ REG_OP(DepthwiseConv2DBackpropInputD) | |||
* @li Compatible with the Caffe operator DepthwiseConv2D. | |||
*/ | |||
REG_OP(DepthwiseConv2D) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_INT8})) | |||
.INPUT(filter, TensorType({DT_FLOAT16, DT_INT8})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_INT8, DT_INT4})) | |||
.INPUT(filter, TensorType({DT_FLOAT16, DT_INT8, DT_INT4})) | |||
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT16, DT_INT32})) | |||
.OPTIONAL_INPUT(offset_w, TensorType({DT_FLOAT16, DT_INT8})) | |||
.OPTIONAL_INPUT(offset_w, TensorType({DT_FLOAT16, DT_INT8, DT_INT4})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_INT32})) | |||
.REQUIRED_ATTR(strides, ListInt) | |||
.ATTR(dilations, ListInt, {1, 1, 1, 1}) | |||
@@ -369,16 +369,14 @@ REG_OP(BiasAddGrad) | |||
*\n | |||
* The following are the supported data types and data formats:\n | |||
*\n | |||
| Tensor | out_bckprop | filter | y\n | |||
------------|-------------|---------|--------\n | |||
| Data Type | float16 | float16 | float16\n | |||
| |-------------|---------|--------\n | |||
| | float32 | float32 | float32\n | |||
| |-------------|---------|--------\n | |||
| | float64 | float64 | float64\n | |||
------------|-------------|---------|--------\n | |||
| Format | NCHW | NCHW | NCHW\n | |||
| | NHWC | HWCN | NHWC\n | |||
*\n | |||
| Tensor | out_bckprop | filter | y |\n | |||
|-----------|-------------|---------|--------|\n | |||
| Data Type | float16 | float16 | float16|\n | |||
| | float32 | float32 | float32|\n | |||
| | float64 | float64 | float64|\n | |||
| Format | NCHW | NCHW | NCHW |\n | |||
| | NHWC | HWCN | NHWC |\n | |||
*\n | |||
* For float32 and float64 type, the actual calculation on the chip is based on | |||
* float16. | |||
@@ -400,30 +398,25 @@ REG_OP(BiasAddGrad) | |||
*\n | |||
* The following value range restrictions must be met:\n | |||
*\n | |||
| Name | Field | Scope\n | |||
-------------------|----------|--------------\n | |||
| input_size | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Filter | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
-------------------|----------|--------------\n | |||
| out_backprop | H*strideH| [1, 200000]\n | |||
| | W*strideW| [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| y(fmap) | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Stride | H | [1, 63]\n | |||
| | W | [1, 63]\n | |||
-------------------|----------|--------------\n | |||
| Padding | Top | [0, 255]\n | |||
| | Bottom | [0, 255]\n | |||
| | Left | [0, 255]\n | |||
| | Right | [0, 255]\n | |||
-------------------|----------|--------------\n | |||
| Dilation | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
*\n | |||
| Name | Field | Scope |\n | |||
|------------------|----------|--------------|\n | |||
| input_size | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| Filter | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
| out_backprop | H*strideH| [1, 200000] |\n | |||
| | W*strideW| [1, 4096] |\n | |||
| y(fmap) | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| Stride | H | [1, 63] |\n | |||
| | W | [1, 63] |\n | |||
| Padding | Top | [0, 255] |\n | |||
| | Bottom | [0, 255] |\n | |||
| | Left | [0, 255] |\n | |||
| | Right | [0, 255] |\n | |||
| Dilation | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
*\n | |||
* In Ascend910, fmap or out_backprop's H and W not support 1 when | |||
@@ -495,9 +488,9 @@ REG_OP(Conv2DBackpropInput) | |||
* Warning: THIS FUNCTION IS DEPRECATED. Please use Conv2DBackpropInput instead. | |||
*/ | |||
REG_OP(Conv2DBackpropInputD) | |||
.INPUT(filter, TensorType({DT_FLOAT16, DT_INT8})) | |||
.INPUT(out_backprop, TensorType({DT_FLOAT16, DT_INT8})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_INT32, DT_FLOAT32})) | |||
.INPUT(filter, TensorType({DT_FLOAT16, DT_INT8, DT_BF16})) | |||
.INPUT(out_backprop, TensorType({DT_FLOAT16, DT_INT8, DT_BF16})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_INT32, DT_FLOAT32, DT_BF16})) | |||
.REQUIRED_ATTR(input_size, ListInt) | |||
.REQUIRED_ATTR(strides, ListInt) | |||
.REQUIRED_ATTR(pads, ListInt) | |||
@@ -523,13 +516,12 @@ REG_OP(Conv2DBackpropInputD) | |||
*\n | |||
* The following are the supported data types and data formats:\n | |||
*\n | |||
| Tensor | x | filter | bias | y\n | |||
------------|---------|---------|---------|--------\n | |||
| Data Type | float16 | float16 | float16 | float16\n | |||
| |---------|---------|---------|--------\n | |||
| | int8 | int8 | int32 | int32\n | |||
------------|---------|---------|---------|--------\n | |||
| Format | NCHW | NCHW | ND | NCHW\n | |||
*\n | |||
| Tensor | x | filter | bias | y |\n | |||
|-----------|---------|---------|---------|--------|\n | |||
| Data Type | float16 | float16 | float16 | float16|\n | |||
| | int8 | int8 | int32 | int32 |\n | |||
| Format | NCHW | NCHW | ND | NCHW |\n | |||
*\n | |||
* For int8, a dequant or requant operator must be followed. | |||
*\n | |||
@@ -553,29 +545,24 @@ REG_OP(Conv2DBackpropInputD) | |||
*\n | |||
* The following value range restrictions must be met:\n | |||
*\n | |||
| Name | Field | Scope\n | |||
-------------------|----------|--------------\n | |||
| x (out_backprop) | H*strideH| [1, 200000]\n | |||
| | W*strideW| [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Filter | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
-------------------|----------|--------------\n | |||
| y (fmap) | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Stride | H | [1, 63]\n | |||
| | W | [1, 63]\n | |||
-------------------|----------|--------------\n | |||
| Padding | Top | [0, 255]\n | |||
| | Bottom | [0, 255]\n | |||
| | Left | [0, 255]\n | |||
| | Right | [0, 255]\n | |||
-------------------|----------|--------------\n | |||
| Dilation | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
-------------------|----------|--------------\n | |||
| Offset_x | | [-128, 127]\n | |||
*\n | |||
| Name | Field | Scope |\n | |||
|------------------|----------|--------------|\n | |||
| x (out_backprop) | H*strideH| [1, 200000] |\n | |||
| | W*strideW| [1, 4096] |\n | |||
| Filter | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
| y (fmap) | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| Stride | H | [1, 63] |\n | |||
| | W | [1, 63] |\n | |||
| Padding | Top | [0, 255] |\n | |||
| | Bottom | [0, 255] |\n | |||
| | Left | [0, 255] |\n | |||
| | Right | [0, 255] |\n | |||
| Dilation | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
| Offset_x | | [-128, 127] |\n | |||
*\n | |||
* In Ascend910, fmap or out_backprop's H and W not support 1 when | |||
* fmap_h + pad_top + pad_bottom != (filter_height - 1) * dilation_h + 1 | |||
@@ -631,16 +618,14 @@ REG_OP(Deconvolution) | |||
*\n | |||
* The following are the supported data types and data formats:\n | |||
*\n | |||
| Tensor | x | out_backprop | y\n | |||
------------|---------|--------------|---------\n | |||
| Data Type | float16 | float16 | float16\n | |||
| |---------|--------------|---------\n | |||
| | float32 | float32 | float32\n | |||
| |---------|--------------|---------\n | |||
| | float64 | float64 | float64\n | |||
|-----------|---------|--------------|---------\n | |||
| Format | NCHW | NCHW | NCHW\n | |||
| | NHWC | NHWC | HWCN\n | |||
*\n | |||
| Tensor | x | out_backprop | y |\n | |||
|-----------|---------|--------------|---------|\n | |||
| Data Type | float16 | float16 | float16 |\n | |||
| | float32 | float32 | float32 |\n | |||
| | float64 | float64 | float64 |\n | |||
| Format | NCHW | NCHW | NCHW |\n | |||
| | NHWC | NHWC | HWCN |\n | |||
*\n | |||
* For float32 and float64 type of x and outbackprop, the actual calculation on the chip | |||
* is based on float16. | |||
@@ -662,30 +647,25 @@ REG_OP(Deconvolution) | |||
*\n | |||
* The following value range restrictions must be met:\n | |||
*\n | |||
| Name | Field | Scope\n | |||
-------------------|----------|--------------\n | |||
| x(fmap) | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Filter Size | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
-------------------|----------|--------------\n | |||
| out_backprop | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| y | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Stride | H | [1, 63]\n | |||
| | W | [1, 63]\n | |||
-------------------|----------|--------------\n | |||
| Padding | Top | [0, 255]\n | |||
| | Bottom | [0, 255]\n | |||
| | Left | [0, 255]\n | |||
| | Right | [0, 255]\n | |||
-------------------|----------|--------------\n | |||
| Dilation | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
*\n | |||
| Name | Field | Scope |\n | |||
|------------------|----------|--------------|\n | |||
| x(fmap) | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| Filter Size | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
| out_backprop | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| y | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| Stride | H | [1, 63] |\n | |||
| | W | [1, 63] |\n | |||
| Padding | Top | [0, 255] |\n | |||
| | Bottom | [0, 255] |\n | |||
| | Left | [0, 255] |\n | |||
| | Right | [0, 255] |\n | |||
| Dilation | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
*\n | |||
*@par Outputs: | |||
* y: A Tensor. Has the same type as x, has the same format as filter_size. | |||
@@ -853,11 +833,11 @@ REG_OP(Conv2DBackpropFilterD) | |||
*@li Compatible with the Caffe operator 2D "Convolution". | |||
*/ | |||
REG_OP(Conv2D) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8})) | |||
.INPUT(filter, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_BF16})) | |||
.INPUT(filter, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT8, DT_BF16})) | |||
.OPTIONAL_INPUT(bias, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32})) | |||
.OPTIONAL_INPUT(offset_w, TensorType({DT_INT8})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT, DT_INT32, DT_BF16})) | |||
.REQUIRED_ATTR(strides, ListInt) | |||
.REQUIRED_ATTR(pads, ListInt) | |||
.ATTR(dilations, ListInt, {1, 1, 1, 1}) | |||
@@ -1441,14 +1421,13 @@ REG_OP(Conv3DTransposeD) | |||
*\n | |||
* The following are the supported data types and data formats:\n | |||
*\n | |||
| Tensor | x | filter | bias | y\n | |||
------------|---------|---------|---------|--------\n | |||
| Data Type | float16 | float16 | float16 | float16\n | |||
| |---------|---------|---------|--------\n | |||
| | int8 | int8 | int32 | int32\n | |||
------------|---------|---------|---------|--------\n | |||
| Format | NCHW | NCHW | ND | NCHW\n | |||
| | NHWC | HWCN | | NHWC\n | |||
*\n | |||
| Tensor | x | filter | bias | y |\n | |||
|-----------|---------|---------|---------|--------|\n | |||
| Data Type | float16 | float16 | float16 | float16|\n | |||
| | int8 | int8 | int32 | int32 |\n | |||
| Format | NCHW | NCHW | ND | NCHW |\n | |||
| | NHWC | HWCN | | NHWC |\n | |||
*\n | |||
* For int8, a dequant or requant operator must be followed. | |||
*\n | |||
@@ -1476,32 +1455,26 @@ REG_OP(Conv3DTransposeD) | |||
*\n | |||
* The following value range restrictions must be met:\n | |||
*\n | |||
| Name | Field | Scope\n | |||
-------------------|----------|--------------\n | |||
| input_size | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| x (out_backprop) | H*strideH| [1, 200000]\n | |||
| | W*strideW| [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| filter | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
-------------------|----------|--------------\n | |||
| y (fmap) | H | [1, 200000]\n | |||
| | W | [1, 4096]\n | |||
-------------------|----------|--------------\n | |||
| Stride | H | [1, 63]\n | |||
| | W | [1, 63]\n | |||
-------------------|----------|--------------\n | |||
| Padding | Top | [0, 255]\n | |||
| | Bottom | [0, 255]\n | |||
| | Left | [0, 255]\n | |||
| | Right | [0, 255]\n | |||
-------------------|----------|--------------\n | |||
| Dilation | H | [1, 255]\n | |||
| | W | [1, 255]\n | |||
-------------------|----------|--------------\n | |||
| Offset_x | | [-128, 127]\n | |||
*\n | |||
| Name | Field | Scope |\n | |||
|------------------|----------|--------------|\n | |||
| input_size | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| x (out_backprop) | H*strideH| [1, 200000] |\n | |||
| | W*strideW| [1, 4096] |\n | |||
| filter | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
| y (fmap) | H | [1, 200000] |\n | |||
| | W | [1, 4096] |\n | |||
| Stride | H | [1, 63] |\n | |||
| | W | [1, 63] |\n | |||
| Padding | Top | [0, 255] |\n | |||
| | Bottom | [0, 255] |\n | |||
| | Left | [0, 255] |\n | |||
| | Right | [0, 255] |\n | |||
| Dilation | H | [1, 255] |\n | |||
| | W | [1, 255] |\n | |||
| Offset_x | | [-128, 127] |\n | |||
*\n | |||
* In Ascend910, fmap or out_backprop's H and W not support 1 when | |||
* fmap_h + pad_top + pad_bottom != (filter_height - 1) * dilation_h + 1 | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -135,7 +135,8 @@ REG_OP(CheckValid) | |||
* the value "4" refers to "x0", "x1", "y0", and "y1" . \n | |||
*@par Attributes: | |||
*mode: Computation mode, a character string with the value range of [iou, iof] . \n | |||
*@li mode: Computation mode, a character string with the value range of [iou, iof] | |||
*@li eps: An optional float, prevent division by 0, default value is 1.0 . \n | |||
*@par Outputs: | |||
*overlap: A 2D Tensor of type float16 or float32 with shape [M, N], specifying | |||
@@ -150,6 +151,7 @@ REG_OP(Iou) | |||
.INPUT(gtboxes, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(overlap, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.ATTR(mode, String, "iou") | |||
.ATTR(eps, Float, 1.0) | |||
.OP_END_FACTORY_REG(Iou) | |||
/** | |||
@@ -205,7 +207,8 @@ the value "5" indicates the indexes of images where the ROIs are located, "x0", | |||
*@li spatial_scale: A required attribute of type float, specifying the scaling ratio of "features" to the original image. | |||
*@li sample_num: An optional attribute of type int, specifying the horizontal and vertical | |||
sampling frequency of each output. If this attribute is set to "0", the sampling frequency is | |||
equal to the rounded up value of "rois", which is a floating point number. Defaults to "2" . \n | |||
equal to the rounded up value of "rois", which is a floating point number. Defaults to "2" . | |||
*@li roi_end_mode: An optional attribute of type int, specifying the align mode .\n | |||
*@par Outputs: | |||
*xdiff: Gradient added to input "features". Has the same 5HD shape as input "features". | |||
@@ -220,6 +223,7 @@ REG_OP(ROIAlignGrad) | |||
.REQUIRED_ATTR(pooled_height, Int) | |||
.REQUIRED_ATTR(spatial_scale, Float) | |||
.ATTR(sample_num, Int, 2) | |||
.ATTR(roi_end_mode, Int, 1) | |||
.OP_END_FACTORY_REG(ROIAlignGrad) | |||
/** | |||
@@ -579,6 +583,172 @@ REG_OP(Yolo) | |||
.ATTR(softmaxtree, Bool, false) | |||
.OP_END_FACTORY_REG(Yolo) | |||
/** | |||
*@brief Normalizes data. It is called Region on YOLO v2 and Yolo on YOLO v3 . \n | |||
*@par Inputs: | |||
*x: An NCHW tensor of type float16 or float32. The data is with shape (N, boxes*(coords+obj+classes), H, W), | |||
where, "obj" indicates the confidence of an object, and only one confidence is supported. Boxes are arranged | |||
as xx...xyy...yww...whh...hbb...bc0c0..c0c1c1...c1......cncn...cn . \n | |||
*@par Attributes: | |||
*@li boxes: A required int32, specifying the number of anchor boxes. Defaults to "5" for V2 or "3" for V3. | |||
*@li coords: An int32, specifying the number of parameters required for locating an object. The value is fixed at "4", corresponding to (x,y,w,h). | |||
*@li classes: An int32, specifying the number of prediction classes. Defaults to "80". The value range is [1, 1024]. | |||
*@li yolo_version: A string, specifying the YOLO version, either "V2" or "V3".Defaults to "V3" | |||
*@li softmax: A bool, specifying whether to perform softmax, valid only when "yolo_version = V2". Defaults to "false". | |||
*@li background: A bool, specifying the operation types of the obj and classes, used in conjunction with "softmax" and valid only when "yolo_version = V2". Defaults to "false". | |||
*@li softmaxtree: A bool, Fixed to False, defined in Lite, but not used. Defaults to "false" . \n | |||
*@par Outputs: | |||
*@li coord_data: A float16 or float32 with shape [N, boxes*coords, ceilx(height*width*2+32, 32)/2], | |||
* where "ceil" indicates that a detected box is aligned upwards with the second parameter. Specifies the coordinates of a detected box. | |||
*@li obj_prob: A float16 or float32 with shape [N, ceilx(boxes*height*width *2+32, 32)/2], | |||
* where "ceil" indicates that a detected box is aligned upwards with the second parameter. Specifies the confidence. | |||
*@li classes_prob: A float16 or float32 with shape [N, classes, ceilx(boxes*height*width *2+32, 32)/2], | |||
* where "ceil" indicates that a detected box is aligned upwards with the second parameter. Specifies the prediction classes . \n | |||
*@attention Constraints: | |||
*@li This operator applies to YOLO v2,v3 and v5 networks. | |||
*@li The succeeding layer of the Yolo operator must be operator Yolov5DetectionOutput. | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. | |||
*/ | |||
REG_OP(YoloPreDetection) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(coord_data, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(obj_prob, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(classes_prob, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.ATTR(boxes, Int, 3) | |||
.ATTR(coords, Int, 4) | |||
.ATTR(classes, Int, 80) | |||
.ATTR(yolo_version, String, "V5") | |||
.ATTR(softmax, Bool, false) | |||
.ATTR(background, Bool, false) | |||
.ATTR(softmaxtree, Bool, false) | |||
.OP_END_FACTORY_REG(YoloPreDetection) | |||
/** | |||
*@brief Performs YOLO V5 detection . \n | |||
*@par Inputs: | |||
*Ten inputs, including: | |||
*@li Operator Yolov5DetectionOutput takes the outputs of operator Yolo as its inputs. A Yolo operator has three outputs: "coords", "obj", and "class". \n | |||
There are three Yolo operators at Yolov5DetectionOutput's preceding layer on Yolo v5. For details, see the description of operator Yolo. | |||
*@li img_info: A float16 or float32, describing the image information including the required image height and width \n | |||
* and the actual image height and width. | |||
*@par Attributes: | |||
*@li biases: A required float. "biases = Number of Yolo operators at the preceding layer x 2 x boxes" | |||
*@li boxes: A required int32, specifying the number of anchor boxes predicted for each Yolo layer. | |||
*@li coords: Specifies the number of coordinate parameters. Must be 4. | |||
*@li classes: A required int32, specifying the number of classes to be predicted. The value range is [1, 80]. | |||
*@li relative: An optional bool. Defaults to and must be "true". | |||
*@li obj_threshold: A required float, specifying the confidence threshold for box filtering, which is the output "obj" of operator Yolo). The value range is [0.0, 1.0]. | |||
*@li post_nms_topn: An optional int32. This attribute is reserved. | |||
*@li score_threshold: A required float, specifying the class score threshold for box filtering, which is the output "class" of operator Yolo). The value range is [0.0, 1.0]. | |||
*@li iou_threshold: A required float, specifying the intersection-over-union (IOU) threshold for box filtering. The value range is [0.0, 1.0].\n | |||
*@li pre_nms_topn: An optional int, specifying the number of boxes for non-maximum suppression (NMS). Defaults to "512". | |||
*@par Outputs: | |||
*@li boxout: A tensor of type float16 or float32 with shape [batch,6,post_nms_topn](out_box_dim == 3) or [batch, 6*post_nms_topn](out_box_dim == 2), | |||
* In output shape, 6 means x1, y1, x2, y2, score, label(class). Output by the number of box_out_num. | |||
*@li boxoutnum: A tensor of type int32 with shape [batch,8], specifying the number of output boxes. | |||
* The output shape means only the first one of the 8 numbers is valid, the number of valid boxes in each batch, the maximum number of valid boxes in each batch is 1024 | |||
*@attention Constraints:\n | |||
*@li This operator applies only to the YOLO v5 network. | |||
*@li The preceding layer of operator Yolov5DetectionOutput must be three Yolo operators. | |||
*@see Yolo() | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
*/ | |||
REG_OP(YoloV5DetectionOutput) | |||
.DYNAMIC_INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.REQUIRED_ATTR(biases, ListFloat) | |||
.ATTR(boxes, Int, 3) | |||
.ATTR(coords, Int, 4) | |||
.ATTR(classes, Int, 80) | |||
.ATTR(relative, Bool, true) | |||
.ATTR(obj_threshold, Float, 0.5) | |||
.ATTR(post_nms_topn, Int, 512) | |||
.ATTR(score_threshold, Float, 0.5) | |||
.ATTR(iou_threshold, Float, 0.45) | |||
.ATTR(pre_nms_topn, Int, 512) | |||
.ATTR(N, Int, 10) | |||
.ATTR(resize_origin_img_to_net, Bool, false) | |||
.ATTR(out_box_dim, Int, 3) | |||
.ATTR(alpha, Float, 2.0) | |||
.OUTPUT(box_out, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(box_out_num, TensorType({DT_INT32})) | |||
.OP_END_FACTORY_REG(YoloV5DetectionOutput) | |||
/** | |||
*@brief Performs YOLO V5 detection. | |||
*@par Inputs: | |||
*16 Input, including: | |||
*@li The outputs of operator Yolo at the preceding layer (that is, three Yolo operators on YOLO v5) are used as the inputs of operator Yolov5DetectionOutput. | |||
* A Yolo operator has three outputs: "coords", "obj", and "class". For details, see the description of operator Yolo. | |||
*@li imginfo: A float16, describing the image information including the required image height and width | |||
* and the actual image height and width. | |||
*@li windex: A windex tensor with shape [height,weight]. Has the same type as the inputs. | |||
* [[0,1,2...(weight-1)],[0,1,2...(w-1)]...[0,1,2...(weight-1)]] consisting of h groups of [0, 1, 2...(weight-1)] | |||
* is formed for the three Yolo outputs, respectively .It's a dynamic input. \n | |||
*@li hindex: A hindex tensor with shape [height,weight]. Has the same type as the inputs. [[0,0...0],[1,1...1],[2,2...2]...[height-1,height-1...,height-1]] is formed for the three Yolo outputs, respectively . \n | |||
*@par Attributes: | |||
*@li biases: A required float32. "biases = Number of Yolo operators at the preceding layer x 2 x boxes" | |||
*@li boxes: A required int32, specifying the number of anchor boxes predicted for each Yolo layer. | |||
*@li coords: Specifies the number of coordinate parameters. Must be 4. | |||
*@li classes: A required int32, specifying the number of classes to be predicted. The value range is [1, 80]. | |||
*@li relative: An optional bool. Defaults to and must be "true". | |||
*@li obj_threshold: A required float, specifying the confidence threshold for box filtering, which is the output "obj" of operator Yolo). The value range is [0.0, 1.0]. | |||
*@li post_nms_topn: An optional int32. This attribute is reserved. | |||
*@li score_threshold: A required float, specifying the class score threshold for box filtering, which is the output "class" of operator Yolo). The value range is [0.0, 1.0]. | |||
*@li iou_threshold: A required float, specifying the intersection-over-union (IOU) threshold for box filtering. The value range is [0.0, 1.0]. | |||
*@li pre_nms_topn: An optional int, specifying the number of boxes for non-maximum suppression (NMS). Defaults to "512". | |||
* | |||
*@par Outputs: | |||
*@li boxout: A tensor of type float16 or float32 with shape [batch,6,post_nms_topn](out_box_dim == 3) or [batch, 6*post_nms_topn](out_box_dim == 2), | |||
* describing the information of each output box. | |||
* In output shape, 6 means x1, y1, x2, y2, score, label(class). Output by the number of box_out_num. | |||
*@li boxoutnum: A tensor of type int32 with shape [batch,8], specifying the number of output boxes. | |||
* The output shape means only the first one of the 8 numbers is valid, the number of valid boxes in each batch, the maximum number of valid boxes in each batch is 1024 | |||
* | |||
*@attention Constraints: | |||
*@li This operator applies only to the YOLO v5 network. | |||
*@li The preceding layer of operator Yolov5DetectionOutput must be three Yolo operators. | |||
*@see Yolo() | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. | |||
*/ | |||
REG_OP(YoloV5DetectionOutputD) | |||
.DYNAMIC_INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.DYNAMIC_INPUT(windex, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.DYNAMIC_INPUT(hindex, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.REQUIRED_ATTR(biases, ListFloat) | |||
.ATTR(boxes, Int, 3) | |||
.ATTR(coords, Int, 4) | |||
.ATTR(classes, Int, 80) | |||
.ATTR(relative, Bool, true) | |||
.ATTR(obj_threshold, Float, 0.5) | |||
.ATTR(post_nms_topn, Int, 512) | |||
.ATTR(score_threshold, Float, 0.5) | |||
.ATTR(iou_threshold, Float, 0.45) | |||
.ATTR(pre_nms_topn, Int, 512) | |||
.ATTR(N, Int, 10) | |||
.ATTR(resize_origin_img_to_net, Bool, false) | |||
.ATTR(out_box_dim, Int, 3) | |||
.ATTR(alpha, Float, 2.0) | |||
.OUTPUT(box_out, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(box_out_num, TensorType({DT_INT32})) | |||
.OP_END_FACTORY_REG(YoloV5DetectionOutputD) | |||
/** | |||
*@brief Performs YOLO V2 detection . \n | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -2645,6 +2645,19 @@ REG_OP(SparseApplyAdadeltaD) | |||
REG_OP(AtomicAddrClean) | |||
.ATTR(automic_add_mem_size, ListInt, {}) | |||
.OP_END_FACTORY_REG(AtomicAddrClean) | |||
/** | |||
*@brief Clean memory of workspace list . \n | |||
*@par Attributes: | |||
* @li workspace_size: sizes of workspaces . \n | |||
*@par Restrictions: | |||
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use. | |||
*/ | |||
REG_OP(DynamicAtomicAddrClean) | |||
.ATTR(automic_add_mem_size, ListInt, {}) | |||
.OP_END_FACTORY_REG(DynamicAtomicAddrClean) | |||
} // namespace ge | |||
#endif // OPS_BUILT_IN_OP_PROTO_INC_NN_TRAINING_OPS_H_ |
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -58,6 +58,25 @@ REG_OP(HardSwish) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OP_END_FACTORY_REG(HardSwish) | |||
/** | |||
*@brief Computes the gradient for the hard_swish of "x" . \n | |||
* @par Inputs: | |||
*Two inputs, including: | |||
* @li grad: A Tensor. Must be one of the following types: float16, float32 | |||
* @li x: A Tensor of the same type as "grad" . \n | |||
*@par Outputs: | |||
*y: A Tensor. Has the same type as "grad". | |||
* @par Third-party framework compatibility | |||
* Compatible with the Torch operator HardSwishGrad. | |||
*/ | |||
REG_OP(HardSwishGrad) | |||
.INPUT(grad, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OP_END_FACTORY_REG(HardSwishGrad) | |||
/** | |||
*@brief Computes the for the Swish of "x" . \n | |||
@@ -80,6 +99,29 @@ REG_OP(Swish) | |||
.ATTR(scale, Float, 1.0) | |||
.OP_END_FACTORY_REG(Swish) | |||
/** | |||
*@brief Computes the gradient for the Swish of "x" . \n | |||
*@par Inputs: | |||
*Three inputs, including: | |||
* @li grad: A Tensor. Must be one of the following types: float16, float32 | |||
* @li x: A Tensor of the same type as "grad". | |||
* @li y: A Tensor of the same type as "grad" . \n | |||
* @par Attributes: | |||
* scale: A optional scalar. The data type is float . \n | |||
*@par Outputs: | |||
*grad_x: A Tensor. Has the same type as "grad". | |||
*@par Third-party framework compatibility | |||
*Compatible with the Torch operator SwishGrad | |||
*/ | |||
REG_OP(SwishGrad) | |||
.INPUT(grad, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(grad_x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.ATTR(scale, Float, 1.0) | |||
.OP_END_FACTORY_REG(SwishGrad) | |||
/** | |||
*@brief Computes the gradient for the gelu of "x" . \n | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -0,0 +1,268 @@ | |||
/** | |||
* 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. | |||
*/ | |||
/*! | |||
* \file ocr_ops.h | |||
* \brief | |||
*/ | |||
#ifndef OPS_BUILT_IN_OP_PROTO_INC_OCR_OPS_H_ | |||
#define OPS_BUILT_IN_OP_PROTO_INC_OCR_OPS_H_ | |||
#include "graph/operator_reg.h" | |||
namespace ge { | |||
/** | |||
*@brief batch input x acording to attr batch_size and enqueue. | |||
*@par Inputs: | |||
*@li x: A Tensor need to batch of type float16/float32/float64/int8/int32/int64/uint8/uint32/uint64. \n | |||
*@li queue_id:A Tensor of type uint32, queue id. | |||
*@par Outputs: | |||
*enqueue_count: A Tensor of type int64, enqueue tensor number. | |||
*@par Attributes: | |||
*@li batch_size: An optional int. Batch size. | |||
*@li queue_name: An optional string. Queue name. | |||
*@li queue_depth: An optional int. Queue depth. | |||
*@li pad_mode: An optional string from: '"REPLICATE", "ZERO"'. Defaults to | |||
"REPLICATE". Pad mode. | |||
*/ | |||
REG_OP(BatchEnqueue) | |||
.INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16, DT_DOUBLE, \ | |||
DT_INT8, DT_INT32, DT_INT64, DT_UINT8, DT_UINT32, DT_UINT64})) | |||
.OPTIONAL_INPUT(queue_id, TensorType({DT_UINT32})) | |||
.OUTPUT(enqueue_count, TensorType({DT_INT32})) | |||
.ATTR(batch_size, Int, 8) | |||
.ATTR(queue_name, String, "") | |||
.ATTR(queue_depth, Int, 100) | |||
.ATTR(pad_mode, String, "REPLICATE") | |||
.OP_END_FACTORY_REG(BatchEnqueue) | |||
/** | |||
*@brief batch input x acording to attr batch_size and enqueue. | |||
*@par Inputs: | |||
*@li imgs_data: A Tensor of type uint8. Multi img data value. \n | |||
*@li imgs_offset:A Tensor of type int32. Offset of every img data in input imgs_data. \n | |||
*@li imgs_size:A Tensor of type int32. Shape of every img data. \n | |||
*@li langs:A Tensor of type int32. Lang of every img data. \n | |||
*@li langs_score:A Tensor of type int32. Lang score of every img data. \n | |||
*@par Outputs: | |||
*@liimgs: A Tensor of type uint8. Multi imgs data after reconition pre handle. | |||
*@liimgs_relation: A Tensor of type int32. Output imgs orders in input imgs. | |||
*@liimgs_lang: A Tensor of type int32. Output batch imgs langs. | |||
*@par Attributes: | |||
*@li batch_size: An optional int. Batch size. | |||
*@li data_format: An optional string from: '"NHWC", "NCHW"'. Defaults to | |||
"NHWC". Data format. | |||
*@li pad_mode: An optional string from: '"REPLICATE", "ZERO"'. Defaults to | |||
"REPLICATE". Pad mode. | |||
*/ | |||
REG_OP(OCRRecognitionPreHandle) | |||
.INPUT(imgs_data, TensorType({DT_UINT8})) | |||
.INPUT(imgs_offset, TensorType({DT_INT32})) | |||
.INPUT(imgs_size, TensorType({DT_INT32})) | |||
.INPUT(langs, TensorType({DT_INT32})) | |||
.INPUT(langs_score, TensorType({DT_FLOAT, DT_FLOAT16})) | |||
.OUTPUT(imgs, TensorType({DT_UINT8})) | |||
.OUTPUT(imgs_relation, TensorType({DT_INT32})) | |||
.OUTPUT(imgs_lang, TensorType({DT_INT32})) | |||
.ATTR(batch_size, Int, 8) | |||
.ATTR(data_format, String, "NHWC") | |||
.ATTR(pad_mode, String, "REPLICATE") | |||
.OP_END_FACTORY_REG(OCRRecognitionPreHandle) | |||
/** | |||
*@brief ocr detection pre handle. | |||
*@par Inputs: | |||
*img: A Tensor of type uint8. img data value. \n | |||
*@par Outputs: | |||
*@li resized_img: A Tensor of type uint8. Img after detection pre handle. | |||
*@li h_scale: A Tensor of type float. H scale. | |||
*@li w_scale: A Tensor of type float. W scale. | |||
*@par Attributes: | |||
*data_format: An optional string from: '"NHWC", "NCHW"'. Defaults to | |||
"NHWC". Data format. | |||
*/ | |||
REG_OP(OCRDetectionPreHandle) | |||
.INPUT(img, TensorType({DT_UINT8})) | |||
.OUTPUT(resized_img, TensorType({DT_UINT8})) | |||
.OUTPUT(h_scale, TensorType({DT_FLOAT})) | |||
.OUTPUT(w_scale, TensorType({DT_FLOAT})) | |||
.ATTR(data_format, String, "NHWC") | |||
.OP_END_FACTORY_REG(OCRDetectionPreHandle) | |||
/** | |||
*@brief ocr identify prehandle. | |||
*@par Inputs: | |||
*@li imgs_data: A Tensor of type uint8. Multi img data value. \n | |||
*@li imgs_offset:A Tensor of type int32. Offset of every img data in input imgs_data. \n | |||
*@li imgs_size:A Tensor of type int32. Shape of every img data. \n | |||
*@par Outputs: | |||
*resized_imgs: A Tensor of type uint8. Multi imgs after identify pre handle. | |||
*@par Attributes: | |||
*@li size: An optional int. Size. | |||
*@li data_format: An optional string from: '"NHWC", "NCHW"'. Defaults to | |||
"NHWC". Data format. | |||
*/ | |||
REG_OP(OCRIdentifyPreHandle) | |||
.INPUT(imgs_data, TensorType({DT_UINT8})) | |||
.INPUT(imgs_offset, TensorType({DT_INT32})) | |||
.INPUT(imgs_size, TensorType({DT_INT32})) | |||
.OUTPUT(resized_imgs, TensorType({DT_UINT8})) | |||
.ATTR(size, ListInt, {}) | |||
.ATTR(data_format, String, "NHWC") | |||
.OP_END_FACTORY_REG(OCRIdentifyPreHandle) | |||
/** | |||
*@brief batch dilate polygons according to expand_scale. | |||
*@par Inputs: | |||
*@li polys_data: A Tensor of type int32. point data of every polygon. \n | |||
*@li polys_offset:A Tensor of type int32. Offset of every polygon . \n | |||
*@li polys_size:A Tensor of type int32. Size of every polygon. \n | |||
*@li score:A Tensor of type float. Score of every point in image. \n | |||
*@li min_border:A Tensor of type int32. Minimum width of each polygon. \n | |||
*@li min_area_thr:A Tensor of type int32. Minimum area of each polygon. \n | |||
*@li score_thr:A Tensor of type float. Minimum confidence score of each polygon. \n | |||
*@li expands_cale:A Tensor of type float. Polygon expansion multiple. \n | |||
*@par Outputs: | |||
*@li dilated_polys_data: A Tensor of type int32. Point data of every dilated polygon. \n | |||
*@li dilated_polys_offset: A Tensor of type int32. Offset of every dilated polygon . \n | |||
*@li dilated_polys_size: A Tensor of type int32. Size of every dilated polygon. \n | |||
*/ | |||
REG_OP(BatchDilatePolys) | |||
.INPUT(polys_data, TensorType({DT_INT32})) | |||
.INPUT(polys_offset, TensorType({DT_INT32})) | |||
.INPUT(polys_size, TensorType({DT_INT32})) | |||
.INPUT(score, TensorType({DT_FLOAT})) | |||
.INPUT(min_border, TensorType({DT_INT32})) | |||
.INPUT(min_area_thr, TensorType({DT_INT32})) | |||
.INPUT(score_thr, TensorType({DT_FLOAT})) | |||
.INPUT(expands_cale, TensorType({DT_FLOAT})) | |||
.OUTPUT(dilated_polys_data, TensorType({DT_INT32})) | |||
.OUTPUT(dilated_polys_offset, TensorType({DT_INT32})) | |||
.OUTPUT(dilated_polys_size, TensorType({DT_INT32})) | |||
.OP_END_FACTORY_REG(BatchDilatePolys) | |||
/** | |||
*@brief find contours acording to img. | |||
*@par Inputs: | |||
*@li img: A Tensor of type uint8. Img data value. \n | |||
*@par Outputs: | |||
*@li polys_data: A Tensor of type int32. Point data of every contours. \n | |||
*@li polys_offset:A Tensor of type int32. Offset of every contours . \n | |||
*@li polys_size:A Tensor of type int32. Size of every contours. \n | |||
*/ | |||
REG_OP(OCRFindContours) | |||
.INPUT(img, TensorType({DT_UINT8})) | |||
.OUTPUT(polys_data, TensorType({DT_INT32})) | |||
.OUTPUT(polys_offset, TensorType({DT_INT32})) | |||
.OUTPUT(polys_size, TensorType({DT_INT32})) | |||
.ATTR(value_mode, Int, 0) | |||
.OP_END_FACTORY_REG(OCRFindContours) | |||
/** | |||
*@brief dequeue data acording to queue_id and queue_name. | |||
*@par Inputs: | |||
*@li queue_id:An Tensor of type uint32, queue id. \n | |||
*@par Outputs: | |||
*data: A Tensor of type RealNumberType, dequeue tensor. \n | |||
*@par Attributes: | |||
*@li output_type: A required type. dequeue data type. | |||
*@li output_shape: A required listint. dequeue data shape. | |||
*@li queue_name: An optional string. Queue name. \n | |||
*/ | |||
REG_OP(Dequeue) | |||
.OPTIONAL_INPUT(queue_id, TensorType({DT_UINT32})) | |||
.OUTPUT(data, TensorType::RealNumberType()) | |||
.REQUIRED_ATTR(output_type, Type) | |||
.REQUIRED_ATTR(output_shape, ListInt) | |||
.ATTR(queue_name, String, "") | |||
.OP_END_FACTORY_REG(Dequeue); | |||
/** | |||
*@brief ocr detection post handle. | |||
*@par Inputs: | |||
*@li img: A Tensor of type uint8. original image data. | |||
*@li polys_data: A Tensor of type int32. point data of every poly. | |||
*@li polys_offset:A Tensor of type int32. Offset of every poly. | |||
*@li polys_size:A Tensor of type int32. Size of every poly. \n | |||
*@par Outputs: | |||
*@li imgs_data: A Tensor of type int32. imgs_data of original image. | |||
*@li imgs_offset: A Tensor of type int32. Offset of every imgs data. | |||
*@li imgs_size: A Tensor of type int32. Shape of every imgs data. | |||
*@li rect_points: A Tensor of type int32. Rect points of every imgs. \n | |||
*@par Attributes: | |||
*@li data_format: An optional string from: '"NHWC", "NCHW"'. Defaults to | |||
"NHWC". Data format. | |||
*/ | |||
REG_OP(OCRDetectionPostHandle) | |||
.INPUT(img, TensorType({DT_UINT8})) | |||
.INPUT(polys_data, TensorType({DT_INT32})) | |||
.INPUT(polys_offset, TensorType({DT_INT32})) | |||
.INPUT(polys_size, TensorType({DT_INT32})) | |||
.OUTPUT(imgs_data, TensorType({DT_UINT8})) | |||
.OUTPUT(imgs_offset, TensorType({DT_INT32})) | |||
.OUTPUT(imgs_size, TensorType({DT_INT32})) | |||
.OUTPUT(rect_points, TensorType({DT_INT32})) | |||
.ATTR(data_format, String, "NHWC") | |||
.OP_END_FACTORY_REG(OCRDetectionPostHandle); | |||
/** | |||
*@brief resize and clip polys. | |||
*@par Inputs: | |||
*@li polys_data: A Tensor of type int32. point data of every poly. | |||
*@li polys_offset:A Tensor of type int32. Offset of every poly . | |||
*@li polys_size:A Tensor of type int32. Size of every poly. | |||
*@li img_h:A Tensor of type int32. Height of original image. | |||
*@li img_w:A Tensor of type int32. Width of original image. | |||
*@li h_scale:A Tensor of type float. Expand scale of height. | |||
*@li w_scale:A Tensor of type float. Expand scale of width. \n | |||
*@par Outputs: | |||
*@li clipped_polys_data: A Tensor of type int32. point data of every clipped poly. \n | |||
*@li clipped_polys_offset: A Tensor of type int32. Offset of every clipped poly . \n | |||
*@li clipped_polys_size: A Tensor of type int32. Size of every clipped poly. \n | |||
*/ | |||
REG_OP(ResizeAndClipPolys) | |||
.INPUT(polys_data, TensorType({DT_INT32})) | |||
.INPUT(polys_offset, TensorType({DT_INT32})) | |||
.INPUT(polys_size, TensorType({DT_INT32})) | |||
.INPUT(img_h, TensorType({DT_INT32})) | |||
.INPUT(img_w, TensorType({DT_INT32})) | |||
.INPUT(h_scale, TensorType({DT_FLOAT})) | |||
.INPUT(w_scale, TensorType({DT_FLOAT})) | |||
.OUTPUT(clipped_polys_data, TensorType({DT_INT32})) | |||
.OUTPUT(clipped_polys_offset, TensorType({DT_INT32})) | |||
.OUTPUT(clipped_polys_size, TensorType({DT_INT32})) | |||
.OP_END_FACTORY_REG(ResizeAndClipPolys); | |||
} // namespace ge | |||
#endif // OPS_BUILT_IN_OP_PROTO_INC_OCR_OPS_H_ |
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -274,6 +274,38 @@ REG_OP(PadV3) | |||
.ATTR(mode, String, "constant") | |||
.ATTR(paddings_contiguous, Bool, true) | |||
.OP_END_FACTORY_REG(PadV3) | |||
/** | |||
*@brief Cal the grad of Pads. | |||
*@par Inputs: | |||
*Two inputs, including: | |||
* @li x: A Tensor. Must be one of the following types: float16, float32, double, int32, | |||
* uint8, int16, int8, complex64, int64, qint8, quint8, qint32, qint16, quint16, uint16, | |||
* complex128, uint32, uint64. | |||
* @li paddings: A Tensor of type int32 or int64. | |||
*@par Attributes: | |||
* @li mode: An optional string, Defaults to "reflect", indicates paddings mode, | |||
* support "reflect", "edge" | |||
* @li paddings_contiguous: An optional bool value, Defaults to true. | |||
* If true, paddings is arranged as [[begin0, end0], [begin1, end1], ...] | |||
* If false, paddings is arranged as [[begin0, begin1], ..., [end0, end1], ...] | |||
*@par Outputs: | |||
*y: A Tensor of the same type as "x". | |||
*@par Third-party framework compatibility: | |||
* Compatible with ONNX operator PadGrad. | |||
*/ | |||
REG_OP(PadV3Grad) | |||
.INPUT(x, TensorType::BasicType()) | |||
.INPUT(paddings, TensorType::IndexNumberType()) | |||
.OUTPUT(y, TensorType::BasicType()) | |||
.ATTR(mode, String, "reflect") | |||
.ATTR(paddings_contiguous, Bool, true) | |||
.OP_END_FACTORY_REG(PadV3Grad) | |||
/** | |||
*@brief Pads a tensor. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -85,7 +85,7 @@ REG_OP(Quantize) | |||
*@brief Quantizes the input . \n | |||
*@par Inputs: | |||
*x: An NC1HWC0 tensor of type float16 or float32, specifying the input . \n | |||
*x: An tensor of type float16 or float32, specifying the input . \n | |||
*@par Attributes: | |||
*@li scale: A required float32, specifying the scaling ratio. | |||
@@ -96,7 +96,7 @@ REG_OP(Quantize) | |||
*@li dst_type: A optional int32, specifying the output data type. Defaults to "DT_INT8" . \n | |||
*@par Outputs: | |||
*y: The quantized output tensor of type int8 or int4 and with format NC1HWC0 . \n | |||
*y: The quantized output tensor of type int8 or int4. \n | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
@@ -115,8 +115,8 @@ REG_OP(AscendQuant) | |||
*@brief Dequantizes the input . \n | |||
*@par Inputs: | |||
*@li x: An NC1HWC0 tensor of type int32, specifying the input. | |||
*@li deq_scale: An NC1HWC0 tensor of type float16 or uint64, specifying the scaling ratio . \n | |||
*@li x: An tensor of type int32, specifying the input. | |||
*@li deq_scale: An tensor of type float16 or uint64, specifying the scaling ratio . \n | |||
*@par Attributes: | |||
*@li sqrt_mode: A optional bool, specifying whether to perform square root on "scale", either "True" or "False". Defaults to "False". | |||
@@ -124,7 +124,7 @@ REG_OP(AscendQuant) | |||
*@li dtype: A optional int32, specifying the output data type. Defaults to "DT_FLOAT" . \n | |||
*@par Outputs: | |||
*y: The dequantized output tensor of type float16 or float32 and with format NC1HWC0 . \n | |||
*y: The dequantized output tensor of type float16 or float32. \n | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
@@ -142,7 +142,7 @@ REG_OP(AscendDequant) | |||
*@brief Anti quantizes the input . \n | |||
*@par Inputs: | |||
*x: An NC1HWC0 tensor of type int8, specifying the input . \n | |||
*x: An tensor of type int8, specifying the input . \n | |||
*@par Attributes: | |||
*@li scale: A required float32 scale. | |||
@@ -151,7 +151,7 @@ REG_OP(AscendDequant) | |||
*@li sqrt_mode: A optional bool, specifying whether to perform square root on "scale", either "True" or "False". Defaults to "False" . \n | |||
*@par Outputs: | |||
*y: The dequantized output tensor of type float16 or float32 and with format NC1HWC0 . \n | |||
*y: The dequantized output tensor of type float16 or float32. \n | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
@@ -169,15 +169,15 @@ REG_OP(AscendAntiQuant) | |||
*@brief Dequantizes the input of int16 . \n | |||
*@par Inputs: | |||
*@li x0: An NC1HWC0 tensor of type int32, specifying the input. | |||
*@li deq_scale: An NC1HWC0 tensor of type uint64, specifying the scaling ratio. | |||
*@li x1: An NC1HWC0 tensor of type int16, specifying the input . \n | |||
*@li x0: An tensor of type int32, specifying the input. | |||
*@li deq_scale: An tensor of type uint64, specifying the scaling ratio. | |||
*@li x1: An tensor of type int16, specifying the input . \n | |||
*@par Attributes: | |||
*relu_flag: A optional bool, specifying whether to perform ReLU, either "True" or "False". Defaults to "False" . \n | |||
*@par Outputs: | |||
*y: The dequantized output tensor of type int16 and with format NC1HWC0 . \n | |||
*y: The dequantized output tensor of type int16. \n | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
@@ -194,14 +194,14 @@ REG_OP(AscendDequantS16) | |||
*@brief Requantizes the input . \n | |||
*@par Inputs: | |||
*@li x: An NC1HWC0 tensor of type int32, specifying the input. | |||
*@li req_scale: An NC1HWC0 tensor of type uint64, specifying the scaling ratio . \n | |||
*@li x: An tensor of type int32, specifying the input. | |||
*@li req_scale: An tensor of type uint64, specifying the scaling ratio . \n | |||
*@par Attributes: | |||
*relu_flag: A optional bool, specifying whether to perform ReLU, either "True" or "False". Defaults to "False" . \n | |||
*@par Outputs: | |||
*y: The dequantized output tensor of type int8 and with format NC1HWC0 . \n | |||
*y: The dequantized output tensor of type int8. \n | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
@@ -217,17 +217,17 @@ REG_OP(AscendRequant) | |||
*@brief Requantizes the input of int16 . \n | |||
*@par Inputs: | |||
*@li x0: An NC1HWC0 tensor of type int16, specifying the input. | |||
*@li req_scale: An NC1HWC0 tensor of type uint64, specifying the scaling ratio. | |||
*@li x1: An NC1HWC0 tensor of type int16 . \n | |||
*@li x0: An tensor of type int16, specifying the input. | |||
*@li req_scale: An tensor of type uint64, specifying the scaling ratio. | |||
*@li x1: An tensor of type int16 . \n | |||
*@par Attributes: | |||
*@li dual_output: A optional bool, specifying whether to perform dual ouput, either "True" or "False". Defaults to "False". | |||
*@li relu_flag: A optional bool, specifying whether to perform ReLU, either "True" or "False". Defaults to "False" . \n | |||
*@par Outputs: | |||
*@li y0: The dequantized output tensor of type int8 and with format NC1HWC0. | |||
*@li y1: The dequantized output tensor of type int16 and with format NC1HWC0 . \n | |||
*@li y0: The dequantized output tensor of type int8. | |||
*@li y1: The dequantized output tensor of type int16. \n | |||
*@par Third-party framework compatibility | |||
* It is a custom operator. It has no corresponding operator in Caffe. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -685,6 +685,24 @@ REG_OP(Uniform) | |||
.ATTR(from, Float, 0.0) | |||
.ATTR(to, Float, 1.0) | |||
.OP_END_FACTORY_REG(Uniform) | |||
} // namespace ge | |||
/** | |||
*@brief Outputs integers consisting of 0 and 1, used for lstm etc. \n | |||
*@par Inputs | |||
* @li time_step: A tensor with data type int64. 0-D. | |||
* @li batch_size: A tensor with data type int64. 0-D. | |||
*@par Outputs: | |||
*y: A Tensor. Has the type float16 or float, 2-D, [time_step,batch_size]. \n | |||
*@attention Constraints: | |||
* Compatible with the Caffe operator ContinuationIndicator. | |||
*/ | |||
REG_OP(ContinuationIndicator) | |||
.REQUIRED_ATTR(time_step, Int) | |||
.REQUIRED_ATTR(batch_size, Int) | |||
.OUTPUT(y, TensorType({DT_FLOAT})) | |||
.OP_END_FACTORY_REG(ContinuationIndicator) | |||
} // namespace ge | |||
#endif // OPS_BUILT_IN_OP_PROTO_INC_RANDOM_OPS_H_ |
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2020 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -185,7 +185,7 @@ REG_OP(BN3DTrainingReduceGrad) | |||
*@li This operator is a BatchNorm fusion operator for updating the moving | |||
averages for training. | |||
*This operator is used in conjunction with BNTrainingUpdate. | |||
*@li For Ascend 310, the result accuracy fails to reach 1‰ due to the square | |||
*@li For Ascend 310, the result accuracy fails to reach 1/1000 due to the square | |||
* root instruction. | |||
*/ | |||
REG_OP(BNTrainingUpdate) | |||
@@ -238,7 +238,7 @@ REG_OP(BNTrainingUpdate) | |||
*@li This operator is a BatchNorm fusion operator for updating the moving | |||
averages for training. | |||
*This operator is used in conjunction with BN3DTrainingUpdate. | |||
*@li For Ascend 310, the result accuracy fails to reach 1‰ due to the square | |||
*@li For Ascend 310, the result accuracy fails to reach 1/1000 due to the square | |||
* root instruction. | |||
*/ | |||
REG_OP(BN3DTrainingUpdate) | |||
@@ -277,7 +277,7 @@ REG_OP(BN3DTrainingUpdate) | |||
*y: A 5D Tensor of type float16 or float32 for the normalized "x" . \n | |||
*@attention Constraints: | |||
*For Ascend 310, the result accuracy fails to reach 1‰ due to the square root | |||
*For Ascend 310, the result accuracy fails to reach 1/1000 due to the square root | |||
* instruction. | |||
*/ | |||
REG_OP(BNInfer) | |||
@@ -313,7 +313,7 @@ assignmoving average . \n | |||
*@attention Constraints: | |||
*This operator is used in conjunction with BNTrainingReduce. | |||
For Ascend 310, the result accuracy fails to reach 1‰ due to the square root instruction. | |||
For Ascend 310, the result accuracy fails to reach 1/1000 due to the square root instruction. | |||
*/ | |||
REG_OP(BNTrainingUpdateV2) | |||
.INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT})) | |||
@@ -351,7 +351,7 @@ assign moving average . \n | |||
*@attention Constraints: | |||
*@li This operator is used in conjunction with BNTrainingReduce. | |||
*@li For Ascend 310, the result accuracy fails to reach 1‰ due to the square root instruction. | |||
*@li For Ascend 310, the result accuracy fails to reach 1/1000 due to the square root instruction. | |||
*/ | |||
REG_OP(BNTrainingUpdateV3) | |||
.INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT})) | |||
@@ -1189,7 +1189,7 @@ for the updated variance. | |||
*@attention Constraints: | |||
*@li This operator is a InstanceNorm fusion operator for updating the moving averages for training. | |||
* This operator is used in conjunction with GNTrainingUpdate. | |||
*@li For Ascend 310, the result accuracy fails to reach 1‰ due to the square root instruction. | |||
*@li For Ascend 310, the result accuracy fails to reach 1/1000 due to the square root instruction. | |||
*/ | |||
REG_OP(GNTrainingUpdate) | |||
.INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT})) | |||
@@ -1275,7 +1275,7 @@ REG_OP(ReduceStd) | |||
* @par Attributes: | |||
* Three Attributes, including: | |||
* Five Attributes, including: | |||
* @li dim: An optional listint, Defaults to "None". \n | |||
* @li unbiased: An optional bool. Defaults to "True". | |||
* If "True", Use Bessel Correction. | |||
@@ -1283,9 +1283,14 @@ REG_OP(ReduceStd) | |||
* @li keepdim: An optional bool. Defaults to "False". | |||
* If "True", Keep the original tensor dimension. | |||
* If "False", Do not keep the original tensor dimension. \n | |||
* @li invert: An optional bool, Defaults to "False". | |||
* If "True", the output is inverse of variance. | |||
* If "False", the output is variance. | |||
* @li epsilon: An optional floar, Defaults to 0.001. | |||
* Prevent division by 0. | |||
* @par Outputs: | |||
* @li y: A Tensor. It's the std of X. Has the same type as "x". | |||
* @li y: A Tensor. It's the variance of X or reciprocal of vaiance of X. Has the same type as "x". | |||
* @par Third-party framework compatibility | |||
* Compatible with the Pytorch operator ReduceStdWithMean. | |||
@@ -1297,6 +1302,8 @@ REG_OP(ReduceStdWithMean) | |||
.ATTR(dim, ListInt, {}) | |||
.ATTR(unbiased, Bool, true) | |||
.ATTR(keepdim, Bool, false) | |||
.ATTR(invert, Bool, false) | |||
.ATTR(epsilon, Float, 0.001) | |||
.OP_END_FACTORY_REG(ReduceStdWithMean) | |||
} //namespace ge | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -822,7 +822,7 @@ REG_OP(DynamicGRU) | |||
*@li weight_hidden:Must be one of the following types: float16. The format must be FRACTAL_Z. | |||
*@li bias_input:Must be one of the following types: float16, float32. The format must be ND. | |||
*@li bias_hidden:Must be one of the following types: float16, float32. The format must be ND. | |||
*@li seq_length:Must be one of the following types: int32. The format must be ND. | |||
*@li seq_length:Must be one of the following types: float16 in FRACTAL_NZ and int32 in ND. | |||
*@li init_h:Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@par Attributes: | |||
@@ -852,7 +852,7 @@ REG_OP(DynamicGRUV2) | |||
.INPUT(weight_hidden, TensorType({DT_FLOAT16})) | |||
.OPTIONAL_INPUT(bias_input, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OPTIONAL_INPUT(bias_hidden, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OPTIONAL_INPUT(seq_length, TensorType({DT_INT32})) | |||
.OPTIONAL_INPUT(seq_length, TensorType({DT_INT32, DT_FLOAT16})) | |||
.OPTIONAL_INPUT(init_h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(output_h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
@@ -880,7 +880,7 @@ REG_OP(DynamicGRUV2) | |||
*@li x_weight_input:Must be one of the following types: float32. The format must be FRACTAL_NZ. | |||
*@li weight_hidden:Must be one of the following types: float16. The format must be FRACTAL_Z. | |||
*@li bias_hidden:Must be one of the following types: float16, float32. The format must be ND. | |||
*@li seq_length:Must be one of the following types: int32. The format must be ND. | |||
*@li seq_length:Must be one of the following types: float16 in FRACTAL_NZ and int32 in ND. | |||
*@li init_h:Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@par Attributes: | |||
@@ -913,7 +913,7 @@ REG_OP(DynamicGRUV2Hidden) | |||
.INPUT(x_weight_input, TensorType({DT_FLOAT32})) | |||
.INPUT(weight_hidden, TensorType({DT_FLOAT16})) | |||
.OPTIONAL_INPUT(bias_hidden, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OPTIONAL_INPUT(seq_length, TensorType({DT_INT32})) | |||
.OPTIONAL_INPUT(seq_length, TensorType({DT_INT32, DT_FLOAT16})) | |||
.OPTIONAL_INPUT(init_h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(output_h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
@@ -1049,6 +1049,50 @@ REG_OP(GRUV2HiddenGradCell) | |||
.ATTR(gate_order, String, "zrh") | |||
.OP_END_FACTORY_REG(GRUV2HiddenGradCell) | |||
/** | |||
*@brief: DynamicGRUCellGrad calculation. | |||
*@par Inputs: | |||
*ten inputs: \n | |||
*@li dh_pre_t:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li h:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li dy:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li dh:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li update:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li reset:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li new:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li hidden_new:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ.+ | |||
*@li init_h:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li t_state:A 1D Tensor. Must be one of the following types: int32. The format must be ND. | |||
*@par Attributes: | |||
*gate_order:An string identifying the gate order in weight and bias. Default to "zrh". "rzh" is another option. | |||
*@par Outputs: | |||
*three outputs: \n | |||
*@li dh_prev:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li dgate_h:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@li dnt_x:A 4D Tensor. Must be one of the following types: float16, float32. The format must be FRACTAL_NZ. | |||
*@par Restrictions: | |||
*Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use. | |||
*/ | |||
REG_OP(DynamicGRUCellGrad) | |||
.INPUT(dh_pre_t, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(dy, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(dh, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(update, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(reset, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(new, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(hidden_new, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(init_h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(t_state, TensorType({DT_INT32, DT_INT32})) | |||
.OUTPUT(dh_prev, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(dgate_h, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OUTPUT(dnt_x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.ATTR(gate_order, String, "zrh") | |||
.OP_END_FACTORY_REG(DynamicGRUCellGrad) | |||
/** | |||
* @brief Calculates the reversed outputs of the function "embedding". \n | |||
@@ -1137,8 +1181,8 @@ REG_OP(CommonLSTM) | |||
* | |||
* @par Inputs: | |||
* @li seq_length: A 1D Tensor. Must be one of the following types: int32. Record the current length of each batch. [batch_size]. | |||
* @li b: A 1D Tensor. Must be one of the following types: fp16/fp32. Record the hidden_size. [4 * hidden_size]. | |||
* @li x: A 3D Tensor. Must be one of the following types: fp16/fp32. Record the num_step/batch_size/input_size. [num_step, batch_size, input_size]. | |||
* @li hidden_size: An optional attribute of type int32. pass the hidden_size. \n | |||
* | |||
* @par Outputs: | |||
* seq_mask: A 3D Tensor. Must be one of the following types: fp16/fp32. with the shape of [num_step, batch_size, hidden_size]. And has the same type as "b" \n | |||
@@ -1148,8 +1192,8 @@ REG_OP(CommonLSTM) | |||
*/ | |||
REG_OP(RnnGenMaskV2) | |||
.INPUT(seq_length, TensorType({DT_INT32})) | |||
.INPUT(b, TensorType({{DT_FLOAT16, DT_FLOAT})) | |||
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.REQUIRED_ATTR(hidden_size, Int) | |||
.OUTPUT(seq_mask, TensorType({DT_FLOAT16, DT_FLOAT})) | |||
.OP_END_FACTORY_REG(RnnGenMaskV2) | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -904,8 +904,10 @@ REG_OP(SliceDV2) | |||
* @li indices: A Tensor of type int32, specifying the indices of sorted data . \n | |||
* @attention Constraints: | |||
* @li k =< 5120 | |||
* @li k =< 4096 | |||
* @li Size of the last dimension =< 1458176 | |||
* @li k =< 2048 under lhisi version | |||
* @li Size of the last dimension =< 1040000 under lhisi version | |||
* @li sorted = true | |||
* @li It's unstable sorted indices on the platform of Ascend310 | |||
@@ -1306,8 +1308,7 @@ REG_OP(CumprodD) | |||
*@par Inputs: | |||
* Two inputs, including: | |||
*@li x: A Tensor. Must be one of the following types: float32, float64, int32, uint8, int16, int8, | |||
* complex64, int64, qint8, quint8, qint32, uint16, complex128, float16, uint32, uint64. | |||
*@li x: A Tensor. Must be one of the following types: float32, int32, uint8, int8, float16. | |||
*@li axis A Tensor of type int32 or int64. Range is [-rank(x),rank(x)). Defaults to "0". | |||
* | |||
*@par Attributes: | |||
@@ -1333,8 +1334,7 @@ REG_OP(Cumsum) | |||
* | |||
*@par Inputs: | |||
* One input: | |||
*x: A Tensor. Must be one of the following types: float32, float64, int32, uint8, int16, int8, | |||
* complex64, int64, qint8, quint8, qint32, uint16, complex128, float16, uint32, uint64. | |||
*x: A Tensor. Must be one of the following types: float32, int32, uint8, int8, float16. | |||
* | |||
*@par Attributes: | |||
*@li axis A Tensor of type int32 or int64. Range is [-rank(x),rank(x)). Defaults to "0". | |||
@@ -2408,6 +2408,40 @@ REG_OP(TopKPQDistanceMerge) | |||
.OUTPUT(topk_index, TensorType({DT_INT32})) | |||
.REQUIRED_ATTR(k, Int) | |||
.OP_END_FACTORY_REG(TopKPQDistanceMerge) | |||
/** | |||
*@brief Extracts a strided slice of a tensor. Roughly speaking, this op | |||
extracts a slice of size (end-begin)/stride from the given input tensor. | |||
Starting at the location specified by begin the slice continues by | |||
adding stride to the index until all dimensions are not less than end. | |||
*@par Inputs: | |||
*Four inputs, including: | |||
* @li x: A Tensor. Must be one of the following types: float32, float64, int32, uint8, int16, int8, | |||
* complex64, int64, qint8, quint8, qint32, qint16, quint16, uint16, | |||
* complex128, float16, uint32, uint64. | |||
* @li begin: A Tensor of type int32 or int64, for the index of the first value to select . \n | |||
* @li end: A Tensor of type int32 or int64, for the index of the last value to select . \n | |||
* @li strides: A Tensor of type int32 or int64, for the increment . \n | |||
* @li axes: A Tensor of type int32 or int64, for the increment . \n | |||
*@par Outputs: | |||
*y: A Tensor. Has the same type as "x" . \n | |||
* @par Restrictions: | |||
* Warning: THIS FUNCTION IS EXPERIMENTAL. Please do not use. | |||
*/ | |||
REG_OP(StridedSliceV3) | |||
.INPUT(x, TensorType::BasicType()) | |||
.INPUT(begin, TensorType::IndexNumberType()) | |||
.INPUT(end, TensorType::IndexNumberType()) | |||
.OPTIONAL_INPUT(axes, TensorType::IndexNumberType()) | |||
.OPTIONAL_INPUT(strides, TensorType::IndexNumberType()) | |||
.OUTPUT(y, TensorType::BasicType()) | |||
.OP_END_FACTORY_REG(StridedSliceV3) | |||
} // namespace ge | |||
#endif // OPS_BUILT_IN_OP_PROTO_INC_SELECTION_OPS_H_ |
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -298,8 +298,8 @@ REG_OP(ConcatD) | |||
* Compatible with the TensorFlow operator Concat. | |||
*/ | |||
REG_OP(Concat) | |||
.DYNAMIC_INPUT(x, TensorType::BasicType()) | |||
.INPUT(concat_dim, TensorType::IndexNumberType()) | |||
.DYNAMIC_INPUT(x, TensorType::BasicType()) | |||
.OUTPUT(y, TensorType::BasicType()) | |||
.ATTR(N, Int, 1) | |||
.OP_END_FACTORY_REG(Concat) | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||
@@ -1,5 +1,5 @@ | |||
/** | |||
* Copyright 2019 Huawei Technologies Co., Ltd | |||
* 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. | |||