# 输入数据和标杆数据准备

使用AscendC调测工具进行算子调测前，必须提供算子的输入数据和标杆数据。

*   输入数据（input数据）：固定shape算子运行时的输入数据，bin格式。
    
*   标杆数据（golden数据）：根据输入数据计算出来的真值数据，用于与输出数据进行精度比对，bin格式。
    

本章节提供多种方式来准备数据，开发者可以根据实际情况选择合适的方式。

*   **方式1：采用外部提供的input/golden数据。**
    
    开发者采用外部数据源进行算子调测，一般适合首次调测场景。
    
    在算子信息json配置文件中，将gen\_data配置为false，data\_file配置为输入数据、标杆数据对应的路径（必须为绝对路径），示例如下。
    
    ```
    {
        "gen_data": false,
        "inputs": [
            {
                "data_file": "/path/to/input_data_q.bin"
            }
        ],
        "outputs": [
            {
                "data_file": "/path/to/golden_data_out.bin"
            }
        ]
    }
    ```
    
    若外部提供的数据是.pt文件，需要转换为.bin文件，以PyTorch为例：
    
    ```
    import torch
    model = torch.load('model.pt')   # 加载.pt文件
    torch.save(model, 'model.bin')   # 将模型参数保存为二进制文件
    ```
    
*   **方式2：采用已生成过的input/golden数据，无需重新生成。**
    
    当开发者需要多次重跑，建议直接使用历史生成的数据，避免重复生成，导致调测耗时过长。
    
    在算子信息json配置文件中，将gen\_data配置为false，data\_file配置为输入数据、标杆数据对应的bin文件名（不含路径信息，默认在当前路径下查找数据文件），示例如下。
    
    ```
    {
        "gen_data": false,
        "inputs": [
            {
                "data_file": "input_data_q.bin"
            }
        ],
        "outputs": [
            {
                "data_file": "golden_data_out.bin"
            }
        ]
    }
    ```
    
*   **方式3：采用工具随机生成input数据。**
    
    开发者未准备任何数据，可采用工具随机生成的input数据，生成的bin数据文件默认在当前路径下的对应算子的data文件夹中。该场景下没有golden数据，因此不支持精度比对。
    
    在算子信息json配置文件中，将gen\_data配置为true，data\_script配置为空字符串或null，data\_file配置为输入数据、标杆数据对应的bin文件名（不含路径信息，默认在当前路径下查找数据文件），示例如下。
    
    ```
    "data_script": "",
    "gen_data": true,
    
    "shape": [1, 16384],
    "data_file": "sample.bin",
    ```
    
*   **方式4：采用脚本生成input/golden数据。**
    
    开发者自行准备数据生成脚本（一般是.py文件），同时配置算子信息json配置文件。
    
    将gen\_data配置为true，data\_script配为数据生成脚本路径（以FlashAttentionScore算子为例），data\_file配置为输入数据、标杆数据对应的bin文件名（不含路径信息，默认在当前路径下查找数据文件），示例如下。
    
    ```
    "data_script": "${fa_case_dir}/flash_attention_score_golden.py",
    "gen_data": true,
    
    "data_file": "sample.bin",
    ```
    
    生成数据时，会调用该脚本，并固定传入以下参数：
    
    sys.argv\[1\]：输入的算子json配置文件。
    
    sys.argv\[2\]：输出bin文件路径（工作路径下的data文件夹，例如debug\_workspace/FlashAttentionScore/data/）。
    
    *   开发者需要根据输入的sys.argv\[1\]读取算子json配置文件内容，获取生成数据所需的算子shape信息、数据文件的文件名，并在脚本中适配生成的文件名。
    *   开发者需要根据输入的sys.argv\[2\]设置存放input/output数据文件的路径，将生成的文件保存到该路径下。