mac和WSL系统下OpenMP与MPI环境配置

并行算法课程,配置下OpenMP与MPI,主要是mac下编译器的情况有点复杂折腾了很久记录一下。


一、WLS

在window10下直接先安装linux子系统,官方教程很方便: 适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
启动Linux时碰到了BIOS没有启用虚拟化的问题
在这里插入图片描述
一般华硕主板按del重启就可以进BIOS,但试了好几个键也都直接开机了没有进,还是要先给主板放电后才行:台式电脑主板放电
Linux下编译器都没什么问题,几条命令就可以了。

1. OpenMP环境

直接安装gcc

sudo apt-get install gcc

编译openmp程序后运行

gcc -fopenmp -o xx xx.c
./xx

MPI环境的配置太久远忘记了(所以一定要及时记录!!!)但没有网上搜到的其他帖子那样麻烦,好像也是一两条命令就可以了

二、macOS

槽点太多一时不知从哪说起,网上的方法看花了试了很多,个人感觉编译器的各种问题和macOS系统以及系统版本都有关。
首先通过gcc -v看版本就很有问题,背后的不是gcc编译器,而当在终端通过gcc命令编译openmp程序的时候,报错的是clang
在这里插入图片描述
网上有解决该问题的:macbook配置clang和openmp,但是我试了后没用。
尝试用llvm去编译程序,llvm -fopenmp -o命令后报的错是连stdio.h头文件都找不到。

1. XCode下运行OpenMP程序

不用终端,在XCode下,参照的是这个教程:Clang + OpenMP Setup in Xcode
主要就是通过配置用户个人编译的一些参数使得编译通过,但跟着教程也出现了编译问题
ld: library not found for -liomp5
大概就是liomp5这个链接库找不到之类的,而且跟着教程走还发现自己根本没有libiomp5.dylib这个库,编译报错的问题也是这个引起的。
找到它应该在的路径后,发现其路径下有另一个库名字叫libomp,抱着试一试的心态把libomp.dylib复制一份然后重命名为libiomp5.dylib,就能正常编译运行openmp程序了……
在这里插入图片描述

2. 更改mac默认编译器后运行OpenMP和MPI程序

之前发现mac默认的gcc编译器背后不是gcc编译器,大概思路就是把gcc背后的编译器改成真正的gcc编译器,也不用什么clang和llvm了。
首先如果直接不指定版本安装gcc编译器(通过homebrew)

brew install gcc

如果通过homebrew安装的话,编译器的路径大概都在/usr/local/Cellar下,比如我默认安装的gcc10,路径为/usr/local/Cellar/gcc/10.2.0_4/bin/gcc-10。
我使用的更改默认编译器最粗暴的方法就是直接把/usr/local/bin/下的gcc和g++命令与下载的gcc10的路径/usr/local/Cellar/gcc/10.2.0_4/bin/gcc-10软连接(g++同理)

ln -s /usr/local/Cellar/gcc/10.2.0_4/bin/gcc-10 /usr/local/bin/gcc
ln -s /usr/local/Cellar/gcc/10.2.0_4/bin/g++-10 /usr/local/bin/g++

看下gcc -v确实被改了(如果没有的话,重启终端试一下,可能还没反应过来)
在这里插入图片描述
但是!我当时的mac系统如果用这个gcc-10编译的话会显示一个不太常见的错误
在这里插入图片描述
大概意思就是当前macOS版本太高了,需要低于这个版本才行。
总不能为了gcc降mac版本吧,那就降gcc版本,再下一个gcc-8

brew install gcc@8

找到gcc-8在的路径,我的路径是/usr/local/Cellar/gcc@8/8.4.0_3/bin/gcc-8,先试一下这个编译器能不能编译程序。

/usr/local/Cellar/gcc@8/8.4.0_3/bin/gcc-8 -o xx xx.c
./xx

如果能正常编译和运行,再改软连接。
这个时候改软连接可能会说已经连接过了巴拉巴拉的,那直接把/usr/local/bin里的gcc和g++删掉重新对gcc-8链接一下就行了。
最后只要gcc没问题,openmp和mpi就没啥问题了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值