---
title: LoadFromData
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/atlasgeapi_07_0359.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/atlasgeapi_07_0359.html
indexId: 76fa9b730d9f17e19e64e63e632fecebe2109c32ad6b9bfff068b27329cf0d3d72
---
# LoadFromData

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 头文件/库文件

- 头文件：#include <graph/kernel_launch_info.h>
- 库文件：libregister.so


#### 功能说明

提供将序列化后的Task任务反序列化的能力，主要用于在GenerateTask函数中，将框架构造的Task反序列化后，修改其参数使用。


#### 函数原型

```
static KernelLaunchInfo LoadFromData(const gert::ExeResGenerationContext *context, const std::vector<uint8_t> &data)
```


#### 参数说明

| 参数 | 输入/输出 | 说明 |
| --- | --- | --- |
| context | 输入 | GenerateTask函数的入参，保存了算子的基础信息。 |
| data | 输入 | KernelLaunchInfo序列化后的结果。 |


#### 返回值说明

返回data入参反序列化后的结果。


#### 约束说明

无


#### 调用示例

```
graphStatus Mc2GenTaskCallback(const gert::ExeResGenerationContext *context,
std::vector<std::vector<uint8_t>> &tasks) {
....
// 更改原AI Core任务的ArgsFormat
auto aicore_task = KernelLaunchInfo::LoadFromData(context, tasks.back());
// 从task中获取argsformat
auto aicore_args_format_str = aicore_task.GetArgsFormat();
auto aicore_args_format = ArgsFormatSerializer::Deserialize(aicore_args_format_str);
size_t i = 0UL;
// 找到第一个输入地址的位置
for (; i < aicore_args_format.size(); i++) {
if (aicore_args_format[i].GetType() == ArgDescType::kIrInput ||
aicore_args_format[i].GetType() == ArgDescType::kInputInstance) {
break;
}
}
// 在输入地址前插入一个通信地址
aicore_args_format.insert(aicore_args_format.begin() + i, ArgDescInfo::CreateHiddenInput(HiddenInputSubType::kHcom));
// 将修改后的argsformat序列化后设置回Task中
aicore_task.SetArgsFormat(ArgsFormatSerializer::Serialize(aicore_args_format).GetString());
// 重新序列化并设置到Tasks中
tasks.back() = aicore_task.Serialize();
return SUCCESS;
}
```
