Browse Source

fix ut

pull/2052/head
guopeian 3 years ago
parent
commit
78efacb55d
3 changed files with 100 additions and 12 deletions
  1. +19
    -10
      tests/ut/ge/hybrid/node_executor/aicpu/aicpu_node_executor_unittest.cc
  2. +52
    -1
      tests/ut/ge/single_op/single_op_model_unittest.cc
  3. +29
    -1
      tests/ut/ge/single_op/single_op_task_unittest.cc

+ 19
- 10
tests/ut/ge/hybrid/node_executor/aicpu/aicpu_node_executor_unittest.cc View File

@@ -152,19 +152,28 @@ TEST_F(UtestAicpuNodeExecutor, aicpu_tf_node_task) {
domi::TaskDef task_def2;
task_def2.set_type(RT_MODEL_TASK_ALL_KERNEL);
task_def2.mutable_kernel()->set_args(reinterpret_cast<const char *>(&args), args.head.length);
task_def2.mutable_kernel()->set_args_size(args.head.length);
hybrid_model.task_defs_[node] = std::vector<domi::TaskDef>({task_def2});
AicpuNodeTask aicpu_node_task(node_item, task_def);
ASSERT_EQ(aicpu_node_task.Init(hybrid_model), FAILED);
domi::KernelDef *kernel_def = task_def2.mutable_kernel();
kernel_def->set_args(reinterpret_cast<const char *>(&args), args.head.length);
kernel_def->set_args_size(args.head.length);
AicpuExtInfo aicpu_ext_info2;
aicpu_ext_info2.infoType = aicpu::FWKAdapter::FWK_ADPT_EXT_SHAPE_TYPE;
aicpu_ext_info2.infoLen = sizeof(int32_t);
memcpy_s(aicpu_ext_info2.infoMsg, sizeof(int32_t), &type, sizeof(int32_t));
char *ext_mem2 = (char*)malloc(sizeof(AicpuExtInfo) + sizeof(int32_t));
memcpy_s(ext_mem2, sizeof(AicpuExtInfo) + sizeof(int32_t), &aicpu_ext_info2, sizeof(AicpuExtInfo) + sizeof(int32_t));
kernel_def->set_kernel_ext_info(ext_mem2, sizeof(AicpuExtInfo) + sizeof(int32_t));
kernel_def->set_kernel_ext_info_size(sizeof(AicpuExtInfo) + sizeof(int32_t));
hybrid_model.task_defs_[node] = std::vector<domi::TaskDef>({task_def2, task_def2});
AicpuNodeTask aicpu_node_task(node_item, task_def2);
ASSERT_EQ(aicpu_node_task.Init(hybrid_model), SUCCESS);
ASSERT_EQ(aicpu_node_task.UpdateIoAddr(*node_state->GetTaskContext()), SUCCESS);
ASSERT_EQ(aicpu_node_task.LaunchTask(*node_state->GetTaskContext()), SUCCESS);
node_item->is_dynamic = false;
ASSERT_EQ(aicpu_node_task.UpdateIoAddr(*node_state->GetTaskContext()), SUCCESS);
//kernel_ex_def->set_allocated_kernel_ext_info(nullptr);
free(ext_mem);
free(ext_mem2);
}


+ 52
- 1
tests/ut/ge/single_op/single_op_model_unittest.cc View File

@@ -23,6 +23,7 @@
#include "graph/utils/graph_utils.h"
#include "runtime/rt.h"
#include "single_op/single_op_model.h"
#include "aicpu/common/aicpu_task_struct.h"
#include "single_op/task/tbe_task_builder.h"
#include "single_op/task/rts_kernel_task_builder.h"
#include "single_op/task/op_task.h"
@@ -43,6 +44,10 @@ constexpr char const *kAttrSupportDynamicShape = "support_dynamicshape";
const char *const kEngineNameAiCore = "AIcoreEngine";
const char *const kEngineNameAiCpu = "aicpu_ascend_kernel";
const char *const kEngineNameAiCpuTf = "aicpu_tf_kernel";
struct AicpuTaskStruct {
aicpu::AicpuParamHead head;
uint64_t io_addrp[6];
}__attribute__((packed));
} // namespace

