Làm cách nào tôi có thể khiến nVidia CUDA hoặc OpenCL hoạt động trên máy tính xách tay có thẻ rời nVidia / Đồ họa tích hợp Intel?


28

Bối cảnh: Tôi là một nghệ sĩ 3D (như một sở thích) và gần đây đã bắt đầu sử dụng Ubuntu 12.04 LTS làm khởi động kép với Windows 7. Nó chạy trên máy tính xách tay Toshiba 64 bit khá mới của tôi với GPU nVidia GeForce GT 540M ( card đồ họa). Tuy nhiên, nó cũng có Đồ họa tích hợp Intel (mà tôi nghi ngờ Ubuntu đang sử dụng).

Vì vậy, khi tôi kết xuất các cảnh 3D của mình thành hình ảnh trên Windows, tôi có thể chọn giữa sử dụng CPU hoặc GPU nVidia của mình (nhanh hơn). Từ ứng dụng 3D, tôi có thể đặt GPU để sử dụng CUDA hoặc OpenCL. Trong Ubuntu, không có tùy chọn GPU.

Sau khi thực hiện (quá nhiều?) Nghiên cứu về các vấn đề với Linux và công nghệ nVidia Optimus, tôi đã giác ngộ hơn một chút, nhưng bối rối hơn nhiều.

Tôi không quan tâm một chút về công nghệ Optimus, vì thời lượng pin không phải là vấn đề đối với tôi.

Đây là câu hỏi của tôi: Tôi có thể làm gì để có thể sử dụng các chương trình sử dụng CUDA (như Blender) trên GPU nVidia của tôi trong Ubuntu? Tôi có cần trình điều khiển nVidia không? (Tôi đã nghe nói họ không chơi tốt với các thiết lập Optimus trên Linux.) Có ít nhất một cách để sử dụng OpenCL trên GPU của tôi trong Ubuntu không?

Câu trả lời:


27

Tôi vừa mới thực hiện một số thử nghiệm và có thể xác nhận tuyên bố của Eric Appleman rằng Bumblebee không cần thiết cho CUDA. (thông tin thêm về Bumblebee : NVIDIA GeForce có Công nghệ Optimus được Ubuntu hỗ trợ không? )

Tuy nhiên, khi bạn cần để hiển thị ví dụ đồ họa sử dụng OpenGL, bạn làm cần một cái gì đó giống như Bumblebee cho các hệ thống Optimus, nếu không bạn hoặc là không nhìn thấy bất cứ điều gì trên màn hình của bạn hoặc nhận được lỗi:

ERROR: Support for necessary OpenGL extensions missing.

Khi chạy chương trình CUDA, bạn cần cài đặt bộ công cụ CUDA và trình điều khiển nvidia. Nếu bạn có ý định biên dịch chương trình, bạn cũng cần SDK. Các trình cài đặt có thể được tìm thấy trên http://developer.nvidia.com/cuda-doads , vui lòng đọc hướng dẫn bên dưới trước khi làm hỏng máy tính xách tay Optimus của bạn.

Cài đặt CUDA

Người lái xe

Tôi khuyên bạn nên cài đặt trình điều khiển nvidia từ trình quản lý gói của Ubuntu. Nếu bạn cài đặt Bumblebee, bạn không cần phải lo lắng về trình điều khiển. Nếu không, sau khi cài đặt, hãy vô hiệu hóa các thư viện nvidia như được mô tả trên https://askubfox.com/a/107746/6969 . Nếu bạn không làm như vậy, bạn sẽ mất khả năng tăng tốc 3D và có thể bị kẹt ở độ phân giải thấp.

Bộ công cụ

Về cơ bản, bạn phải tải xuống trình cài đặt, làm cho nó thực thi và chạy nó. - Tải về trình cài đặt. Theo văn bản này, 4.2.9 là trình điều khiển gần đây nhất. Là hệ điều hành 64 bit, tôi sử dụng gói Ubuntu 64.04 11 bit (mặc dù tôi đang chạy 12.04) - Làm cho nó có thể thực thi được và cho phép cài đặt để /usr/local/cuda:

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Khi thông báo cài đặt xảy ra sẽ hỏi bạn cài đặt CUDA ở đâu, chỉ cần nhấn Enter để chấp nhận mặc định /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Sau khi cài đặt, nó sẽ in một số tin nhắn đề nghị đưa thư mục thư viện cuda vào đường dẫn tìm kiếm thư viện của bạn:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Bạn có thể bỏ qua bước này nếu muốn, nhưng sau đó bạn sẽ thiết lập lại LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHkhi chạy chương trình.

