ใช้ GPU จากตู้เทียบท่า?


164

ฉันกำลังค้นหาวิธีใช้ GPU จากภายในคอนเทนเนอร์นักเทียบท่า

คอนเทนเนอร์จะรันโค้ดโดยพลการดังนั้นฉันไม่ต้องการใช้โหมดพิเศษ

เคล็ดลับใด ๆ

จากการวิจัยก่อนหน้านี้ฉันเข้าใจว่าrun -vและ / หรือ LXC cgroupเป็นวิธีที่จะไป แต่ฉันไม่แน่ใจว่าจะดึงมันออกมาได้อย่างไร


ดูstackoverflow.com/questions/17792161/ซึ่งคล้ายกับความต้องการของคุณ
นิโคลัส Goy

1
@NicolasGoy ลิงก์นั้นดี แต่ไม่มีประโยชน์เพราะฉันไม่สามารถใช้สิทธิพิเศษได้เนื่องจากเหตุผลด้านความปลอดภัย lxc-cgroups เป็นตัวชี้ที่ดี แต่ไม่เพียงพอ ฉันพบวิธีและฉันจะตอบตัวเองเมื่อทุกอย่างจะขัด
Regan

คำตอบ:


132

คำตอบของ Regan นั้นยอดเยี่ยม แต่มันค่อนข้างล้าสมัยเนื่องจากวิธีที่ถูกต้องในการทำเช่นนี้คือหลีกเลี่ยงบริบทการดำเนินการ lxc เนื่องจาก Docker ได้ลด LXCเป็นบริบทการดำเนินการเริ่มต้นเมื่อเทียบกับนักเทียบท่า 0.9

แทนที่จะเป็นการดีกว่าที่จะบอกนักเทียบท่าเกี่ยวกับอุปกรณ์ nvidia ผ่านทาง --device flag และใช้บริบทการประมวลผลดั้งเดิมแทน lxc

สิ่งแวดล้อม

คำแนะนำเหล่านี้ถูกทดสอบในสภาพแวดล้อมต่อไปนี้:

  • Ubuntu 14.04
  • CUDA 6.5
  • อินสแตนซ์ของ AWS GPU

ติดตั้งไดรเวอร์ nvidia และ cuda บนโฮสต์ของคุณ

ดูCUDA 6.5 บน AWS GPU Instance ที่ใช้ Ubuntu 14.04เพื่อรับการตั้งค่าเครื่องโฮสต์ของคุณ

ติดตั้ง Docker

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update && sudo apt-get install lxc-docker

ค้นหาอุปกรณ์ nvidia ของคุณ

ls -la /dev | grep nvidia

crw-rw-rw-  1 root root    195,   0 Oct 25 19:37 nvidia0 
crw-rw-rw-  1 root root    195, 255 Oct 25 19:37 nvidiactl
crw-rw-rw-  1 root root    251,   0 Oct 25 19:37 nvidia-uvm

เรียกใช้ Container Docker พร้อมไดรเวอร์ nvidia ที่ติดตั้งไว้ล่วงหน้า

ฉันสร้างรูปภาพนักเทียบท่าที่มีไดรเวอร์ cuda ติดตั้งไว้แล้ว dockerfileสามารถใช้ได้บน dockerhub ถ้าคุณต้องการที่จะรู้ว่าภาพนี้ถูกสร้างขึ้น

คุณจะต้องปรับแต่งคำสั่งนี้เพื่อให้ตรงกับอุปกรณ์ nvidia ของคุณ นี่คือสิ่งที่ทำงานสำหรับฉัน:

 $ sudo docker run -ti --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm tleyden5iwx/ubuntu-cuda /bin/bash

ตรวจสอบว่าติดตั้ง CUDA อย่างถูกต้อง

ควรเรียกใช้จากภายในคอนเทนเนอร์นักเทียบท่าที่คุณเพิ่งเปิดตัว

ติดตั้งตัวอย่าง CUDA:

$ cd /opt/nvidia_installers
$ ./cuda-samples-linux-6.5.14-18745345.run -noprompt -cudaprefix=/usr/local/cuda-6.5/

