Problema ao compilar o OpenCV para Linux em um laptop Optimus usando o bumblebee

3

OK, eu tenho uma pergunta bastante específica sobre o Optimus / CUDA / drivers:

  • Estou executando o Ubuntu 12.04 em um Acer Aspire 5750G. Este laptop tem um GPU GT540M com capacidade para CUDA, mas ele também tem Optimus, então, para fazer uso dele eu preciso usar o bumblebee

  • Seguindo estas instruções , instalei drivers NVIDIA mais recentes de ppa:ubuntu-x-swat/x-updates e instalei o bumblebee

  • Agora posso executar muito bem as coisas na GPU ( optirun glxspheres funciona como esperado)

  • No entanto, estou tentando compilar algo (OpenCV-2.4.2) com suporte ao tempo de execução CUDA, e acertei um erro do compilador que parece estar relacionado a não ter os drivers de desenvolvedor NVIDIA CUDA instalados

O que eu quero saber é se é possível usar o bumblebee em combinação com os drivers de desenvolvedor da NVIDIA. É seguro usar o instalador baixado da página do desenvolvedor da NVIDIA, ou isso vai bagunçar totalmente o zangão? Existe uma maneira melhor de instalar os drivers do desenvolvedor? Procurei um PPA atualizado, mas não consegui encontrar um.

    
por ali_m 05.09.2012 / 12:12

1 resposta

4

Ok, acontece que eu não preciso usar os drivers do desenvolvedor para compilar o OpenCV, afinal de contas!

De alguma forma, eu estraguei minhas fontes de software e não atualizei mais ppa:ubuntu-x-swat/x-updates . Quando consertei, consegui atualizar meus drivers NVIDIA para 304.43 de 295.49 . Acho que esse pode ter sido o fator crítico para compilar o OpenCV, embora eu também precise modificar um makefile para que ele funcione.

Se alguém estiver interessado em fazer o mesmo, eu basicamente segui as instruções aqui . Parafraseando:

  • sudo apt-get install das seguintes dependências do módulo, se você ainda não as tiver:

    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

  • Faça o download do último OpenCV em aqui , então:

    tar -xvf OpenCV-<version#>.tar.bz2
    cd OpenCV-<version#>/
    mkdir build
    cd build
    
  • Execute cmake para configurar um arquivo de compilação. Você precisará passar cmake de um conjunto de opções para especificar como você gostaria que o OpenCV fosse construído. As opções exatas dependerão do seu sistema - você pode ter uma ideia de quais opções estão disponíveis olhando ../CMakeLists.txt . O comando exato que usei foi:

    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 ..
    

    Eu tive um problema especial para compilar com o suporte ao tempo de execução CUDA ( WITH_CUDA=ON ), daí a pergunta original sobre os drivers.

  • cmake criará um arquivo chamado CMakeCache.txt . Descobri que eu tinha que modificar esse arquivo como descrito aqui para evitar um erro ligando libcuda.so .

    Encontre a linha que começa:

    CUDA_CUDA_LIBRARY:FILEPATH=
    

    E anexe o caminho para libcuda.so , no meu caso:

    CUDA_CUDA_LIBRARY:FILEPATH=/usr/lib/nvidia-current/libcuda.so
    
  • Agora você deve executar make para compilar (demora um pouco ...) e, em seguida, sudo make install para instalar

Espero que alguém ache isso útil.

    
por 07.09.2012 / 01:27