SDK

Nếu bạn muốn có thể biên dịch các ứng dụng CUDA, bạn có thể cài đặt SDK theo cách tương tự như được mô tả ở trên. Tải về, làm cho nó thực thi và chạy nó (không phải là root, ví dụ như không có sudo!). Khi biên dịch các phần của nó, tôi phải thực hiện một số thay đổi NVIDIA_GPU_Computing_SDK/C/common/common.mk:

  • sau khoảng 189 OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu, thêm:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • sau khoảng 271, trao đổi ${RENDERCHECKGLLIB}với ${OPENGLLIB}nó trông giống như:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • một vài (5) dòng nữa, làm tương tự, nhưng loại bỏ -lcudaquá.
  • một vài (7) dòng nữa, làm tương tự như bạn đã làm trong dòng 271.

Sử dụng CUDA

CUDA không cần máy chủ X điều khiển nvidia để hoạt động. Trong trường hợp đó, bạn có thể chạy chương trình thử nghiệm ngẫu nhiên của mình như:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Nếu bạn chưa thêm CUDA vào đường dẫn thư viện của mình, bạn sẽ cần:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensive

(bạn có thể tách các đường dẫn 32 bit khỏi nó nếu chương trình của bạn là 64 bit).

Nếu chương trình CUDA có thứ gì đó để hiển thị bằng OpenGL, bạn phải sử dụng optirun:

 optirun blender

Hoặc, nếu bạn chưa thêm CUDA vào đường dẫn mặc định của mình:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH máy xay sinh tố optirun


Cảm ơn, tôi sẽ trao tiền thưởng cho bạn (nhưng tôi sẽ chấp nhận câu trả lời trên Wiki cộng đồng của tôi).
Peter Cassetta

Ngoài ra, 100 đại diện và một upvote không thể hiện chính xác mức độ tôi đánh giá cao công việc của bạn trong Dự án Bumblebee. Bạn và đồng nghiệp của bạn đã biến nó thành một phần mềm tuyệt vời. Cảm ơn. :)
Peter Cassetta

2
Chào mừng bạn, bây giờ tôi hy vọng rằng thời gian sẽ trao cho chúng tôi một giải pháp cuối cùng dưới dạng PRIME với một ngăn xếp xorg + mesa (hoặc Wayland?) Được cập nhật :)
Lekensteyn

1
PRIME , Xorg là máy chủ hiển thị chịu trách nhiệm hiển thị cho bạn đồ họa, Mesa là dành cho OpenGL, Wayland là người kế thừa có thể của Xorg.
Lekensteyn

1
Cần lưu ý rằng CUDA yêu cầu trình điều khiển NVIDIA tối thiểu. Chẳng hạn, CUDA 6.5 cần ít nhất NVIDIA 340,21.
Yamaneko

15

Đây là câu trả lời hoàn chỉnh (dựa trên câu trả lời của Alex FalappaLekensteyn ):

Thực sự có thể có GPU nVidia Optimus để chạy CUDA trên Ubuntu.

Bumblebee là không cần thiết cho CUDA. (thông tin thêm về Bumblebee : NVIDIA GeForce có Công nghệ Optimus được Ubuntu hỗ trợ không? )

Tuy nhiên, khi bạn cần để hiển thị ví dụ đồ họa sử dụng OpenGL, bạn làm cần một cái gì đó giống như Bumblebee cho các hệ thống Optimus, nếu không bạn hoặc là không nhìn thấy bất cứ điều gì trên màn hình của bạn hoặc nhận được lỗi:

ERROR: Support for necessary OpenGL extensions missing. 

Nếu bạn cần sử dụng một chương trình chuyên sâu về đồ họa như Blender, Bumblebee hiện là một cách tốt để đi.

Chuyển sang Cài đặt CUDA nếu bạn không muốn cài đặt Bumblebee (tức là nếu bạn không cần OpenGL).
Nếu không, đọc tiếp.

