docker matlab docker matlab runtime

admin2024-08-22  15

docker matlab docker matlab runtime,docker matlab docker matlab runtime_matconvnet,第1张

Package

装 R2018a,[4] 有下载链:https://pan.baidu.com/s/1W6jWkaXEMpMUEmIl8qmRwg#list/path=%2F,提取码:igx6
解压到 Linux-matlab2018a/

  • R2018a_glnxa64_dvd1.iso
  • R2018a_glnxa64_dvd2.iso
  • Matlab2018aLinux64Crack.tar.gz。解压到 crack/,里面有两个 .lic 文件、R2018a/readme.txt

MatConvNet 在 [5] 下载,本文用的是 1.0-beta25 版。解压到 matconvnet-1.0-beta25/。(为了在 commit 制成 docker 镜像时 matconvnet 能保存到容器内,后续需将此文件夹复制到容器/usr/local/ 下,见下文)

两个都下载到 /home/tom/downloads/

Docker

由图可见,对应 cuda 版本是 9.0,用 pytorch/pytorch:0.4.1-cuda9-cudnn7-devel,可以白嫖里面的 cuda 9。

  • 注意是 devel 版,而不是 runtime 版,因为后面装 matconvnet 需要用 cuda 目录。
docker pull pytorch/pytorch:0.4.1-cuda9-cudnn7-devel

启动时加 --privileged=true

NAME="Matlab-R2018a"
docker run --gpus all --name=$NAME -dit --ipc=host --privileged=true \
    -v /home/tom:/home/tom \
    -v /home/tom/dataset:/home/dataset \
    pytorch/pytorch:0.4.1-cuda9-cudnn7-devel /bin/bash \
    > ~/log/docker/$NAME.$(date +%Y-%m-%d-%H-%M).log 2>&1

此处将 home 目录 /home/tom 映射去 docker 内同样位置,包含了前述下载路径(后面要在 docker 里用这些文件安装)。

Matlab

主要参考 [6]。

unpack .iso

Linux-matlab2018a/,分别解压两个 .iso 文件到 R2018a_glnxa64_dvd1/R2018a_glnxa64_dvd2/。好像其中有些操作需要权限。

  • 有教程的做法是挂载 .iso 文件,然后在挂载目录操作的。但我挂载之后会报 /dev/loop0 is write-protected, mounting read-only,而后面又要改里面两个文件,所以考虑解压 .iso 文件,而不是挂载。
  • 但直接用 7z 解压,会莫名少几个文件,所以我解压的做法是:先挂载,再复制出来…
cd Linux-matlab2018a
# pwd # /home/tom/downloads/Linux-matlab2018a
mkdir R2018a_glnxa64_dvd1
mkdir R2018a_glnxa64_dvd2

