Renderização de Hardware OpenGL em MATLAB

3

Não consigo fazer com que a renderização OpenGL baseada em hardware funcione no MATLAB R2015a ou R2014b. Antes do R2014b, e a reescrita da pilha de gráficos do MATLAB, tudo funcionou bem. De MATLAB

>> opengl info
                          Version: '3.0 Mesa 10.6.5'
                           Vendor: 'Intel Open Source Technology Center'
                         Renderer: 'Mesa DRI Intel(R) Sandybridge Mobile '
                   MaxTextureSize: 8192
                           Visual: 'Visual 0xac, (RGBA 32 bits (8 8 8 8), Z depth 16 bits, Hardware acceleration, Double buffer, Antialias 4 samples)'
                         Software: 'true'
        SupportsGraphicsSmoothing: 1
    SupportsDepthPeelTransparency: 1
       SupportsAlignVertexCenters: 1
                       Extensions: {199x1 cell}
               MaxFrameBufferSize: 8192

Eu estava esperando / querendo que o "Software" fosse falso.

$ ldd /opt/tmw/matlab/bin/glnxa64/glren.so | grep libGL
    libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f0a3b871000)
    libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007f0a3b5ef000)

sugere que o MATLAB está encontrando as bibliotecas do sistema (que é o que a TMW diz que eu quero) e o TMW confirma que as versões da biblioteca libGL.so.1.2.0 e libGLU.so.1.3.1 são compatíveis.

$ LIBGL_DEBUG=verbose matlab
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib/xorg/modules/dri/i965_dri.so
libGL: Using DRI2 for screen 0

Não fornece informações úteis. Eu tenho estado em contato com o suporte técnico da TMW e eles decidiram que não é um problema do MATLAB apesar de

$ glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile

sugerindo que o OpenGL baseado em hardware está trabalhando fora do MATLAB. Eu fiz a maioria dos meus testes no Arch Linux com uma placa gráfica Intel, mas também tentei placas ATI e Nvidia sem qualquer sorte. Eu criei recentemente um chroot do Debian 7, já que este é um sistema operacional oficialmente suportado, mas ainda não teve sorte com o cartão Intel.

Tudo foi feito com o kernel do estoque Arch. Isso poderia ser a causa do problema? Como faço para depurar / rastrear o problema?

    
por StrongBad 02.09.2015 / 23:50

2 respostas

1

Para mim, as obras seguidas (em ArchLinux com R2017a (pré-lançamento) com um laptop contendo apenas gráficos intel):

export LD_PRELOAD=/usr/lib/libstdc++.so
export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/
/net/sw/MATLAB/R2017a/bin/glnxa64/MATLAB

Observe que na última etapa estou chamando diretamente o executável do MATLAB (não o script auxiliar que realiza alguma manipulação LD_ *)

>> opengl info
                          Version: '3.0 Mesa 17.0.0'
                           Vendor: 'Intel Open Source Technology Center'
                         Renderer: 'Mesa DRI Intel(R) Haswell Mobile '
                   MaxTextureSize: 16384
                           Visual: 'Visual 0xcb, (RGBA 32 bits (8 8 8 8), Z depth 16 bits, Hardware acceleration, Double buffer, Antialias 8 samples)'
                         Software: 'false'
             HardwareSupportLevel: 'full'
        SupportsGraphicsSmoothing: 1
    SupportsDepthPeelTransparency: 1
       SupportsAlignVertexCenters: 1
                       Extensions: {230×1 cell}
               MaxFrameBufferSize: 16384
    
por 22.02.2017 / 14:08
-1

O MATLAB possui alguma biblioteca libstdc ++. so.6 * em seu caminho de instalação? O MATLAB é fornecido com uma versão desatualizada da biblioteca padrão c ++. Se você distribuiu o Mesa com uma versão mais nova do GCC, ele não conseguirá carregar o backend de aceleração de hardware, o que forçará a renderização do software. Você pode tentar remover esse arquivo somente da sua instalação do MATLAB ( NÃO removê-lo da instalação de distribuição, que o quebrará totalmente ), o que pode ajudar. Eu faço isso das minhas instalações, mas você não precisa tomar cuidado para não remover mais do que o necessário.

Não tenho certeza se isso ajudará, já que esperaria uma mensagem um pouco diferente do seu comando opengl info , mas é algo a ser tentado.

    
por 27.01.2016 / 20:12