一、Tesla 基础环境部署
1、安装GPU Tesla Driver 在编译Linux kernel module所需要的安装包,包括gcc、kernel devel、kernel headers
# uname -r
3.10.0-514.26.2.el7.x86_64
# yum install -y gcc kernel-devel-($uname -r) kernel-headers
# yum install -y gcc kernel-devel-3.10.0-514.26.2.el7.x86_64 kernel-headers
2、选择正确的驱动并安装
1)开链接 http://www.nvidia.com/Download/Find.aspx
2)根据连接选择合适的驱动
# wget http://us.download.nvidia.com/tesla/440.64.00/NVIDIA-Linux-x86_64-440.64.00.run
3)对安装包加执行权限
# chmod +x NVIDIA-Linux-x86_64-440.64.00.run
4)安装驱动程序
# sudo /bin/bash ./NVIDIA-Linux-x86_64-440.64.00.run
安装过程中出现的warning
WARNING: nvidia-installer was forced to guess the X library path
'/usr/lib64' and X module path '/usr/lib64/xorg/modules'; these
paths were not queryable from the system. If X fails to find the
NVIDIA X driver module, please install the `pkg-config` utility and
the X.Org SDK/development package for your distribution and
reinstall the driver.
3、安装cuda
首先进入官网找到合适的cuda版本。
# rpm -i cuda-repo-rhel7-7.5-18.x86_64.rpm (有个warning 应该不影响)
# yum clean all
# yum install -y cuda
4、验证安装正确性
1)确认设备存在(lspci 可以通过安装yum install -y pciutils-3.2.1-4.el7.x86_64 – yum provide lspci)
# lspci | grep -i nvidia
00:06.0 3D controller: NVIDIA Corporation Device 1db5 (rev a1)
# nvidia-smi
5、安装失败可能存在的原因
Linux 系统驱动安装失败表现为 nvidia-smi 无法工作,一般有下面几个常见原因:
① 系统缺乏编译 kernel module 所需要的包,如 gcc,kernel-devel-xxx 等,导致无法编译,最终安装失败。
② 系统里面存在多个版本的 kernel,由于 DKMS 的不正确配置,导致驱动编译为非当前版本 kernel 的 kernel moudule,导致 kernel module 安装失败。
③ 安装驱动后,升级了 kernel 版本导致原来的安装失效。
④ CUDA和Tesla driver是两个不同的模块,在安装过程中,可能会遗漏CUDA的安装导致后续PG-Strom的编译失败。
⑤ 在安装CUDA的过程中,如果出现部分包没有下载的情况,可以用以下的命令:
# yum --enablerepo=cuda clean metadata
二、PG-Strom 基础环境部署
注:EPEL Repository是选安装,其支持GPU driver的安装和NVMe-Strom 组件的kernel编译,暂时用不着。
1)安装PostgreSQL – PostgreSQL 11
① 安装RPM repository
# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
② 安装客户端
# yum install postgresql11
③ 安装服务端
# yum install postgresql11-server
④ 启动服务
# /usr/pgsql-11/bin/postgresql-11-setup initdb
# systemctl enable postgresql-11
# systemctl start postgresql-11
2)数据目录与启用服务验证
自动化创建的话,其数据目录为:/var/lib/pgsql/11/data
其编译目录为:/usr/pgsql-11/bin
如果你用root进行了自动部署,其会创建一个postgres的用户:
# cat /etc/passwd| grep -i postgres
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
修改postgres用户的密码
# passwd postgres
3)构建PG-Strom
① 获取源代码
# git clone https://github.com/heterodb/pg-strom.git
② 构建PG-Strom
# cd pg-strom
# make PG_CONFIG=/usr/pgsql-11/bin/pg_config
(1)报错:
grep: /include/cuda.h: No such file or directory
/bin/sh: line 0: test: -ge: unary operator expected
/bin/sh: line 0: test: -ge: unary operator expected
Makefile:256: /usr/pgsql-11/lib/pgxs/src/makefiles/pgxs.mk: No such file or directory
make: *** No rule to make target `/usr/pgsql-11/lib/pgxs/src/makefiles/pgxs.mk'. Stop.
解决方法:
# yum install -y postgresql11-devel
-- 在开发Postgres的自有插件的过程中,需要添加postgresql11-devel
2)报错
/bin/sh: /opt/rh/llvm-toolset-7/root/usr/bin/clang: No such file or directory
解决方法:
# vim /usr/pgsql-11/lib/pgxs/src/makefiles/pgxs.mk
注释掉所有5处llvm判断
)
# make install PG_CONFIG=/usr/pgsql-11/bin/pg_config
③ 设置PostgreSQL的配置
# vim /var/lib/pgsql/11/data/postgresql.conf
修正以下参数:
shared_preload_libraries = ‘pg_strom.so’
max_worker_process = 16
shared_buffers = 1GB
work_mem=512MB
④ 重启PostgreSQL
# systemctl stop postgresql-11
# systemctl status postgresql-11
# systemctl start postgresql-11
或者
# cd /usr/pgsql-11/bin/
# ./pg_ctl -D /var/lib/pgsql/11/data/ -l /var/lib/pgsql/11/data/logfile start