mkdir /mnt/matlab
# 解压 dvd1
mount -t auto -o loop R2018a_glnxa64_dvd1.iso /mnt/matlab
cp -r /mnt/matlab/* R2018a_glnxa64_dvd1/
umount /mnt/matlab
# 解压 dvd2
mount -t auto -o loop R2018a_glnxa64_dvd2.iso /mnt/matlab
cp -r /mnt/matlab/* R2018a_glnxa64_dvd2/
umount /mnt/matlab
rmdir /mnt/matlab

dvd2 -> dvd1

将 dvd2 里的内容复制去 dvd1 里,这一步对应教程的「将 dvd1 切换为 dvd2」,但我装的时候这样会报找不到 xx 文件,所以提前复制。

cp -r R2018a_glnxa64_dvd2/* R2018a_glnxa64_dvd1/

configuration

R2018a_glnxa64_dvd1/ 下两个配置文件。找到对应行,照住改。(这一步,如果是用挂载而不是解压,发现 read-only 而没法改,就换成解压的方法)

  • installer_input.txt
destinationFolder=/usr/local/R2018a  # 安装目录

fileInstallationKey=09806-07443-53955-64350-21751-41297  # crack/readme.txt 有写

agreeToLicense=yes

outputFile=/tmp/mathworks_install.log

mode=silent
  • activate.ini
isSilent=true

activateCommand=activateOffline

licenseFile=/home/tom/downloads/Linux-matlab2018a/crack/license_standalone.lic

其中 licenseFile 一项的路径按实际修改。

installation

进入 docker,执行:

cd Linux-matlab2018a
./R2018a_glnxa64_dvd1/install -inputFile /home/tom/downloads/Linux-matlab2018a/R2018a_glnxa64_dvd1/installer_input.txt

其中 -inputFile 用绝对路径,我用相对路径报错了。

activation

激活,docker 内:

cd /usr/local/R2018a/bin
./activate_matlab.sh -propertiesFile /home/tom/downloads/Linux-matlab2018a/R2018a_glnxa64_dvd1/activate.ini

# 将 crack/R2018a 的文件拷去安装目录 /usr/local/R2018a 里
cd /home/tom/downloads/Linux-matlab2018a/crack
cp -r R2018a /usr/local

environment variable

添加环境变量,在 docker .bashrc 末尾追加:

export PATH=/usr/local/R2018a/bin:$PATH
alias mrun='matlab -nodesktop -nosplash -r'  # 用 `mrun` 运行 .m 文件

不过这个 docker 镜像本身没装 vim,可以在外面改好再拷进去。然后:

source .bashrc

testing

docker 内执行:matlab -nodisplay

  • 报错:libXt.so.6: cannot open shared object file: No such file or directory,见 [7, 8],ubuntu 执行 apt install x11-xserver-utils。要换 apt 源,见 [9]。

装完就可以了,在 matlab 环境下执行 gpuDevice 测试 gpu,会打印 gpu 信息。

MatConvNet

  • 在宿主机下改一下 vl_simplenn.m 先,见 [11]。
  • 下面 vl_compilenn 一行会报错:'/home/tom/Download/matconvnet-1.0-beta25/matlab/mex/vl_nnconv.mexa64' compiled with '-R2018a' and linked with '-R2017b'.。参考 [12],将 matconvnet-1.0-beta25/matlab/ 下的 vl_compilenn.m 换成评论里的内容先。

然后进入 docker,在 matlab 环境下执行:

% 进入 matconvnet 的 matlab 目录
% cd /home/tom/downloads/matconvnet-1.0-beta25/matlab
% 2021.4.21 更新:先将 `matconvnet-1.0-beta25` 复制去 `/usr/local/`,再:
cd /usr/local/matconvnet-1.0-beta25/matlab

mex -setup
mex -setup C++

vl_compilenn('enableGpu', true, 'cudaRoot', '/usr/local/cuda', 'cudaMethod', 'nvcc', 'enableCudnn', true, 'cudnnRoot', '/usr/local/cuda')
vl_setupnn
vl_testnn('gpu', true)  % 测试 gpu 是否可用,可以中途 Ctrl-C 停止
  • 2021.4.21 notes:由于这里 /home/tom/ 是挂载目录,在这里配置 matconvnet 的话,之后 commit 成镜像时 matconvmet 并会保存到生成的镜像内(但上面的 matlab 会,因为是装在 /usr/local/R2018a/,不是挂载路径,是容器内的路径)。为了保存 matconvnet,先将 matconvnet 复制(而不是软链接)去 /usr/local/matconvnet-1.0-beta25/,再进行操作。
  • 2021.5.1 notes:因 [13] 的环境「tf 1.4 + matlab」,考虑用 tensorflow/tensorflow:1.12.0-gpu-py3 做一个(cuda 版本对应),发现在 vl_compilenn 一步会报没有 cublas_v2.hcudnn.h,而所缺文件在 pytorch/pytorch:0.4.1-cuda9-cudnn7-devel 的这个镜像里是有的,直接从后者把相应文件复制去前者的就可以了。可以用命令 find /usr -name cublas_v2.h 找位置。

References

  1. jiangqy/DCMH-CVPR2017
  2. MatConvNet: CNNs for MATLAB
  3. Linux server中 Matlab R2018a安装
  4. Ubuntu 16.04安装MATLAB R2018a
  5. 【Ubuntu】Ubuntu 18.04 LTS 更换国内源——解决终端下载速度慢的问题
  6. MATCONVNET: compiled with ‘-R2018a’ and linked with ‘-R2017b’. #1200
  7. PKU-ICST-MIPL/DADN_TCSVT2019


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!