สร้างอุปกรณ์ตัวอย่างแบบสอบถาม:

$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ make
$ ./deviceQuery   

หากทุกอย่างทำงานได้คุณจะเห็นผลลัพธ์ต่อไปนี้:

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs =    1, Device0 = GRID K520
Result = PASS

3
ทำไมคุณถึงติดตั้ง lxc-docker ถ้าคุณไม่ต้องการ lxc ล่ะ?
MP0

4
ฉันมี CUDA 5.5 บนโฮสต์และ CUDA 6.5 ในคอนเทนเนอร์ที่สร้างจากรูปภาพของคุณ CUDA ทำงานบนโฮสต์และฉันส่งอุปกรณ์ไปยังคอนเทนเนอร์ คอนเทนเนอร์มองเห็น GPU ผ่านls -la /dev | grep nvidiaแต่ CUDA ไม่พบอุปกรณ์ที่สามารถใช้ CUDA ได้: ./deviceQuery ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) cudaGetDeviceCount returned 38 -> no CUDA-capable device is detected Result = FAIL เป็นเพราะความไม่สอดคล้องของ CUDA libs บนโฮสต์และในคอนเทนเนอร์หรือไม่
brunetto

1
ฉันไม่รู้คุณอาจต้องการถามฟอรัม nvidia สมมติว่าเวอร์ชันไม่ตรงกันเป็นปัญหาคุณสามารถใช้ไฟล์ Dockerfileนี้และแก้ไขเพื่อให้มีไดรเวอร์ CUDA 5.5 จากนั้นสร้างอิมเมจ dockerใหม่ขึ้นมาจากนั้นใช้มัน
tleyden

3
คุณช่วยอธิบายได้ไหมว่าทำไมอิมเมจต้องติดตั้งไดรเวอร์ nvidia? ฉันคิดว่าโฮสต์เท่านั้นที่ติดตั้งไดรเวอร์ nvidia (และใช้ - อุปกรณ์ ... ) เพียงพอหรือไม่
Helin Wang

2
ขณะนี้ไม่มีวิธีการทำเช่นนี้หากคุณมี Windows เป็นโฮสต์
Souradeep Nanda

46

การเขียนคำตอบที่อัปเดตเนื่องจากคำตอบที่มีอยู่แล้วส่วนใหญ่ล้าสมัยแล้ว

รุ่นก่อนหน้านี้ที่Docker 19.03ใช้ต้องมีnvidia-docker2และ--runtime=nvidiaตั้งค่าสถานะ

เนื่องจากDocker 19.03คุณต้องติดตั้งnvidia-container-toolkitแพ็กเกจแล้วใช้--gpus allแฟล็ก

ดังนั้นนี่คือพื้นฐาน

การติดตั้งแพ็คเกจ

ติดตั้งnvidia-container-toolkitแพคเกจตามเอกสารอย่างเป็นทางการที่ Github

สำหรับ OS ที่ใช้ Redhat ให้ใช้ชุดคำสั่งต่อไปนี้:

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

$ sudo yum install -y nvidia-container-toolkit
$ sudo systemctl restart docker

สำหรับระบบปฏิบัติการที่ใช้ Debian ให้รันชุดคำสั่งต่อไปนี้:

# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker

เล่นนักเทียบท่าพร้อมรองรับ GPU

docker run --name my_all_gpu_container --gpus all -t nvidia/cuda

โปรดทราบว่าการตั้งค่าสถานะ--gpus allใช้เพื่อกำหนด gpus ที่มีอยู่ทั้งหมดให้กับคอนเทนเนอร์ของนักเทียบท่า

วิธีกำหนด gpu เฉพาะให้กับคอนเทนเนอร์ docker (ในกรณีที่มี GPU หลายตัวในเครื่องของคุณ)

docker run --name my_first_gpu_container --gpus device=0 nvidia/cuda

หรือ

docker run --name my_first_gpu_container --gpus '"device=0"' nvidia/cuda