Cài đặt Bumblebee

Làm theo hướng dẫn tại Máy tính xách tay với Nvidia Optimus hoạt động tốt như thế nào?

Chúng hiện đang được nhà phát triển Bumblebee cập nhật.

Khi bạn đã cài đặt Bumblebee và khởi động lại, bạn sẽ có thể chọn card đồ họa để sử dụng khi khởi chạy chương trình bằng cách sử dụng optirunchương trình.
Ví dụ:

optirun blender

Để nhanh chóng kiểm tra nếu tất cả hoạt động chính xác, sử dụng:

optirun glxspheres

Bạn sẽ thấy một chương trình với các quả cầu quay đầy màu sắc nếu tất cả đều hoạt động chính xác.

Xác minh rằng chuỗi nhà cung cấp GL trong thiết bị đầu cuối có chứa từ nvidia .
Nếu bạn chỉ chạy glxspheres, bạn sẽ thấy chuỗi nhà cung cấp chứa thẻ Intel thay thế.

Khi chạy chương trình CUDA, bạn cần cài đặt bộ công cụ CUDA và trình điều khiển nvidia. Nếu bạn có ý định biên dịch chương trình, bạn cũng cần SDK. Các trình cài đặt có thể được tìm thấy trên http://developer.nvidia.com/cuda-doads , vui lòng đọc hướng dẫn bên dưới trước khi làm hỏng máy tính xách tay Optimus của bạn.

Cài đặt CUDA

Người lái xe

Tôi khuyên bạn nên cài đặt trình điều khiển nvidia từ trình quản lý gói của Ubuntu. Nếu bạn cài đặt Bumblebee, bạn không cần phải lo lắng về trình điều khiển. Nếu không, sau khi cài đặt, hãy vô hiệu hóa các thư viện nvidia như được mô tả trên https://askubfox.com/a/107746/6969 . Nếu bạn không, bạn sẽ mất khả năng tăng tốc 3D và có thể bị kẹt ở độ phân giải thấp.

Bộ công cụ

Về cơ bản, bạn phải tải xuống trình cài đặt, làm cho nó thực thi và chạy nó. - Tải về trình cài đặt. Kể từ ngày 9 tháng 1 năm 2013, 5.0,35 là trình điều khiển gần đây nhất. Là hệ điều hành 64 bit, tôi sử dụng gói Ubuntu 64.10 11 bit (mặc dù tôi đang chạy 12.10) - Làm cho nó có thể thực thi được và cho phép cài đặt để /usr/local/cuda:

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Khi thông báo cài đặt xảy ra sẽ hỏi bạn cài đặt CUDA ở đâu, chỉ cần nhấn Enter để chấp nhận mặc định /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Sau khi cài đặt, nó sẽ in một số tin nhắn đề nghị đưa thư mục thư viện cuda vào đường dẫn tìm kiếm thư viện của bạn:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Bạn có thể bỏ qua bước này nếu muốn, nhưng sau đó bạn phải đặt LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHsau khi chạy chương trình.

SDK

Nếu bạn muốn có thể biên dịch các ứng dụng CUDA, bạn có thể cài đặt SDK theo cách tương tự như được mô tả ở trên. Tải về, làm cho nó thực thi và chạy nó (không phải là root, ví dụ như không có sudo!).

Sử dụng CUDA

CUDA không cần máy chủ X điều khiển nvidia để hoạt động. Trong trường hợp đó, bạn có thể chạy chương trình thử nghiệm ngẫu nhiên của mình như:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Nếu bạn chưa thêm CUDA vào đường dẫn thư viện của mình, bạn sẽ cần:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensive

(bạn có thể tách các đường dẫn 32 bit khỏi nó nếu chương trình của bạn là 64 bit).

Nếu chương trình CUDA có thứ gì đó để hiển thị bằng OpenGL, bạn phải sử dụng optirun:

 optirun blender

Hoặc, nếu bạn chưa thêm CUDA vào đường dẫn mặc định của mình:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH máy xay sinh tố optirun

Cài đặt máy xay sinh tố

(Với hạt nhân CUDA được biên dịch trước)

