---
title: 迁移步骤
description: "用户可以通过以下两种方法将FFTW迁移到KML_FFT。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0035.html
sourcePath: /source/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0035.html
indexId: 1d5b81fe0b0cdcafe0f8960f62cc131caaa16b5bfde6722add932b059ccc982267
---
# 迁移步骤

#### C语言迁移步骤

用户可以通过以下两种方法将FFTW迁移到KML_FFT。

第一种：直接迁移（需要修改部分代码）。

1. 使用全局替换，将带有fftw前缀的接口替换成kml_fft前缀，将带有fftwf前缀的接口替换成kml_fftf前缀，如果有使用到FFTW头文件定义的宏定义常量，也需要将FFTW前缀替换成KML_FFT前缀。将#include <fftw.h>替换成#include <kfft.h> 。
2. 在编译选项中将-lfftw/-lfftwf替换为-lkfft/-lkfftf。
3. 添加环境变量，/PATH_TO_KFFT为KML_FFT的安装路径。

```
export LD_LIBRARY_PATH=/PATH_TO_KFFT:$LD_LIBRARY_PATH
```


第二种：通过开源适配层迁移（不需要修改源码，推荐使用该方法）。

1. 使用RPM包安装KML。
  1 rpm -ivh boostkit-kmlxxxx.aarch64.rpm

2. 下载鲲鹏数学库开源适配层。
  下载链接：https://atomgit.com/openeuler/kml_adapter(https://atomgit.com/openeuler/kml_adapter)

3. 在kml_fft_adapter目录下进行编译。
  1 2 cd kml_fft_adapter sh build.sh

4. 在build目录下会生成适配的动态库libfftw3f.so和libfftw3.so，使用生成适配的动态库可直接替换软件中链接的fftw库。
5. 添加环境变量，/PATH_TO_FFT_ADAPTER/build为开源适配层动态库的安装路径。

```
export LD_LIBRARY_PATH=/PATH_TO_FFT_ADAPTER/build:$LD_LIBRARY_PATH
```


第二种：通过适配层迁移（不需要修改源码，推荐使用该方法）

1. 添加环境变量，应用适配层so，替换原来软件中链接的fftw库。

```
export LD_LIBRARY_PATH=/PATH_TO_KML_ADAPTER/:$LD_LIBRARY_PATH
```


2. 添加环境变量，使用kfft链接到适配层。

```
export LD_LIBRARY_PATH=/PATH_TO_KML_FFT/:$LD_LIBRARY_PATH
```


3. 编译时将-llapack替换为-lklapack_full


#### Fortran接口迁移步骤

FFTW包含f77，f90，f03接口，其中f77接口定义与KML_FFT提供的Fortran接口不同，但内部逻辑实现基本相同。需要在KML_FFT外层封装一层适配f77的头文件。
