MATLAB R2015a 또는 R2014b에서 하드웨어 기반 OpenGL 렌더링을 사용할 수 없습니다. R2014b 이전에는 MATLAB 그래픽 스택을 다시 작성하기 전에는 모든 것이 잘 작동했습니다. 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
나는 "소프트웨어"가 가짜일 것이라고 예상/희망합니다.
$ 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)
MATLAB이 시스템 라이브러리(TMW가 원하는 것)를 찾고 있음을 나타내며 TMW는 라이브러리 버전 libGL.so.1.2.0 및 libGLU.so.1.3.1이 호환되는지 확인합니다.
$ 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
유용한 정보를 제공하지 않습니다. TMW 기술 지원팀에 문의했는데 그들은 이것이 MATLAB 문제라고 생각하지 않습니다.
$ glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile
하드웨어 기반 OpenGL은 MATLAB 외부에서 작동하는 것이 좋습니다. 나는 Intel 그래픽을 사용하여 Arch Linux에서 대부분의 테스트를 수행했지만 ATI 및 Nvidia 그래픽도 시도했지만 성공하지 못했습니다. 공식적으로 지원되는 OS이기 때문에 최근 Debian 7 chroot를 만들었지만 여전히 Intel 카드를 사용하지 않습니다.
모든 작업은 기본 Arch 커널을 사용하여 수행되었습니다. 이것이 문제의 원인이 될 수 있습니까? 문제를 디버깅/추적하는 방법은 무엇입니까?
답변1
저에게는 다음이 효과가 있었습니다(R2017a(시험판)가 설치된 ArchLinux, Intel 그래픽이 설치된 노트북에서만):
export LD_PRELOAD=/usr/lib/libstdc++.so
export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/
/net/sw/MATLAB/R2017a/bin/glnxa64/MATLAB
마지막 단계에서는 (일부 LD_* 작업을 수행하는 도우미 스크립트 대신) MATLAB 실행 파일을 직접 호출합니다.
>> 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
답변2
MATLAB 설치 경로에 libstdc++.so.6* 라이브러리가 있습니까? MATLAB은 오래된 버전의 C++ 표준 라이브러리와 함께 제공됩니다. 최신 버전의 GCC 배포판으로 Mesa를 컴파일하면 실제 하드웨어 가속 백엔드를 로드할 수 없어 소프트웨어 렌더링이 강제됩니다. 당신은 할 수노력하다MATLAB 설치에서 이 파일을 제거하십시오(배포판 설치에서 제거하지 마십시오. 제거하면 완전히 중단됩니다.), 이것이 도움이 될 수 있습니다. 설치 과정에서 이 작업을 수행하지만 불필요한 항목을 삭제하지 않도록 조심하고 싶지는 않을 것입니다.
귀하의 명령 opengl info
에서 약간 다른 메시지가 나올 것으로 예상하고 있으므로 이것이 도움이 될지는 확실하지 않지만 시도해 볼 가치는 있습니다.