Khi bạn chạy optirun blender, bạn có thể nhận được một thông báo từ Blender nói rằng quá trình biên dịch nhân CUDA không thành công và một thông báo trong thiết bị đầu cuối tương tự như sau:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Nếu bạn muốn sử dụng tính năng kết xuất GPU của Blender, bạn có thể cần bản dựng Blender với các hạt nhân CUDA được biên dịch sẵn. Các bản dựng từ Blender.org đều có các hạt nhân CUDA được biên dịch trước; các bản dựng ppa: cheleb / blender-svn ( thêm thông tin tại câu hỏi này ) thì không.

Để cài đặt bản dựng Blender chính thức, chỉ cần làm theo các hướng dẫn được nêu trong câu trả lời này .

Nếu bạn đã cài đặt Blender tới /usr/lib/blender, thì bạn sẽ có thể chạy Blender từ thiết bị đầu cuối và sử dụng kết xuất GPU với:

 optirun '/usr/lib/blender/blender'

Các phiên bản gần đây của Bumblebee (được cài đặt từ bumblebee / PPA ổn định) không cần usermodlệnh. Tôi sẽ giữ các hướng dẫn cài đặt trên Askubfox.com/a/36936/6969 , vì vậy vui lòng liên kết đến bài đăng đó thay vì sao chép các hướng dẫn cài đặt đó.
Lekensteyn

@Lekensteyn Được rồi, xong rồi!
Peter Cassetta

2

Đồ họa lai (thường là đồ họa tích hợp Intel và đồ họa rời Nvidia) trong Linux hiện có một chút rắc rối. Một cái gì đó đang dần di chuyển trong trường máy chủ X nhưng đừng nín thở.

Như bạn đã đoán Bumblebee hiện đang là một cách tốt để đi.

Gần đây tôi đã mua một máy tính xách tay Asus N55 với đồ họa Intel / Nvidia, tôi đã có thể có được trình kết xuất Blender Ciking để sử dụng CUDA.

Khi tôi cài đặt Ubuntu 12.04, nó sử dụng đồ họa tích hợp theo mặc định là trình điều khiển đồ họa intel. Trình điều khiển đồ họa tiểu thuyết không nên được cài đặt.

Sau đó, tôi đã mở một thiết bị đầu cuối và đã làm:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Sau đó tôi đã làm (theo khuyến nghị của hướng dẫn cài đặt):

sudo usermod -a -G bumblebee $USER

Sau đó tôi khởi động lại.

Để chọn trình điều khiển để sử dụng khi khởi chạy chương trình, hãy sử dụng chương trình optirun, ví dụ:

optirun blender

Để kiểm tra nếu tất cả hoạt động chính xác sử dụng:

optirun glxspheres

Và xác minh chuỗi nhà cung cấp GL có chứa từ Nvidia. Nếu bạn chạy thay thế:

glxspheres

Chuỗi nhà cung cấp phải chứa từ Intel


Tôi có cần cài đặt trình điều khiển nVidia trước khi cài đặt Bumblebee không? Tôi đoán là không, dựa trên cách bạn nói câu trả lời của bạn. Ngoài ra, thật tốt khi thấy ai đó có thể sử dụng CUDA trên Ubuntu bằng thẻ Optimus! Tôi sẽ bỏ phiếu này ngay sau khi tôi nhận được 15 đại diện. :)
Peter Cassetta

Được rồi, tôi đã cài đặt Bumblebee. Tôi đã sử dụng optirunvà tôi có thể xác minh rằng Blender đang sử dụng GPU nVidia của mình để hiển thị chế độ xem 3D. Tuy nhiên, không có tùy chọn "GPU" trong danh sách thả xuống trong Tùy chọn người dùng Blender. Nó chỉ liệt kê "CPU". Xem ảnh chụp màn hình này . Tôi có cần cài đặt trình điều khiển bổ sung để sử dụng CUDA không?
Peter Cassetta

1

Tôi thấy rằng để chạy tất cả các ví dụ về CUDA, sử dụng Bumblebee, bạn phải cài đặt các trình điều khiển 295,40 từ đây và trong khi cài đặt chọn không ghi đè lên các config x11.

Sau đó, bạn phải sử dụng cùng một trình điều khiển để biên dịch các ví dụ và chạy chương trình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.