zoukankan      html  css  js  c++  java
  • 配置gem5-gpu docker版

    1 安装docker:wget -qO- https://get.docker.com/ | sh,启动服务:sudo service docker start

    2 把非root用户添加到docker组:sudo gpasswd -a UserName docker

    3 拉取镜像:docker pull powerjg/gem5-cuda-build,DockerFile为:

    FROM ubuntu:14.04
    
    MAINTAINER Jason Lowe-Power <jason@lowepower.com>
    
    # Install all of gem5's dependencies
    RUN apt-get update -y && apt-get install -y 
            build-essential 
            python-dev 
            scons 
            swig 
            zlib1g-dev 
            m4 
            libprotobuf-dev 
            python-protobuf 
            protobuf-compiler 
            libgoogle-perftools-dev
    RUN apt-get install --no-install-recommends -y mercurial
    
    # Install dependencies for gem5-gpu (CUDA benchmarks)
    RUN apt-get install -y 
                gcc-4.6 
                g++-4.6 
                python 
                wget
    
    RUN wget http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/cudatoolkit_3.2.16_linux_64_ubuntu10.04.run
    RUN wget http://developer.download.nvidia.com/compute/cuda/3_2_prod/sdk/gpucomputingsdk_3.2.16_linux.run
    
    # Note: May need to make sure return is pressed
    RUN bash cudatoolkit_3.2.16_linux_64_ubuntu10.04.run
    # Note: must input /usr/local/cuda, then return
    RUN bash gpucomputingsdk_3.2.16_linux.run
    RUN mv /root/NVIDIA_GPU_Computing_SDK/C /usr/local/cuda
    
    RUN echo " 
        export CUDAHOME=/usr/local/cuda; 
        export PATH=$PATH:/usr/local/cuda/bin; 
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/lib; 
        export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/C/lib; 
        " >> /root/.bashrc
    #RUN source /root/.bashrc
    
    WORKDIR /usr/local/cuda/C/common
    RUN make 2> /dev/null
    
    # Also needed, but not at this stage in the build
    # WORKDIR /gem5-gpu/benchmarks/common
    # RUN make

    镜像中只有一个root用户,主目录为/root,无密码

    4 查看镜像:docker images

    5 运行“镜像”:docker run -it powerjg/gem5-cuda-build:latest /bin/bash,-t启动终端,-i交互式,/bin/bash是启动后运行的程序。

    6 从docker文件可以看到镜像中缺少

     sudo apt-get install libxext-dev libxi-dev x11proto-xext-dev libice-dev libsm-dev libxt-dev libxmu-headers libxmu-dev freeglut3-dev libcr-dev libX11-dev libglu1-mesa,

     sudo apt-get install -y gcc-4.6 g++-4.6 python wget gcc-4.4 g++-4.4 gcc-4.8 g++-4.8,先apt-get update再安装。

     配置好gcc、g++,hg。下载gem5-gpu、编译。cuda编译出现问题,把host上编译好的复制到container中解决的。


    7 先介绍一点docker命令,查看运行(包括停止的)的容器:docker ps -a

    8 把所做的更改保存到镜像:docker commit -m="Comments gem5 env is ok" -a="Author" 8d688027df7b gem5:test,

     docker images可以看到新增了镜像,与下面的save区别开来。

    9 容器与主机间文件传输

     主机到容器:docker cp /home/huan/ 8d688027df7b:/home/

     容器到主机:docker cp 8d688027df7b:/home/ /home/huan/

    10 容器中输入exit退出,停止容器:docker stop ContainerID(杀进程,同kill?),docker pause ContainerID(暂停器中运行的进程),

     docker rm ContainerID(删除容器,对镜像的更改丢失)

     连接到正在运行的容器:docker attach --sig-proxy=false ID,查看容器中运行的进程:docker top ID

    11 删除镜像:docker rmi IMAGE_NAME or ID;

     保存镜像:docker save {-o FileName.tar gem5:test, gem5:test > FileName.tar};tar文件中包含了各层(layer)和元数据(metadata),所以即使删除容器中的文件,tar依然很大。

     加载镜像:docker load FileName.tar;(有Name和Tag)。

     导出容器:docker export {gem5:test > latest.tar, --output="latest.tar" gem5:test},只是保存镜像的文件系统,仅一层,不包含元数据。

     导入容器:docker import FileName;(无tag)可以是URL或本地文件

    12 -p端口映射(默认TCP),--name命名,-d后台运行

      docker run -it -p hostPort:containerPort --name gem5 -d gem5:test /bn/bash,(小写的p,v)

    13 用attach连接容器,多个attach终端完全相同。docker exec -it <container> bash|sh 是执行 exec 最常用的方式,启动多个伪TTY。  

     attach与exec的用法区别:a)attach 直接进入容器 启动命令 的终端,不会启动新的进程。b)exec 则是在容器中打开新的终端,并且可以启动新的进程。

     docker run -ti -p 49001:5900 -p 49002:22 --name gem5 -e HOME=/root gem5:test /bin/bash

     docker exec -it gem5 bash , docker start gem5

     暂时可以忽略空间管理,备份,迁移等更高级的用法。


    13 容器安装VNC(方法来自StackOverflow,尝试了很久,没成功

     apt-get install -y x11vnc xvfb firefox openssh-server,mkdir ~/.vncx11vnc -storepasswd chh912 ~/.vnc/passwd

     a)echo 'firefox' >> /.bashrc

      docker run -p 49004:5900 -p 49003:22 -e HOME=/root gem5:testa  x11vnc -forever -usepw -create,将容器22端口绑定到主机49003端口,用于ssh连接。

     b) echo 'DISPLAY=:0' >> ~/.bashrc, 

      add this command to startup wizard or entrypoint script:

      source ~/perl5/perlbrew/etc/bashrc rm -f /tmp/.X10-lock Xvfb :0 -screen 0 1600x1200x24 & firefox -height 1200 -width 1600 & x11vnc -usepw -forever -shared &

      run:

      docker run -p 49001:5900 -p 49002:22 -e HOME=/root gem5:testb Xvfb :0 -screen 0 1600x1200x24 & x11vnc -usepw -forever -shared &

    14 <不行,没意义,异想天开.jpg>安装GNOME,sudo apt-get remove gnome-shell,sudo apt-get remove ubuntu-gnome-desktop

    15 用ssh,这个方法也麻烦,需要搞定root密码等问题,新建用户失败,give up! 老老实实用docker cp和Vim。

  • 相关阅读:
    多线程(一)初步使用
    数据迁移:MSSQL脚本文件过大,客户端没有足够的内存继续执行程序
    统计数据,数据库就只有8,9,10的,而前端需要返回连续的记录
    Windows10禁用update
    C#模拟HTTP POST 请求
    C#中Equals和= =(等于号)的比较(转)
    .net framework4与其client profile版本的区别
    centos7 安装mysql
    JAVA中使用ASN.1
    使用gradle建立java application
  • 原文地址:https://www.cnblogs.com/chenhuanBlogs/p/8728318.html
Copyright © 2011-2022 走看看