commit
df1592e97a
@ -0,0 +1,119 @@
|
||||
/**
|
||||
* Copyright 2021 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.
|
||||
*/
|
||||
#include "ge_runtime/task/label_manager.h"
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include "runtime/mem.h"
|
||||
#include "runtime/rt_model.h"
|
||||
#include "common/ge_inner_error_codes.h"
|
||||
#include "framework/common/debug/ge_log.h"
|
||||
|
||||
namespace ge {
|
||||
namespace model_runner {
|
||||
std::weak_ptr<LabelManager> LabelManager::instance_;
|
||||
std::mutex LabelManager::instance_mutex_;
|
||||
|
||||
template <class T>
|
||||
static std::string GetVectorString(const std::vector<T> &vec) {
|
||||
std::string ret;
|
||||
for (size_t i = 0; i < vec.size(); ++i) {
|
||||
if (i != 0) {
|
||||
ret.push_back(',');
|
||||
}
|
||||
ret += std::to_string(vec[i]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
LabelGuard::~LabelGuard() {
|
||||
void *label_info = GetLabelInfo();
|
||||
if (label_info != nullptr) {
|
||||
rtError_t rt_ret = rtFree(label_info);
|
||||
if (rt_ret != RT_ERROR_NONE) {
|
||||
GELOGE(RT_FAILED, "rtFree label_info failed! ret: 0x%X.", rt_ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<LabelManager> LabelManager::GetInstance() {
|
||||
std::lock_guard<std::mutex> lock(instance_mutex_);
|
||||
auto instance = instance_.lock();
|
||||
if (instance != nullptr) {
|
||||
return instance;
|
||||
}
|
||||
|
||||
instance = std::make_shared<LabelManager>();
|
||||
instance_ = instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
std::shared_ptr<LabelGuard> LabelManager::GetLabelInfo(rtModel_t model, const std::vector<uint32_t> &label_ids,
|
||||
const std::vector<void *> &all_label) {
|
||||
std::lock_guard<std::mutex> lock(model_info_mapping_mutex_);
|
||||
rtError_t rt_ret;
|
||||
auto model_iter = model_info_mapping_.find(model);
|
||||
if (model_iter == model_info_mapping_.end()) {
|
||||
model_info_mapping_.emplace(model, std::map<std::string, std::weak_ptr<LabelGuard>>());
|
||||
model_iter = model_info_mapping_.find(model);
|
||||
}
|
||||
|
||||
std::string label_id_str = GetVectorString(label_ids);
|
||||
auto &label_map = model_iter->second;
|
||||
auto label_iter = label_map.find(label_id_str);
|
||||
if (label_iter != label_map.end()) {
|
||||
auto label_guard = label_iter->second.lock();
|
||||
if (label_guard != nullptr) {
|
||||
GELOGI("model %p find same label id %s.", model, label_id_str.c_str());
|
||||
return label_guard;
|
||||
}
|
||||
}
|
||||
|
||||
GELOGI("Alloc label id %s for model %p.", label_id_str.c_str(), model);
|
||||
void *label_info;
|
||||
std::vector<void *> label_list;
|
||||
bool status = true;
|
||||
std::transform(label_ids.begin(), label_ids.end(), std::back_inserter(label_list),
|
||||
[&all_label, &status](uint32_t idx) -> void * {
|
||||
if (idx >= all_label.size()) {
|
||||
GELOGE(PARAM_INVALID, "Invalid label id %u, all label list size %zu.", idx, all_label.size());
|
||||
status = false;
|
||||
return nullptr;
|
||||
}
|
||||
return all_label[idx];
|
||||
});
|
||||
if (!status) {
|
||||
GELOGE(PARAM_INVALID, "Get label info failed.");
|
||||
return nullptr;
|
||||
}
|
||||
uint32_t label_info_size = sizeof(rtLabelDevInfo) * label_list.size();
|
||||
rt_ret = rtMalloc(&label_info, label_info_size, RT_MEMORY_HBM);
|
||||
if (rt_ret != RT_ERROR_NONE) {
|
||||
GELOGE(RT_FAILED, "Call rt api failed, ret: 0x%X", rt_ret);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
rt_ret = rtLabelListCpy(label_list.data(), label_list.size(), label_info, label_info_size);
|
||||
if (rt_ret != RT_ERROR_NONE) {
|
||||
GELOGE(RT_FAILED, "Call rt api failed, ret: 0x%X", rt_ret);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto label_guard = std::make_shared<LabelGuard>(label_info);
|
||||
label_map.emplace(label_id_str, label_guard);
|
||||
return label_guard;
|
||||
}
|
||||
} // namespace model_runner
|
||||
} // namespace ge
|
@ -0,0 +1,54 @@
|
||||
/**
|
||||
* Copyright 2021 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 GE_GE_RUNTIME_TASK_LABEL_MANAGER_H_
|
||||
#define GE_GE_RUNTIME_TASK_LABEL_MANAGER_H_
|
||||
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
#include <map>
|
||||
#include <runtime/base.h>
|
||||
|
||||
namespace ge {
|
||||
namespace model_runner {
|
||||
class LabelGuard {
|
||||
public:
|
||||
explicit LabelGuard(void *label_info) : label_info_(reinterpret_cast<uintptr_t>(label_info)) {}
|
||||
~LabelGuard();
|
||||
void *GetLabelInfo() { return reinterpret_cast<void *>(label_info_); }
|
||||
|
||||
private:
|
||||
uintptr_t label_info_;
|
||||
};
|
||||
|
||||
class LabelManager {
|
||||
public:
|
||||
static std::shared_ptr<LabelManager> GetInstance();
|
||||
std::shared_ptr<LabelGuard> GetLabelInfo(rtModel_t model, const std::vector<uint32_t> &label_ids,
|
||||
const std::vector<void *> &all_label);
|
||||
|
||||
private:
|
||||
std::mutex model_info_mapping_mutex_;
|
||||
std::map<rtModel_t, std::map<std::string, std::weak_ptr<LabelGuard>>> model_info_mapping_;
|
||||
|
||||
static std::weak_ptr<LabelManager> instance_;
|
||||
static std::mutex instance_mutex_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace model_runner
|
||||
} // namespace ge
|
||||
#endif // GE_GE_RUNTIME_TASK_LABEL_MANAGER_H_
|
@ -0,0 +1,73 @@
|
||||
/**
|
||||
* 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_H_
|
||||
#define INC_EXTERNAL_ACL_ACL_H_
|
||||
|
||||
#include "acl_rt.h"
|
||||
#include "acl_op.h"
|
||||
#include "acl_mdl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Current version is 1.0.0
|
||||
#define ACL_MAJOR_VERSION 1
|
||||
#define ACL_MINOR_VERSION 0
|
||||
#define ACL_PATCH_VERSION 0
|
||||
|
||||
/**
|
||||
* @ingroup AscendCL
|
||||
* @brief acl initialize
|
||||
*
|
||||
* @par Restriction
|
||||
* The aclInit interface can be called only once in a process
|
||||
* @param configPath [IN] the config path,it can be NULL
|
||||
* @retval ACL_SUCCESS The function is successfully executed.
|
||||
* @retval OtherValues Failure
|
||||
*/
|
||||
ACL_FUNC_VISIBILITY aclError aclInit(const char *configPath);
|
||||
|
||||
/**
|
||||
* @ingroup AscendCL
|
||||
* @brief acl finalize
|
||||
*
|
||||
* @par Restriction
|
||||
* Need to call aclFinalize before the process exits.
|
||||
* After calling aclFinalize,the services cannot continue to be used normally.
|
||||
* @retval ACL_SUCCESS The function is successfully executed.
|
||||
* @retval OtherValues Failure
|
||||
*/
|
||||
ACL_FUNC_VISIBILITY aclError aclFinalize();
|
||||
|
||||
/**
|
||||
* @ingroup AscendCL
|
||||
* @brief query ACL interface version
|
||||
*
|
||||
* @param majorVersion[OUT] ACL interface major version
|
||||
* @param minorVersion[OUT] ACL interface minor version
|
||||
* @param patchVersion[OUT] ACL interface patch version
|
||||
* @retval ACL_SUCCESS The function is successfully executed.
|
||||
* @retval OtherValues Failure
|
||||
*/
|
||||
ACL_FUNC_VISIBILITY aclError aclrtGetVersion(int32_t *majorVersion, int32_t *minorVersion, int32_t *patchVersion);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // INC_EXTERNAL_ACL_ACL_H_
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,106 @@
|
||||
/**
|
||||
* 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_OP_COMPILER_H_
|
||||
#define INC_EXTERNAL_ACL_ACL_OP_COMPILER_H_
|
||||
|
||||
#include "acl_base.h"
|
||||
#include "acl_op.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum aclCompileType { ACL_COMPILE_SYS, ACL_COMPILE_UNREGISTERED } aclopCompileType;
|
||||
|
||||
typedef enum {
|
||||
ACL_PRECISION_MODE,
|
||||
ACL_AICORE_NUM,
|
||||
ACL_AUTO_TUNE_MODE,
|
||||
ACL_OP_SELECT_IMPL_MODE,
|
||||
ACL_OPTYPELIST_FOR_IMPLMODE,
|
||||
ACL_OP_DEBUG_LEVEL,
|
||||
ACL_DEBUG_DIR,
|
||||
ACL_OP_COMPILER_CACHE_MODE,
|
||||
ACL_OP_COMPILER_CACHE_DIR
|
||||
} aclCompileOpt;
|
||||
|
||||
/**
|
||||
* @ingroup AscendCL
|
||||
* @brief compile op
|
||||
*
|
||||
* @param opType [IN] op type
|
||||
* @param numInputs [IN] number of inputs
|
||||
* @param inputDesc [IN] pointer to array of input tensor descriptions
|
||||
* @param numOutputs [IN] number of outputs
|
||||
* @param outputDesc [IN] pointer to array of output tensor descriptions
|
||||
* @param attr [IN] pointer to instance of aclopAttr.
|
||||
* may pass nullptr if the op has no attribute
|
||||
* @param engineType [IN] engine type
|
||||
* @param compileFlag [IN] compile flag
|
||||
* @param opPath [IN] path of op
|
||||
*
|
||||
* @retval ACL_SUCCESS The function is successfully executed.
|
||||
* @retval OtherValues Failure
|
||||
*/
|
||||
ACL_FUNC_VISIBILITY aclError aclopCompile(const char *opType, int numInputs, const aclTensorDesc *const inputDesc[],
|
||||
int numOutputs, const aclTensorDesc *const outputDesc[],
|
||||
const aclopAttr *attr, aclopEngineType engineType,
|
||||
aclopCompileType compileFlag, const char *opPath);
|
||||
|
||||
/**
|
||||
* @ingroup AscendCL
|
||||
* @brief compile and execute op
|
||||
*
|
||||
* @param opType [IN] op type
|
||||
* @param numInputs [IN] number of inputs
|
||||
* @param inputDesc [IN] pointer to array of input tensor descriptions
|
||||
* @param inputs [IN] pointer to array of input buffers
|
||||
* @param numOutputs [IN] number of outputs
|
||||
* @param outputDesc [IN] pointer to array of output tensor descriptions
|
||||
* @param outputs [IN] pointer to array of outputs buffers
|
||||
* @param attr [IN] pointer to instance of aclopAttr.
|
||||
* may pass nullptr if the op has no attribute
|
||||
* @param engineType [IN] engine type
|
||||
* @param compileFlag [IN] compile flag
|
||||
* @param opPath [IN] path of op
|
||||
* @param stream [IN] stream handle
|
||||
*
|
||||
* @retval ACL_SUCCESS The function is successfully executed.
|
||||
* @retval OtherValues Failure
|
||||
*/
|
||||
ACL_FUNC_VISIBILITY aclError aclopCompileAndExecute(
|
||||
const char *opType, int numInputs, const aclTensorDesc *const inputDesc[], const aclDataBuffer *const inputs[],
|
||||
int numOutputs, const aclTensorDesc *const outputDesc[], aclDataBuffer *const outputs[], const aclopAttr *attr,
|
||||
aclopEngineType engineType, aclopCompileType compileFlag, const char *opPath, aclrtStream stream);
|
||||
|
||||
/**
|
||||
* @ingroup AscendCL
|
||||
* @brief set compile option
|
||||
*
|
||||
* @param aclCompileOpt [IN] compile option
|
||||
* @param value [IN] pointer for the option value
|
||||
*
|
||||
* @retval ACL_SUCCESS The function is successfully executed.
|
||||
* @retval OtherValues Failure
|
||||
*/
|
||||
ACL_FUNC_VISIBILITY aclError aclSetCompileopt(aclCompileOpt opt, const char *value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // INC_EXTERNAL_ACL_ACL_OP_COMPILER_H_
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,75 @@
|
||||
/**
|
||||
* 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_GE_GE_ERROR_CODES_H_
|
||||
#define INC_EXTERNAL_GE_GE_ERROR_CODES_H_
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#ifdef FUNC_VISIBILITY
|
||||
#define GE_FUNC_VISIBILITY _declspec(dllexport)
|
||||
#else
|
||||
#define GE_FUNC_VISIBILITY
|
||||
#endif
|
||||
#else
|
||||
#ifdef FUNC_VISIBILITY
|
||||
#define GE_FUNC_VISIBILITY __attribute__((visibility("default")))
|
||||
#else
|
||||
#define GE_FUNC_VISIBILITY
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
static const uint32_t ACL_ERROR_GE_PARAM_INVALID = 145000;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_NOT_INIT = 145001;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_MODEL_PATH_INVALID = 145002;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_MODEL_ID_INVALID = 145003;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_MODEL_DATA_SIZE_INVALID = 145006;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_MODEL_ADDR_INVALID = 145007;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_MODEL_QUEUE_ID_INVALID = 145008;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_LOAD_MODEL_REPEATED = 145009;
|
||||
static const uint32_t ACL_ERROR_GE_DYNAMIC_INPUT_ADDR_INVALID = 145011;
|
||||
static const uint32_t ACL_ERROR_GE_DYNAMIC_INPUT_LENGTH_INVALID = 145012;
|
||||
static const uint32_t ACL_ERROR_GE_DYNAMIC_BATCH_SIZE_INVALID = 145013;
|
||||
static const uint32_t ACL_ERROR_GE_AIPP_BATCH_EMPTY = 145014;
|
||||
static const uint32_t ACL_ERROR_GE_AIPP_NOT_EXIST = 145015;
|
||||
static const uint32_t ACL_ERROR_GE_AIPP_MODE_INVALID = 145016;
|
||||
static const uint32_t ACL_ERROR_GE_OP_TASK_TYPE_INVALID = 145017;
|
||||
static const uint32_t ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID = 145018;
|
||||
static const uint32_t ACL_ERROR_GE_PLGMGR_PATH_INVALID = 145019;
|
||||
static const uint32_t ACL_ERROR_GE_FORMAT_INVALID = 145020;
|
||||
static const uint32_t ACL_ERROR_GE_SHAPE_INVALID = 145021;
|
||||
static const uint32_t ACL_ERROR_GE_DATATYPE_INVALID = 145022;
|
||||
static const uint32_t ACL_ERROR_GE_MEMORY_ALLOCATION = 245000;
|
||||
static const uint32_t ACL_ERROR_GE_MEMORY_OPERATE_FAILED = 245001;
|
||||
static const uint32_t ACL_ERROR_GE_INTERNAL_ERROR = 545000;
|
||||
static const uint32_t ACL_ERROR_GE_LOAD_MODEL = 545001;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_LOAD_MODEL_PARTITION_FAILED = 545002;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_LOAD_WEIGHT_PARTITION_FAILED = 545003;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_LOAD_TASK_PARTITION_FAILED = 545004;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_LOAD_KERNEL_PARTITION_FAILED = 545005;
|
||||
static const uint32_t ACL_ERROR_GE_EXEC_RELEASE_MODEL_DATA = 545006;
|
||||
static const uint32_t ACL_ERROR_GE_COMMAND_HANDLE = 545007;
|
||||
static const uint32_t ACL_ERROR_GE_GET_TENSOR_INFO = 545008;
|
||||
static const uint32_t ACL_ERROR_GE_UNLOAD_MODEL = 545009;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // namespace ge
|
||||
#endif
|
||||
#endif // INC_EXTERNAL_GE_GE_ERROR_CODES_H_
|
@ -0,0 +1,102 @@
|
||||
/**
|
||||
* 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_EXTERNEL_RT_ERROR_CODES_H__
|
||||
#define __INC_EXTERNEL_RT_ERROR_CODES_H__
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static const int32_t ACL_RT_SUCCESS = 0; // success
|
||||
|
||||
static const int32_t ACL_ERROR_RT_PARAM_INVALID = 107000; // param invalid
|
||||
static const int32_t ACL_ERROR_RT_INVALID_DEVICEID = 107001; // invalid device id
|
||||
static const int32_t ACL_ERROR_RT_CONTEXT_NULL = 107002; // current context null
|
||||
static const int32_t ACL_ERROR_RT_STREAM_CONTEXT = 107003; // stream not in current context
|
||||
static const int32_t ACL_ERROR_RT_MODEL_CONTEXT = 107004; // model not in current context
|
||||
static const int32_t ACL_ERROR_RT_STREAM_MODEL = 107005; // stream not in model
|
||||
static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_INVALID = 107006; // event timestamp invalid
|
||||
static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_REVERSAL = 107007; // event timestamp reversal
|
||||
static const int32_t ACL_ERROR_RT_ADDR_UNALIGNED = 107008; // memory address unaligned
|
||||
static const int32_t ACL_ERROR_RT_FILE_OPEN = 107009; // open file failed
|
||||
static const int32_t ACL_ERROR_RT_FILE_WRITE = 107010; // write file failed
|
||||
static const int32_t ACL_ERROR_RT_STREAM_SUBSCRIBE = 107011; // error subscribe stream
|
||||
static const int32_t ACL_ERROR_RT_THREAD_SUBSCRIBE = 107012; // error subscribe thread
|
||||
static const int32_t ACL_ERROR_RT_GROUP_NOT_SET = 107013; // group not set
|
||||
static const int32_t ACL_ERROR_RT_GROUP_NOT_CREATE = 107014; // group not create
|
||||
static const int32_t ACL_ERROR_RT_STREAM_NO_CB_REG = 107015; // callback not register to stream
|
||||
static const int32_t ACL_ERROR_RT_INVALID_MEMORY_TYPE = 107016; // invalid memory type
|
||||
static const int32_t ACL_ERROR_RT_INVALID_HANDLE = 107017; // invalid handle
|
||||
static const int32_t ACL_ERROR_RT_INVALID_MALLOC_TYPE = 107018; // invalid malloc type
|
||||
|
||||
static const int32_t ACL_ERROR_RT_FEATURE_NOT_SUPPORT = 207000; // feature not support
|
||||
static const int32_t ACL_ERROR_RT_MEMORY_ALLOCATION = 207001; // memory allocation error
|
||||
static const int32_t ACL_ERROR_RT_MEMORY_FREE = 207002; // memory free error
|
||||
static const int32_t ACL_ERROR_RT_AICORE_OVER_FLOW = 207003; // aicore over flow
|
||||
static const int32_t ACL_ERROR_RT_NO_DEVICE = 207004; // no device
|
||||
static const int32_t ACL_ERROR_RT_RESOURCE_ALLOC_FAIL = 207005; // resource alloc fail
|
||||
static const int32_t ACL_ERROR_RT_NO_PERMISSION = 207006; // no permission
|
||||
static const int32_t ACL_ERROR_RT_NO_EVENT_RESOURCE = 207007; // no event resource
|
||||
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_INTERNAL_ERROR = 507000; // runtime internal error
|
||||
static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error
|
||||
static const int32_t ACL_ERROR_RT_STREAM_TASK_FULL = 507002; // task full in stream
|
||||
static const int32_t ACL_ERROR_RT_STREAM_TASK_EMPTY = 507003; // task empty in stream
|
||||
static const int32_t ACL_ERROR_RT_STREAM_NOT_COMPLETE = 507004; // stream not complete
|
||||
static const int32_t ACL_ERROR_RT_END_OF_SEQUENCE = 507005; // end of sequence
|
||||
static const int32_t ACL_ERROR_RT_EVENT_NOT_COMPLETE = 507006; // event not complete
|
||||
static const int32_t ACL_ERROR_RT_CONTEXT_RELEASE_ERROR = 507007; // context release error
|
||||
static const int32_t ACL_ERROR_RT_SOC_VERSION = 507008; // soc version error
|
||||
static const int32_t ACL_ERROR_RT_TASK_TYPE_NOT_SUPPORT = 507009; // task type not support
|
||||
static const int32_t ACL_ERROR_RT_LOST_HEARTBEAT = 507010; // ts lost heartbeat
|
||||
static const int32_t ACL_ERROR_RT_MODEL_EXECUTE = 507011; // model execute failed
|
||||
static const int32_t ACL_ERROR_RT_REPORT_TIMEOUT = 507012; // report timeout
|
||||
static const int32_t ACL_ERROR_RT_SYS_DMA = 507013; // sys dma error
|
||||
static const int32_t ACL_ERROR_RT_AICORE_TIMEOUT = 507014; // aicore timeout
|
||||
static const int32_t ACL_ERROR_RT_AICORE_EXCEPTION = 507015; // aicore exception
|
||||
static const int32_t ACL_ERROR_RT_AICORE_TRAP_EXCEPTION = 507016; // aicore trap exception
|
||||
static const int32_t ACL_ERROR_RT_AICPU_TIMEOUT = 507017; // aicpu timeout
|
||||
static const int32_t ACL_ERROR_RT_AICPU_EXCEPTION = 507018; // aicpu exception
|
||||
static const int32_t ACL_ERROR_RT_AICPU_DATADUMP_RSP_ERR = 507019; // aicpu datadump response error
|
||||
static const int32_t ACL_ERROR_RT_AICPU_MODEL_RSP_ERR = 507020; // aicpu model operate response error
|
||||
static const int32_t ACL_ERROR_RT_PROFILING_ERROR = 507021; // profiling error
|
||||
static const int32_t ACL_ERROR_RT_IPC_ERROR = 507022; // ipc error
|
||||
static const int32_t ACL_ERROR_RT_MODEL_ABORT_NORMAL = 507023; // model abort normal
|
||||
static const int32_t ACL_ERROR_RT_KERNEL_UNREGISTERING = 507024; // kernel unregistering
|
||||
static const int32_t ACL_ERROR_RT_RINGBUFFER_NOT_INIT = 507025; // ringbuffer not init
|
||||
static const int32_t ACL_ERROR_RT_RINGBUFFER_NO_DATA = 507026; // ringbuffer no data
|
||||
static const int32_t ACL_ERROR_RT_KERNEL_LOOKUP = 507027; // kernel lookup error
|
||||
static const int32_t ACL_ERROR_RT_KERNEL_DUPLICATE = 507028; // kernel register duplicate
|
||||
static const int32_t ACL_ERROR_RT_DEBUG_REGISTER_FAIL = 507029; // debug register failed
|
||||
static const int32_t ACL_ERROR_RT_DEBUG_UNREGISTER_FAIL = 507030; // debug unregister failed
|
||||
static const int32_t ACL_ERROR_RT_LABEL_CONTEXT = 507031; // label not in current context
|
||||
static const int32_t ACL_ERROR_RT_PROGRAM_USE_OUT = 507032; // program register num use out
|
||||
static const int32_t ACL_ERROR_RT_DEV_SETUP_ERROR = 507033; // device setup error
|
||||
|
||||
static const int32_t ACL_ERROR_RT_DRV_INTERNAL_ERROR = 507899; // drv internal error
|
||||
static const int32_t ACL_ERROR_RT_AICPU_INTERNAL_ERROR = 507900; // aicpu internal error
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __INC_EXTERNEL_RT_ERROR_CODES_H__
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,134 @@
|
||||
/**
|
||||
* 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 hccl.h
|
||||
* @brief HCCL API
|
||||
*/
|
||||
|
||||
#ifndef HCCL_H_
|
||||
#define HCCL_H_
|
||||
|
||||
#include <hccl/hccl_types.h>
|
||||
#include <acl/acl.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
/**
|
||||
* @brief Initialize HCCL.
|
||||
*
|
||||
* @param clusterInfo A string identifying the cluster info file path, include file name.
|
||||
* @param rank A integer identifying the identify for the rank.
|
||||
* @param comm A pointer identifying the initialized communication resource.
|
||||
* @return HcclResult
|
||||
* @see HcclCommDestroy()
|
||||
*/
|
||||
extern HcclResult HcclCommInitClusterInfo(const char *clusterInfo, uint32_t rank, HcclComm *comm);
|
||||
|
||||
/**
|
||||
* @brief Get hccl root info.
|
||||
*
|
||||
* @param rootInfo A pointer identifying the hccl root info.
|
||||
* @return HcclResult
|
||||
*/
|
||||
extern HcclResult HcclGetRootInfo(HcclRootInfo *rootInfo);
|
||||
|
||||
/**
|
||||
* @brief Initialize HCCL with root info.
|
||||
*
|
||||
* @param nRanks A integer identifying the rank size of the cluster.
|
||||
* @param rootInfo A struct identifying the hccl root info.
|
||||
* @param rank A integer identifying the identify for the rank.
|
||||
* @param comm A pointer identifying the initialized communication resource.
|
||||
* @return HcclResult
|
||||
* @see HcclCommDestroy()
|
||||
*/
|
||||
extern HcclResult HcclCommInitRootInfo(uint32_t nRanks, const HcclRootInfo *rootInfo, uint32_t rank, HcclComm *comm);
|
||||
|
||||
/**
|
||||
* @brief AllReduce operator.
|
||||
*
|
||||
* @param sendBuf A pointer identifying the input data address of the operator.
|
||||
* @param recvBuf A pointer identifying the output data address of the operator.
|
||||
* @param count An integer(u64) identifying the number of the output data.
|
||||
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, float16,
|
||||
* float32.
|
||||
* @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod.
|
||||
* @param comm A pointer identifying the communication resource based on.
|
||||
* @param stream A pointer identifying the stream information.
|
||||
* @return HcclResult
|
||||
*/
|
||||
extern HcclResult HcclAllReduce(void *sendBuf, void *recvBuf, uint64_t count, HcclDataType dataType, HcclReduceOp op,
|
||||
HcclComm comm, aclrtStream stream);
|
||||
|
||||
/**
|
||||
* @brief Broadcast operator.
|
||||
*
|
||||
* @param buf A pointer identifying the data address of the operator.
|
||||
* @param count An integer(u64) identifying the number of the data.
|
||||
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
|
||||
* @param root An integer(u32) identifying the the root rank in the operator.
|
||||
* @param comm A pointer identifying the communication resource based on
|
||||
* @param stream A pointer identifying the stream information.
|
||||
* @return HcclResult
|
||||
*/
|
||||
extern HcclResult HcclBroadcast(void *buf, uint64_t count, HcclDataType dataType, uint32_t root, HcclComm comm,
|
||||
aclrtStream stream);
|
||||
|
||||
/**
|
||||
* @brief ReduceScatter operator.
|
||||
*
|
||||
* @param sendBuf A pointer identifying the input data address of the operator.
|
||||
* @param recvBuf A pointer identifying the output data address of the operator.
|
||||
* @param recvCount An integer(u64) identifying the number of the output data.
|
||||
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
|
||||
* @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod.
|
||||
* @param comm A pointer identifying the communication resource based on.
|
||||
* @param stream A pointer identifying the stream information.
|
||||
* @return HcclResult
|
||||
*/
|
||||
extern HcclResult HcclReduceScatter(void *sendBuf, void *recvBuf, uint64_t recvCount, HcclDataType dataType,
|
||||
HcclReduceOp op, HcclComm comm, aclrtStream stream);
|
||||
|
||||
/**
|
||||
* @brief AllGather operator.
|
||||
*
|
||||
* @param sendBuf A pointer identifying the input data address of the operator.
|
||||
* @param recvBuf A pointer identifying the output data address of the operator.
|
||||
* @param sendCount An integer(u64) identifying the number of the input data.
|
||||
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
|
||||
* @param comm A pointer identifying the communication resource based on.
|
||||
* @param stream A pointer identifying the stream information.
|
||||
* @return HcclResult
|
||||
*/
|
||||
extern HcclResult HcclAllGather(void *sendBuf, void *recvBuf, uint64_t sendCount, HcclDataType dataType, HcclComm comm,
|
||||
aclrtStream stream);
|
||||
|
||||
/**
|
||||
* @brief Destroy HCCL comm
|
||||
*
|
||||
* @param comm A pointer identifying the communication resource targetting
|
||||
* @return HcclResult
|
||||
* @see HcclCommInitClusterInfo()
|
||||
*/
|
||||
extern HcclResult HcclCommDestroy(HcclComm comm);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
#endif // HCCL_H_
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue