- 下载openmp :http://releases.llvm.org/8.0.0/openmp-8.0.0.src.tar.xz
- 解压:xz –d openmp-8.0.0.src.tar.xz && tar –xvf openmp-8.0.0.tar
- 方便起见将文件名改为openmp,并在同级创建build
- cd build
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBOMP_ARCH=x86_64 -DCMAKE_PREFIX_PATH=/path/to/llvm-project/install/lib/cmake/llvm -DCMAKE_INSTALL_PREFIX=/ path/to/llvm-project/install …
(说明:我之前安装LLVM时,源码llvm、build、install同属一级,且clang环境变量属于install目录下bin。也就是说DCMAKE_INSTALL_PREFIX的路径是你之前配置的clang的bin目录的上层目录,其实也无所谓啦只要生成步骤6的几个文件就行)
(上图路径有些问题已修改) - make & make install
(install下生成头文件与库) - 安装好后可使用命令clang -fopenmp test.c -o test尝试
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(){
int i;
#pragma omp parallel for schedule(static)
for(i = 0; i < 10; i++ ){
printf("i=%d, thread_id=%d \n", i, omp_get_thread_num());
}
return 0;
}
如果成功生成了步骤6的五个文件,但是编译时还是说找不到omp.h,可将三个头文件复制到以下几个路径中:
运行时报错没有libomp.so文件,需要修改环境变量:
export LD_LIBRARY_PATH=/home/canaan/soft/llvm-project/install/lib:$LD_LIBRARY_PATH
OpenMP常用于循环并行化:
找出最耗时的循环→完成串行程序→在串行程序上加上编译制导语句