5
ตั้งแต่ปี 2019 นี่เป็นวิธีที่เหมาะสมในการใช้ GPU จากภายในคอนเทนเนอร์นักเทียบท่า
Timur Bakeyev

1
มีใครเคยลองใช้งานจากภายในงานแบทช์ใน AWS บ้างไหม?
medley56

1
ฉันเชื่อว่านี่เกี่ยวข้องมากที่สุด หวังว่าฉันจะพบมันเร็วกว่านี้ แต่ฉันต้องปรับคำแนะนำจากgithub.com/NVIDIA/nvidia-dockerเพื่อทำงานกับ Ubuntu 20.04
VictorLegros

40

ในที่สุดฉันก็สามารถจัดการได้โดยไม่ต้องใช้โหมด - โหมดพิเศษ

ฉันทำงานบนเซิร์ฟเวอร์อูบุนตู 14.04 และฉันใช้ cuda ล่าสุด (6.0.37 สำหรับ linux 13.04 64 บิต)


การจัดเตรียม

ติดตั้งไดรเวอร์ nvidia และ cuda บนโฮสต์ของคุณ (อาจเป็นเรื่องยุ่งยากเล็กน้อยดังนั้นฉันจะแนะนำให้คุณทำตามคำแนะนำนี้/ubuntu/451672/installing-and-testing-cuda-in-ubuntu-14-04 )

ความสนใจ:มันสำคัญมากที่คุณต้องเก็บไฟล์ที่คุณใช้สำหรับการติดตั้งโฮสต์ cuda


รับ Docker Daemon ให้ทำงานโดยใช้ lxc

เราจำเป็นต้องเรียกใช้ docker daemon โดยใช้ไดรเวอร์ lxc เพื่อให้สามารถแก้ไขการกำหนดค่าและให้สิทธิ์การเข้าถึงคอนเทนเนอร์กับอุปกรณ์

การใช้งานครั้งเดียว:

sudo service docker stop
sudo docker -d -e lxc

การกำหนดค่าถาวร แก้ไขไฟล์กำหนดค่านักเทียบท่าของคุณที่อยู่ใน / etc / default / docker เปลี่ยนบรรทัด DOCKER_OPTS โดยเพิ่ม '-e lxc' นี่คือบรรทัดของฉันหลังจากการแก้ไข

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -e lxc"

จากนั้นรีสตาร์ท daemon โดยใช้

sudo service docker restart

วิธีตรวจสอบว่า daemon ใช้ไดรเวอร์ lxc อย่างมีประสิทธิภาพหรือไม่

docker info

บรรทัด Execution Driver ควรมีลักษณะดังนี้:

Execution Driver: lxc-1.0.5

สร้างภาพของคุณด้วยไดรเวอร์ NVIDIA และ CUDA

นี่คือ Dockerfile พื้นฐานเพื่อสร้างภาพที่รองรับ CUDA

FROM ubuntu:14.04
MAINTAINER Regan <http://stackoverflow.com/questions/25185405/using-gpu-from-a-docker-container>

RUN apt-get update && apt-get install -y build-essential
RUN apt-get --purge remove -y nvidia*