class UtestSingleOpModel : public testing::Test {
@@ -315,7 +320,7 @@ TEST_F(UtestSingleOpModel, BuildTaskList) {
ASSERT_EQ(mem_task.LaunchKernel(0), SUCCESS);
}

TEST_F(UtestSingleOpModel, build_dynamic_task) {
TEST_F(UtestSingleOpModel, build_dynamic_task01) {
ComputeGraphPtr graph = make_shared<ComputeGraph>("single_op");
GeModelPtr ge_model = make_shared<GeModel>();
ge_model->SetGraph(GraphUtils::CreateGraphFromComputeGraph(graph));
@@ -366,3 +371,49 @@ TEST_F(UtestSingleOpModel, build_dynamic_task) {
op_desc->SetOpKernelLibName(kEngineNameAiCpu);
model.BuildTaskListForDynamicOp(res, single_op);
}
TEST_F(UtestSingleOpModel, build_dynamic_task02) {
ComputeGraphPtr graph = make_shared<ComputeGraph>("single_op");
GeModelPtr ge_model = make_shared<GeModel>();
ge_model->SetGraph(GraphUtils::CreateGraphFromComputeGraph(graph));
shared_ptr<domi::ModelTaskDef> model_task_def = make_shared<domi::ModelTaskDef>();
ge_model->SetModelTaskDef(model_task_def);
AicpuTaskStruct args;
args.head.length = sizeof(args);
args.head.ioAddrNum = 6;
domi::TaskDef *task_def = model_task_def->add_task();
task_def->set_type(RT_MODEL_TASK_KERNEL);
domi::KernelDef *kernel_def = task_def->mutable_kernel();
kernel_def->set_args(reinterpret_cast<const char *>(&args), args.head.length);
kernel_def->set_args_size(args.head.length);
ge::hybrid::AicpuExtInfo aicpu_ext_info;
aicpu_ext_info.infoType = aicpu::FWKAdapter::FWK_ADPT_EXT_SHAPE_TYPE;
aicpu_ext_info.infoLen = sizeof(int32_t);
int32_t type = ge::DEPEND_COMPUTE;
memcpy_s(aicpu_ext_info.infoMsg, sizeof(int32_t), &type, sizeof(int32_t));
char *ext_mem = (char*)malloc(sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
memcpy_s(ext_mem, sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t), &aicpu_ext_info,
sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
kernel_def->set_kernel_ext_info(ext_mem, sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
kernel_def->set_kernel_ext_info_size(sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
domi::KernelContext *context = kernel_def->mutable_context();
context->set_kernel_type(6); // ccKernelType::AI_CPU

string model_data_str = "dynamic_model";
SingleOpModel model("model", model_data_str.c_str(), model_data_str.size());
std::mutex stream_mu;
rtStream_t stream = nullptr;
rtStreamCreate(&stream, 0);
DynamicSingleOp single_op(0, &stream_mu, stream);
model.model_helper_.model_ = ge_model;
auto op_desc = std::make_shared<ge::OpDesc>("add", "Add");
AttrUtils::SetInt(op_desc, ::ge::ATTR_NAME_UNKNOWN_SHAPE_TYPE, ge::DEPEND_COMPUTE);
NodePtr node = graph->AddNode(op_desc);
model.op_list_[0] = node;
StreamResource *res = new (std::nothrow) StreamResource(1);

ASSERT_EQ(model.ParseTasks(), SUCCESS);
model.node_tasks_[node] = { *task_def, *task_def };
op_desc->SetOpKernelLibName(kEngineNameAiCpu);
model.BuildTaskListForDynamicOp(res, single_op);
}

+ 29
- 1
tests/ut/ge/single_op/single_op_task_unittest.cc View File

@@ -195,7 +195,35 @@ TEST_F(UtestSingleOpTask, test_atomic_exec) {
optiling::utils::OpRunInfo run_info(0, true, 0);
task.CalcTilingInfo(run_info);
}

TEST_F(UtestSingleOpTask, test_aicpu_task_launch_kernel) {
AiCpuCCTask task;
rtStream_t stream = nullptr;
task.num_inputs_ = 2;
task.num_outputs_ = 1;
task.input_is_const_ = {true, false};
int total_addr = 3;
uint32_t* addrs[total_addr] = {nullptr, nullptr, nullptr};
task.io_addr_ = reinterpret_cast<uintptr_t*>(addrs);
task.io_addr_num_ = total_addr;
ge::hybrid::AicpuExtInfo aicpu_ext_info;
aicpu_ext_info.infoType = aicpu::FWKAdapter::FWK_ADPT_EXT_SHAPE_TYPE;
aicpu_ext_info.infoLen = sizeof(int32_t);
int32_t type = ge::DEPEND_COMPUTE;
memcpy_s(aicpu_ext_info.infoMsg, sizeof(int32_t), &type, sizeof(int32_t));
char *ext_mem = (char*)malloc(sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
memcpy_s(ext_mem, sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t), &aicpu_ext_info,
sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
std::string ext_info_str(ext_mem, sizeof(ge::hybrid::AicpuExtInfo) + sizeof(int32_t));
vector<DataBuffer> inputs(2, DataBuffer());
vector<DataBuffer> outputs(1, DataBuffer());
vector<GeTensorDesc> inputs_desc(2, GeTensorDesc(GeShape(), FORMAT_NCHW, DT_FLOAT));
vector<GeTensorDesc> outputs_desc(1, GeTensorDesc(GeShape(), FORMAT_NCHW, DT_FLOAT));
ASSERT_EQ(task.SetExtInfoAndType(ext_info_str, 0), SUCCESS);
task.unknown_type_ = ge::DEPEND_COMPUTE;
task.num_outputs_ = 1;
ASSERT_EQ(task.InitForSummaryAndCopy(), SUCCESS);
ASSERT_EQ(task.LaunchKernel(inputs_desc, inputs, outputs_desc, outputs, stream), SUCCESS);
}
TEST_F(UtestSingleOpTask, test_aicpu_task_update_io_addr) {
AiCpuCCTask task;
task.num_inputs_ = 2;


Loading…
Cancel
Save