之前试过在CentOS 6上编译GMP-ECM和MSIEVE,后来有一天发现本机的MacPorts带的GMP-ECM不是最新版,当前6.4.4的情况下,MacPorts里的才6.3. 顺道也想侥幸一下看看这个2012款的rmbp能不能上CUDA,于是开始折腾。 环境 MacBook Pro with Retina Display 2012 (GT 650 M) OS X 10.10.4 MacPorts 安装CUDA环境 CUDA Toolkit官方下载地址是:https://developer.nvidia.com/cuda-downloads 下载里目前最新版本是7.0.29,但是下载完成之后设置里还会提示有新版。 另外,Nvidia官方还给了个NVIDIA CUDA Getting Started Guide for Mac OS X. 我就简单地装了这个toolkit 没配环境变了。 第一次尝试 最早的尝试基于MacPorts自带的gmp和gmp-ecm编译CUDA版本的msieve,顺道还编译了个CPU版本的
|
# 安装 gmp 和 gmp-ecm $ port install gmp gmp-ecm # 编译 msieve,开gpu PATH=/usr/local/cuda/bin/:$PATH MACHINE_FLAGS="-I/opt/local/include -I/usr/local/cuda/include" LIBS="-L/opt/local/lib -L/usr/local/cuda/lib" make all ECM=1 CUDA=1 # 编译 msieve 无gpu版本 MACHINE_FLAGS="-I/opt/local/include" LIBS="-L/opt/local/lib" make all ECM=1 |
这俩拿 RSA-39 的跑,都正常。但是自己生成了个RSA-256的,就有个ECM里报出的assert,没法工作。于是尝试编译ecm。 中间试过好几种方案,最后记录最后的版本 最新版 GMP, GMP-ECM, MSIEVE 最新版 GMP-ECM 也自带GPU的计算了,于是我也就把这个加了进去。 首先,从项目源上拉下最新版本
|
$ svn co svn://scm.gforge.inria.fr/svnroot/ecm/trunk ecm-trunk $ svn co svn://svn.code.sf.net/p/msieve/code/trunk msieve-trunk $ hg clone https://gmplib.org/repo/gmp/ gmp-master |
编译 GMP,原本是拉的最新release,但是中间遇到了一些问题,asm的编译不过去,于是也用trunk了。
|
cd gmp-master sh .bootstrap ./configure \ --prefix=/Users/sskaje/Work/ecm \ --enable-fft \ --enable-cxx \ --enable-fat \ --enable-assembly make make check make install |
编译 ECM
|
cd ../ecm autoreconf -i PATH=/usr/local/cuda/bin:$PATH ./configure --prefix=/Users/sskaje/Work/ecm \ --with-gmp=/Users/sskaje/Work/ecm \ --disable-asm-redc \ --enable-aprcl \ --enable-sse2 \ --enable-openmp \ --enable-mulredc-svoboda \ --enable-gpu=sm_30 \ --with-cuda make |
第一次configure的时候报当前系统不支持cuda,发现了个bug,报了官方,然后继续了,又发现这个错误: … Continue reading “MacBook Pro 编译支持CUDA的MSIEVE”