ปัญหาในการรวบรวม OpenCV สำหรับ Linux บนแล็ปท็อป Optimus โดยใช้ bumblebee


3

ตกลงฉันมีคำถามเกี่ยวกับ Optimus / CUDA / drivers ที่เฉพาะเจาะจง:

  • ฉันใช้ Ubuntu 12.04 บน Acer Aspire 5750G แล็ปท็อปนี้มี GPU GT540M ที่รองรับ CUDA แต่ยังมี Optimus ดังนั้นเพื่อที่จะใช้งานได้ฉันต้องใช้ bumblebee

  • ดังต่อไปนี้ คำแนะนำเหล่านี้ ฉันติดตั้งไดรเวอร์ NVIDIA รุ่นล่าสุดจาก ppa:ubuntu-x-swat/x-updatesจากนั้นติดตั้ง bumblebee

  • ตอนนี้ฉันสามารถเรียกใช้ข้อมูลบน GPU ได้ดี ( optirun glxspheres ทำงานตามที่คาดไว้)

  • อย่างไรก็ตามฉันพยายามรวบรวมบางสิ่งบางอย่าง (OpenCV-2.4.2) ด้วยการสนับสนุนรันไทม์ของ CUDA และฉันพบข้อผิดพลาดของคอมไพเลอร์ที่ดูเหมือนว่าจะทำอย่างไรหากไม่ได้ติดตั้งไดรเวอร์สำหรับนักพัฒนา NVIDIA CUDA

สิ่งที่ฉันอยากรู้คือการใช้ bumblebee ร่วมกับไดรเวอร์สำหรับนักพัฒนาของ NVIDIA หรือไม่ จะปลอดภัยไหมที่จะใช้ตัวติดตั้งที่ดาวน์โหลดจากหน้าผู้พัฒนาของ NVIDIA หรือว่ามันจะทำให้สับสนหรือเปล่า? มีวิธีที่ดีกว่าในการติดตั้งไดรเวอร์สำหรับนักพัฒนาหรือไม่? ฉันมองหา PPA ที่ทันสมัย ​​แต่หาไม่พบ

คำตอบ:


4

ตกลงดังนั้นปรากฎว่าฉันไม่จำเป็นต้องใช้ไดรเวอร์นักพัฒนาเพื่อรวบรวม OpenCV หลังจากทั้งหมด!

ฉันทำแหล่งข้อมูลซอฟต์แวร์ของฉันสับสนจนฉันไม่ได้อัปเดต ppa:ubuntu-x-swat/x-updates อีกต่อไป เมื่อฉันแก้ไขว่าฉันสามารถอัปเดตไดรเวอร์ NVIDIA เป็น 304.43 จาก 295.49. ฉันคิดว่าอาจเป็นปัจจัยสำคัญในการรวบรวม OpenCV แม้ว่าฉันจะต้องแก้ไข makefile เดียวเพื่อให้ทำงานได้

หากใครสนใจที่จะทำแบบเดียวกันฉันก็ทำตามคำแนะนำ ที่นี่ . ในการถอดความ:

  • sudo apt-get install การพึ่งพาโมดูลต่อไปนี้หากคุณยังไม่มี:

    libopencv-dev build-essential checkinstall cmake pkg-config libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libv4l-dev

  • ดาวน์โหลด OpenCV ล่าสุดจาก ที่นี่ จากนั้น:

    tar -xvf OpenCV-<version#>.tar.bz2
    cd OpenCV-<version#>/
    mkdir build
    cd build
    
  • วิ่ง cmake เพื่อกำหนดค่าไฟล์บิลด์ คุณจะต้องผ่าน cmake ชุดตัวเลือกเพื่อระบุว่าคุณต้องการให้ OpenCV สร้างขึ้นอย่างไร ตัวเลือกที่แน่นอนจะขึ้นอยู่กับระบบของคุณคุณสามารถทราบว่ามีตัวเลือกใดบ้างโดยดูที่ ../CMakeLists.txt. คำสั่งที่แน่นอนที่ฉันใช้คือ:

    cmake -D WITH_QT=ON -D WITH_XINE=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=ON BUILD_TESTS=ON  ENABLE_SSE3=ON ENABLE_SSE4.1=ON ENABLE_SSE4.2=ON WITH_CUDA=ON ..
    

    ฉันมีปัญหาในการทำให้คอมไพล์ด้วยการรองรับรันไทม์ของ CUDA ( WITH_CUDA=ON ) ดังนั้นคำถามเดิมเกี่ยวกับไดรเวอร์

  • cmake จะสร้างไฟล์ชื่อ CMakeCache.txt. ฉันพบว่าฉันต้องแก้ไขไฟล์นี้ตามที่อธิบายไว้ ที่นี่ เพื่อหลีกเลี่ยงข้อผิดพลาดในการเชื่อมโยง libcuda.so.

    ค้นหาบรรทัดที่เริ่มต้น:

    CUDA_CUDA_LIBRARY:FILEPATH=
    

    และผนวกเส้นทางไปยัง libcuda.soในกรณีของฉัน:

    CUDA_CUDA_LIBRARY:FILEPATH=/usr/lib/nvidia-current/libcuda.so
    
  • ตอนนี้คุณควรจะสามารถเรียกใช้ make เพื่อคอมไพล์ (ใช้เวลาสักครู่ ... ) จากนั้น sudo make install ติดตั้ง

ฉันหวังว่าบางคนจะพบว่ามีประโยชน์นี้


ยินดีต้อนรับสู่ Super User! ในขณะที่ในทางทฤษฎีอาจตอบคำถาม มันจะดีกว่า เพื่อรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง กล่าวอีกนัยหนึ่งให้ถอดความสองลิงก์เหล่านั้นและอ้างอิงแหล่งที่มาของคุณ ช่วยป้องกันไม่ให้เกิดการเชื่อมโยงกับเว็บไซต์หากเว็บไซต์เหล่านั้นล่มหรือเปลี่ยน URL
Canadian Luke

ก็โอเคฉันคิดว่า ฉันลังเลที่จะทำเช่นนั้นเพราะมันเป็นข้อมูลที่เกี่ยวข้องกับทางอ้อมของคำถามต้นฉบับของฉันเท่านั้น
ali_m

แต่ถ้าไซต์หยุดทำงานผู้ใช้โดยเฉลี่ยอาจไม่รู้ว่าคุณทำได้อย่างไรและไม่จำเป็นต้องมีไซต์คำถาม / คำตอบ
Canadian Luke

ตกลงฉันได้แก้ไขคำตอบของฉันเพื่อถอดความเนื้อหาของหน้าที่เชื่อมโยงและฉันได้เปลี่ยนหัวข้อคำถามเดิมเพื่อให้ตรงกับเนื้อหาของคำตอบมากขึ้น
ali_m

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