ADD ./Downloads/nvidia_installers /tmp/nvidia                             > Get the install files you used to install CUDA and the NVIDIA drivers on your host
RUN /tmp/nvidia/NVIDIA-Linux-x86_64-331.62.run -s -N --no-kernel-module   > Install the driver.
RUN rm -rf /tmp/selfgz7                                                   > For some reason the driver installer left temp files when used during a docker build (i don't have any explanation why) and the CUDA installer will fail if there still there so we delete them.
RUN /tmp/nvidia/cuda-linux64-rel-6.0.37-18176142.run -noprompt            > CUDA driver installer.
RUN /tmp/nvidia/cuda-samples-linux-6.0.37-18176142.run -noprompt -cudaprefix=/usr/local/cuda-6.0   > CUDA samples comment if you don't want them.
RUN export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64         > Add CUDA library into your PATH
RUN touch /etc/ld.so.conf.d/cuda.conf                                     > Update the ld.so.conf.d directory
RUN rm -rf /temp/*  > Delete installer files.

เรียกใช้ภาพของคุณ

ก่อนอื่นคุณต้องระบุหมายเลขหลักที่เกี่ยวข้องกับอุปกรณ์ของคุณ วิธีที่ง่ายที่สุดคือทำตามคำสั่งต่อไปนี้:

ls -la /dev | grep nvidia

หากผลลัพธ์ว่างเปล่าให้ใช้การเรียกใช้หนึ่งในตัวอย่างบนโฮสต์ควรทำการหลอกลวง ผลลัพธ์ควรมีลักษณะเช่นนั้น ป้อนคำอธิบายรูปภาพที่นี่ คุณจะเห็นว่ามีชุดของตัวเลข 2 ตัวระหว่างกลุ่มและวันที่ หมายเลข 2 เหล่านี้เรียกว่าหมายเลขหลักและรอง (เขียนตามลำดับ) และออกแบบอุปกรณ์ เราจะใช้หมายเลขหลักเพื่อความสะดวก

ทำไมเราถึงเปิดใช้งานไดรเวอร์ lxc หากต้องการใช้ตัวเลือก lxc conf ที่อนุญาตให้เราอนุญาตให้คอนเทนเนอร์ของเราเข้าถึงอุปกรณ์เหล่านั้น ตัวเลือกคือ: (ฉันขอแนะนำให้ใช้ * สำหรับจำนวนรองทำให้ลดความยาวของคำสั่งเรียกใช้)

--lxc-conf = 'lxc.cgroup.devices.allow = c [หมายเลขหลัก]: [หมายเลขรองหรือ *] rwm'

ดังนั้นถ้าฉันต้องการที่จะเปิดตัวภาชนะ (สมมติว่าชื่อภาพของคุณคือ cuda)

docker run -ti --lxc-conf='lxc.cgroup.devices.allow = c 195:* rwm' --lxc-conf='lxc.cgroup.devices.allow = c 243:* rwm' cuda

คุณสามารถแชร์คอนเทนเนอร์ได้ไหม
ChillarAnand

1
นักเทียบท่ามี--deviceตัวเลือกเพื่ออนุญาตให้คอนเทนเนอร์เข้าถึงอุปกรณ์ของโฮสต์ อย่างไรก็ตามฉันพยายามที่จะใช้--device=/dev/nvidia0เพื่อให้นักเทียบท่าคอนเทนเนอร์ทำงาน cuda และล้มเหลว
shiquanwang

4
จากนั้นผมก็ประสบความสำเร็จกับการเปิดเผยทั้งหมด/dev/nvidiao, /dev/nvidia1, /dev/nvidiactlและกับ/dev/nvidia-uvm --deviceแม้ว่าจะไม่รู้ว่าทำไม
shiquanwang

ตัวเลือก - อุปกรณ์ไม่ได้ถูกนำไปใช้เมื่อฉันต้องหาโซลูชันนี้ คุณต้องการอย่างน้อย nvidia0 หรือ nvidia1 (กราฟิกการ์ด) และ nvidiactl (อุปกรณ์ nvidia ทั่วไป) และ nvidia-uvm (อุปกรณ์หน่วยความจำ United)
รีแกน

2
ขอบคุณสำหรับคำแนะนำของคุณใน/dev/nvidia*@Regan สำหรับ @ChillarAnand ฉันได้ทำcuda-
docker แล้ว

29

เราเพิ่งเปิดตัวพื้นที่เก็บข้อมูล GitHubซึ่งจะช่วยลดความยุ่งยากในการใช้ NVIDIA GPUs ภายในคอนเทนเนอร์ Docker


4
มี windows รองรับหรือไม่ ดูเหมือนจะไม่เป็นเช่นนั้น แต่บางทีฉันก็ขาดอะไรไป
Blaze

6
ไม่มีการสนับสนุน Windows การเรียกใช้คอนเทนเนอร์ CUDA ต้องใช้ไดรเวอร์ Nvidia สำหรับ Linux และการเข้าถึงอุปกรณ์ Linux ที่เป็นตัวแทนของ GPU เช่น / dev / nvidia0 อุปกรณ์และไดรเวอร์เหล่านี้ไม่สามารถใช้ได้เมื่อติดตั้ง Docker บน Windows และทำงานภายในเครื่องเสมือน VirtualBox
Paweł Bylica

ยังต้องการการประกาศอุปกรณ์ในคำสั่งเรียกใช้หรือไม่ ฉันสร้างคอนเทนเนอร์จาก nvidia / cuda และคอนเทนเนอร์ทำงานได้ดี แต่แอพ (Wowza) ไม่รู้จัก GPU ในขณะที่มันทำงานได้ดีเมื่อทำงานบนโฮสต์โดยตรง (โฮสต์นี้ดังนั้นฉันรู้ว่าไดรเวอร์นั้นดี) . ฉันวิ่ง 361.28 โฮสต์คือ EC2 โดยใช้ NVidia AMI บน g2.8x large
rainabba

ไม่มีทุกสิ่งที่ได้รับการดูแลโดย nvidia-docker คุณควรจะสามารถเรียกใช้ nvidia-smi ภายในคอนเทนเนอร์และดูอุปกรณ์ของคุณ
3XX0

22

การปรับปรุงล่าสุดโดย NVIDIA ได้สร้างวิธีที่มีประสิทธิภาพมากขึ้นในการทำเช่นนี้

โดยพื้นฐานแล้วพวกเขาได้ค้นพบวิธีที่จะหลีกเลี่ยงความต้องการในการติดตั้งไดรเวอร์ CUDA / GPU ภายในคอนเทนเนอร์และให้ตรงกับโมดูลโฮสต์เคอร์เนล

แต่ไดรเวอร์อยู่ในโฮสต์และคอนเทนเนอร์ไม่ต้องการ ตอนนี้ต้องใช้นักเทียบท่าที่แก้ไขแล้ว

มันเยี่ยมมากเพราะตอนนี้ตู้คอนเทนเนอร์พกพาสะดวกกว่าเยอะ

ป้อนคำอธิบายรูปภาพที่นี่

การทดสอบอย่างรวดเร็วบน Ubuntu:

# Install nvidia-docker and nvidia-docker-plugin
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

# Test nvidia-smi
nvidia-docker run --rm nvidia/cuda nvidia-smi

ดูรายละเอียดเพิ่มเติมได้ที่: Docker Container ที่เปิดใช้งาน GPU และ: https://github.com/NVIDIA/nvidia-docker


วิธีนี้ใช้งานได้ดีเมื่อคุณทำตามขั้นตอนทั้งหมดแล้ว Nvidia ไม่ได้ให้บริการทั้งหมดในที่เดียว แต่ตัวอย่างนี้ให้ทุกสิ่งที่คุณต้องการเพื่อให้สามารถใช้งานได้กับกรณีการใช้งานทั่วไป
KobeJohn

@KobeJohn - ฉันเพิ่งทำตามคำแนะนำในการติดตั้งวิธีใช้บรรทัดคำสั่งและตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ของฉันสืบทอดจาก cuda มันใช้งานได้สำหรับฉัน
Matt

1
ที่จริงแล้วคุณสามารถกำหนดสถานการณ์ในชีวิตจริงที่ใช้งาน nvidia-docker ได้หรือไม่?
Suncatcher

@Suncatcher - ฉันใช้มันในกลุ่มที่ต้องใช้ GPU ในการแสดงผล 3 มิติ การเชื่อมต่อแอพทำให้การปรับใช้และบำรุงรักษาง่ายขึ้น
Matt

17

อัปเดตสำหรับ cuda-8.0 บน Ubuntu 16.04

Dockerfile

FROM ubuntu:16.04
MAINTAINER Jonathan Kosgei <jonathan@saharacluster.com>

# A docker container with the Nvidia kernel module and CUDA drivers installed

ENV CUDA_RUN https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run

RUN apt-get update && apt-get install -q -y \
  wget \
  module-init-tools \
  build-essential 

RUN cd /opt && \
  wget $CUDA_RUN && \
  chmod +x cuda_8.0.44_linux-run && \
  mkdir nvidia_installers && \
  ./cuda_8.0.44_linux-run -extract=`pwd`/nvidia_installers && \
  cd nvidia_installers && \
  ./NVIDIA-Linux-x86_64-367.48.run -s -N --no-kernel-module

RUN cd /opt/nvidia_installers && \
  ./cuda-linux64-rel-8.0.44-21122537.run -noprompt

# Ensure the CUDA libs and binaries are in the correct environment variables
ENV LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
ENV PATH=$PATH:/usr/local/cuda-8.0/bin

RUN cd /opt/nvidia_installers &&\
    ./cuda-samples-linux-8.0.44-21122537.run -noprompt -cudaprefix=/usr/local/cuda-8.0 &&\
    cd /usr/local/cuda/samples/1_Utilities/deviceQuery &&\ 
    make

WORKDIR /usr/local/cuda/samples/1_Utilities/deviceQuery
  1. เรียกใช้ภาชนะของคุณ

sudo docker run -ti --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm <built-image> ./deviceQuery

คุณควรเห็นผลลัพธ์คล้ายกับ:

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GRID K520 Result = PASS


3
ฉันได้รับผลลัพธ์ต่อไปนี้ cudaGetDeviceCount ส่งคืน 38 -> ไม่พบอุปกรณ์ที่สามารถใช้ CUDA ได้ผลลัพธ์ = FAIL
Soichi Hayashi

ตอบกลับล่าช้า แต่หมายความว่าคุณอาจไม่มี GPU ในเครื่องนั้น
Jonathan

รุ่น Cuda-9 จะเหมือนกันไหม
huseyin tugrul buyukisik

@huseyintugrulbuyukisik ดูคำตอบนี้ได้ที่ askubuntu askubuntu.com/questions/967332/…ฉันว่าคุณสามารถใช้คำตอบนี้เป็นแนวทาง แต่ฉันไม่ได้ทำงานกับ cuda 9 เพื่อยืนยันว่าขั้นตอนเดียวกันจะนำไปใช้
Jonathan

อย่าทำแบบนี้ นี่คือวิธีเก่า ใช้วิธีการใหม่ ดูลิงก์ไปยังคำตอบของฉัน วิธีนี้เต็มไปด้วยปัญหา
แมตต์

3

ในการใช้ GPU จากตัวเทียบท่าคอนเทนเนอร์แทนที่จะใช้ Native Docker ให้ใช้ Nvidia-docker ในการติดตั้ง Nvidia docker ให้ใช้คำสั่งต่อไปนี้

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey |  sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-
docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker
sudo pkill -SIGHUP dockerd # Restart Docker Engine
sudo nvidia-docker run --rm nvidia/cuda nvidia-smi # finally run nvidia-smi in the same container

1

ใช้ x11dockerโดย mviereck:

https://github.com/mviereck/x11docker#hardware-accelerationกล่าว

การเร่งด้วยฮาร์ดแวร์

การเร่งด้วยฮาร์ดแวร์สำหรับ OpenGL สามารถทำได้ด้วยตัวเลือก -g, --gpu

สิ่งนี้จะได้ผลนอกกรอบในกรณีส่วนใหญ่ที่มีไดรเวอร์โอเพ่นซอร์สในโฮสต์ มิฉะนั้นให้ดูที่วิกิ: การพึ่งพาคุณสมบัติ แหล่งไดรเวอร์ NVIDIA ที่ปิดต้องมีการตั้งค่าและสนับสนุนตัวเลือกเซิร์ฟเวอร์ x11docker X ที่น้อยกว่า

สคริปต์นี้สะดวกมากเพราะสามารถจัดการการกำหนดค่าและการตั้งค่าทั้งหมดได้ การเรียกใช้อิมเมจเทียบท่าบน X ด้วย gpu นั้นง่ายเหมือน

x11docker --gpu imagename
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.