---
title: 毕昇编译器向量化方法
description: "使用毕昇编译器时在链接选项中同时加上-lksvml -fveclib=MATHLIB -lkm -lm，并添加-O3或-O2选项以开启向量接口。其中-O3/-O2是为了开启向量化优化，这是向量化数学库起效的前提。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0463.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0463.html
indexId: 78365f49813d214cc7bced9a02b96dacacb7f616fd00cedafc27d3035e4195f461
---
# 毕昇编译器向量化方法

使用毕昇编译器时在链接选项中同时加上-lksvml -fveclib=MATHLIB -lkm -lm，并添加-O3或-O2选项以开启向量接口。其中-O3/-O2是为了开启向量化优化，这是向量化数学库起效的前提。

#### 示例

test.c：

```
#include <km.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
        long loop = 1e7;
        int len = 8192;
        float *a = (float*)malloc(sizeof(float) * len);
        float *b = (float*)malloc(sizeof(float) * len);
        float *d = (float*)malloc(sizeof(float) * len);
        for (int i = 0; i < len; i++) {
                a[i] = rand() * 7.7680f - 6.3840f;
                b[i] = rand() * 8.7680f - 6.3840f;
                d[i] = 0;
        }
        for (int i = 0; i < loop; i++) {
                for (int j = 0; j < len; j++) {
                        d[j] = expf(a[j]);
                }
        }
        printf("%f\n", d[0]);
        return 1;
}
```

编译指令：

```
clang test.c -lksvml -fveclib=MATHLIB -lkm -lm -O3
```

使用nm命令查看调用接口：

```
nm -D a.out
```


出现_ZGVnN4v_前缀接口表示调用成功。
