Ubuntu 16.04 python3.5安装llvm 3.9.1、llvmlite 0.16.0、numba 0.30.0
来源:互联网 发布:中国癌症发病率 数据 编辑:程序博客网 时间:2024/06/05 01:07
由于项目需要使用到python进行大规模的计算,所以使用numba进行加速。numba需要先安装llvmlite所以本篇博客记录安装llvm、llvmlite和numba的部分安装过程。过程主要参考http://www.cnblogs.com/goingmyway/p/4493204.html。但是由于环境和版本的不同,所以遇到了很多问题,予以记录
LLVM
需要下载的文件如下,下载地址http://llvm.org/releases/download.html#3.9.1
LLVM source code
Clang source code
Clang Tools Extra source code
Compiler RT source code
LibC++ source code
然后分别解压,重命名,移动等按如下操作进行:
mv cfe-3.9.1.src clangmv clang/ llvm-3.9.1.src/tools/mv clang-tools-extra-3.9.1.src extramv extra/ llvm-3.9.1.src/tools/clang/mv compiler-rt-3.9.1.src compiler-rtmv compiler-rt llvm-3.9.1.src/projects/
然后在llvm-3.9.1.src
的同级目录创建文件夹build-3.9.1
,并进入
此时按照http://www.cnblogs.com/goingmyway/p/4493204.html博文的方法无法继续进行,提示需要使用cmake system,所以执行命令
cmake ../llvm-3.9.1.src
等待命令执行完毕
然后执行命令
make -j4 #编译速度十分缓慢,耐心等待即可
然后执行命令
sudo make install
该命令执行完后,完成llvm3.9.1的安装,执行如下命令进行检测:
dcooo@dcooo-Aspire-E5-572G:~$ clang++ -vclang version 3.9.1 (tags/RELEASE_391/final)Target: x86_64-unknown-linux-gnuThread model: posixInstalledDir: /usr/local/binFound candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0Candidate multilib: .;@m64Selected multilib: .;@m64Found CUDA installation: /usr/local/cuda, version unknown
LLVMLITE
该部分的安装过程与之前提到的博文方法不同,主要是因为版本与环境的原因,安装过程中也有一些问题没有解决。
设置环境变量LLVM_CONFIG
,值为安装的LLVM中llvm-config目录,即运行whereis llvm-config
的结果
首先根据numba的git主页https://github.com/numba/numba/blob/master/requirements.txt的环境要求,llvmlite >= 0.16,在llvmlite官网上只更新到0.15,所以采用从llvmlite的git下载源码安装的方法,如下:
从github下载llvmlite源码
git clone https://github.com/numba/llvmlite
然后进入到llvmlite目录
cd ~/llvmlite
由于我们在编译llvm时使用clang,所以直接运行命令python setup.py build
会报错,错误类型参看https://github.com/numba/llvmlite/issues/54,解决方法也在下面给出,执行命令:
CXX_FLTO_FLAGS= LD_FLTO_FLAGS= python3.5 setup.py build
如果没有在前面设置LLVM_CONFIG的环境变量的值,可能会出错提示找不到 executable llvm-config
,指定即可
然后运行测试程序:
python runtests.py
此时出现failunexpected dependenty 'libtinfo' in {...}
我的解决方法是直接修改了源码,将libtinfo添加到allowed dependency中,如下:
vim ~/llvmlite/llvmlite/tests/test_binding.py#vim命令行模式输入:/allowed allowed = set(['librt', 'libdl', 'libpthread', 'libz', 'libm', 'libgcc_s', 'libc', 'ld-linux']) for dep in deps: if not dep.startswith('ld-linux-') and dep not in allowed: self.fail("unexpected dependency %r in %r" % (dep, deps))#将libtinfo添加到allowed集合中,修改后 allowed = set(['librt', 'libdl', 'libpthread', 'libz', 'libm', 'libgcc_s', 'libc', 'ld-linux', 'libtinfo']) for dep in deps: if not dep.startswith('ld-linux-') and dep not in allowed: self.fail("unexpected dependency %r in %r" % (dep, deps))
然后重新运行python runtest.py
,提示OK
执行安装命令
sudo python setup.py install
完成llvmlite安装
NUMBA
具体安装方法,根据numba的git主页https://github.com/numba/numba,首先从git下载numba,命令如下:
git clone https://github.com/numba/numba.git
进入到numba目录
cd ~/numba
执行sudo pip3 install -r requirement.txt
将所需要的其他依赖安装好
此时可能提示没有找到满足的llvmlite>=0.16,这是pip3在软件库中没有找到016版本的llvmlite,所以我们才需要从github源码下载最新版本。我们在之前已经安装过llvmlite0.16,可以到/usr/local/lib/python3.5/dist-packages下看到llvmlite和llvmlite0.16…等文件。
执行命令:
python setup.py build _ext --inplace
和
python setup.py install
完成numba的安装,简单测试:
from numba import jit@jitdef sum(a, b): return a+bif __name__ == '__main__': print(sum(a+b))
若提示‘TargetData' object has no attribute 'add_pass'
根据llvm文档是由于llvm3.9.x已经移除了属性add_pass,所以猜测是llvmlite或者numba版本安装错误,请仔细核对
由于个人机器环境、配置不同等原因,有些命令需要使用sudo,请注意尝试,此次安装花费了一整天的时间,每一个部分安装过多次才最终能够使用,配环境,装软件真是一件费事费力费心打事情。
以上。
- Ubuntu 16.04 python3.5安装llvm 3.9.1、llvmlite 0.16.0、numba 0.30.0
- 安装numba
- 通过 LLVM 加速 Python numba
- ubuntu 16.04安装python3.5
- ubuntu安装llvm-3.8
- Ubuntu编译安装LLVM
- ubuntu安装python3.5
- Ubuntu 安装 python3.5
- ubuntu安装python3.5
- ubuntu安装python3.5
- ubuntu安装Python3.5
- Ubuntu安装Python3.5
- ubuntu安装python3.5
- ubuntu安装python3.5
- ubuntu16.04安装numba
- Ubuntu编译安装llvm-clang
- ubuntu安装LLVM和clang
- Ubuntu编译安装llvm+clang
- JSONP跨域访问实现登录验证
- java反射的理解与应用(某大神博客中看到的博文,写的真的太好了,果断转载作为笔记)
- matlab matconvnet的安装配置
- PAT 1015 德才论
- hdoj1106
- Ubuntu 16.04 python3.5安装llvm 3.9.1、llvmlite 0.16.0、numba 0.30.0
- 清除Eclipse中Workspace记录
- 关系型数据库和非关系型数据库区别!
- myeclipse10 server窗口异常问题
- 在做自动化测试之前你需要知道的
- hdoj1108
- 林家翘先生提醒青年学者:千万不要Garbage in,garbage out
- CSS clip属性理解
- 本地服务方式搭建etcd集群