2017-12-05 2 views
2

나는 matlab에 R2017a는 MS 윈도우 서버 2008 R2 엔터프라이즈 V 6.1 (SP1) 및 벤치 마크 결과를 실행하는 서버에 설치되어 끔찍한 있습니다Windows 서버에서 MATLAB이 느린 이유는 무엇입니까?

bench 
3.6424 0.5267 0.2114 5.0303 1.5557 3.4980 

[열 = LU, FFT, ODE, 스파 스, 2-D , 3-D]

LU 및 스파 스의 경우 특히 느립니다. CPU :

서버는이 하드웨어를 갖는다 (16 논리 4 개 물리 프로세서) 제온 E7320에서 @의 2.13GHz 128기가바이트 RAM 64 비트 운영체제

matlab에 버전 : 9.2.0.556344 (R2017a) Java 버전 : Oracle Corporation Java HotSpot (TM) 64 비트 서버 VM 혼합 모드를 사용하는 Java 1.7.0_60-b19.

서버에 온라인이 될 수 있지만, 나는 그들이 시스템을 강조하지 않는 이러한 실행 시간이 지난 주에 여러 번을 테스트 한 (안정되어 있다는 것을 확인하는 것을 볼 수있는 다른 사용자도 있습니다.

내 질문이 있습니다 : 다른 라이브러리 또는 무언가가있을 수있는 "틀린"수있는 Matlab? 비슷한 비슷한 있지만 약간 새로운 서버 벤치에 결과를 기반으로 기대했던 것 가까이에 비슷한 비슷한 설치 프로그램이 있습니다. specs. "잘못된"선형 대수 모듈 또는 뭔가를 사용하는 경우 궁금하네요.

대체 설명 Matlab이 특정 AMD Opteron CPU에서 매우 느리게 실행되었음을 알고 있습니다. (Matlab의 이러한 서버에서 작업 한 적이 있습니다. 링크 https://se.mathworks.com/matlabcentral/answers/33939-poor-matlab-performance-on-amd-based-computer). 인텔 제온 E7320과 유사한 문제 일 수 있습니까?

편집 : Xeon E7320 Peter의 제안대로

+0

을 수행합니다. nd BTW, 그것은 단지 16 "논리적"프로세서가 아닙니다. 하이퍼 스레딩이 없기 때문에 4 개의 쿼드 코어 CPU가있는 4 소켓 시스템을 16 개의 물리적 코어에 사용할 수 있습니다. –

+0

궁금한 사람들을 위해 "다른"서버의 사양 및 결과를 공유 할 수 있습니까? – BeeOnRope

답변

4

업데이트 : Matlab의 bench이 단일 CPU 코어, 다중 CPU 코어 또는 GPU (OpenCL/CUDA)를 사용하는지 확실하지 않습니다. GPU 가속을 사용할 수 있다면 은 큰 차이입니다. (특히 "느린"서버에 전혀없는 경우).

의견에서 설명한대로 일부 벤치 마크에서는 a dual-core Sandybridge laptop이 10 배 빨라졌지만 일부 구성 요소에서는 2 배 또는 1.5 배 빨라졌습니다. (그러나 나는 Matlab의 버전이 제어되고 있는지 확신 할 수 없다 : 당신이 링크 한 스레드는 다른 버전의 Matlab이 그들의 bench에서 다른 양의 작업을한다고 언급했다.)


이 답변의 나머지 부분은 테스트의 모든 CPU 코어을 활용 가정하에 작성되었습니다 (그렇지 않으면 오래된 많은 코어 시스템을 사용 아무 소용이 없다). 그러나 GPU를 고려하지 않고.


내가 당신의 CPU가 실제로 a 65nm Core2-based Xeon E7320하지 "E3720"생각 (더 구글 안타). 너는 뭘 비교해? Tigerton CPU는 고대 (약 10 년)이지만 느리다.. (Tigerton은 Conroe/Merom과 같은 마이크로 아키텍처, 1 세대 Core2).

매우 낮은 메모리 대역폭과 캐시 속도은 최신 CPU와 비교되며, AVSE 또는 FMA가 아닌 SSSE3 만 사용합니다. 이 CPU에는 메모리 컨트롤러가 내장되어 있지 않으므로 all 4 sockets are sharing the memory controller hub (MCH) via separate 1066MHz Front-Side Buses. 메모리 대역폭은 소켓 수에 비례하지 않으며 그리 크지 않습니다. 메모리 대역폭은 수년 동안 핵심 성능 인보다 빠르게 증가했습니다. 이 링크에 따르면 쿼드 소켓 16 코어 Tigerton (당신처럼)은 쿼드 소켓 8 코어 바르셀로나 옵테론보다 간신히 우수합니다. CPU 바운드 작업 부하는 그렇게 나쁘지 않지만 메모리 바운드 작업 부하는 상당히 나쁠 것입니다.


낮은 클럭 속도는 물론 최신 클럭 속도보다 훨씬 느린 클럭 속도입니다. IDK는 그 시간이 어떻게 되겠습니까 (저는 [performance] 태그가 아니라 Matlab). 그러나 3GHz 쿼드 코어 i5 또는 i7 Haswell/Skylake 데스크탑 또는 고전력 랩탑이 사용자보다 빠르다는 것은 완전히 그럴듯합니다. 16 코어 공룡 기계.

(단일 스레드 메모리 대역폭 정말 아마도 좋지 않은 경우 사실, 그 벤치 마크도? 코어 수에 따라 확장 않습니다.) 성능에 매우 큰 도약이 모든 (샌디 브리지와 무슨 일이 있었

코드, 비 -IMD 워크로드 포함), 그리고 머신과 최신 CPU 사이에 몇 가지 작은 점프가있었습니다. SnB는 클럭 당 2 개의로드 명령어를 실행할 수 있으며, 이전 Intel (Core2와 같은)에 대해서는 1 개입니다.

최적화 된 라이브러리가 활용할 FP 관련 자료의 경우 x86 ISA 확장이 중요합니다. AVX는 SIMD 벡터 폭을 두 배로 늘려 FLOPS (전폭 실행 단위가있는 Intel CPU의 경우)를 두 배로 늘립니다. FMA는 하나의 명령어에 mul + add를 수행하여 FLOPS를 두 배로 늘릴 수 있습니다. Haswell은 두 개의 FMA 유닛과 FP 가산기 하나와 FP 곱셈기를 가진 초기 CPU와 비교하여 잠재적으로 FLOPS를 두 배로 늘릴 수 있습니다. 연속 메모리와 높은 계산 대 메모리 작업량 만이이를 최대한 활용합니다 (예 : 조밀 한 matmul, 그러나 그 케이스에서 1 Haswell 중핵은 8 Tigerton 중핵만큼 다량 일을하고있다.

CPU가 가지고있는 경우 Matlab에서 AVX + FMA를 이용할 수 있다고 가정합니다.


BTW는 단지 16 개의 "논리"프로세서가 아닙니다. 하이퍼 스레딩이 없기 때문에 4 개의 쿼드 코어 CPU가있는 4 소켓 시스템을 16 개의 물리적 코어에 사용할 수 있습니다. (이 "쿼드 코어"칩은 사실 동일한 패키지의 두 개의 별도 듀얼 코어 다이이다. according to wikipedia

서로 통신해야하는 물리적 칩의 개수만큼 8 개 이것은 다른 CPU에 도달하기위한 많은 홉이므로 코어 간 동기화는 싱글 다이 쿼드 코어보다 비용이 많이 듭니다. (그리고 18- 코어 듀얼 소켓 Xeon 박스보다 더 나쁜 경우도 있습니다. 코어 CPU를 또는 무언가) 메모리 대기 시간 또한 메모리 대역폭을 해칠 수 있다는

참고 :. 방어 적이기/memset 함수를 최적화하는 방법과 저장 대역폭은 인텔 CPU의 작동에 대해이 답변의 "latency bound platforms" 부분을 참조

+0

와우, 피터! 당신의 대답은 제가 알 필요가있는 부분입니다. 나는 이러한 보더 - 온 - 후드 개선이 칩을위한 GHz에 대한 일반적인 단일 지향점에 맞지 않는다고 생각한다. 당신도 칩 디자인에 맞습니다. – Superpronker

+0

물론 10 년 된 CPU이지만 Conroe 이후 IPC 향상은 무엇입니까?액면가로 [이와 비슷한 것] (http://i.imgur.com/uuMOToE.jpg)을 가져 가면 2 배 미만입니다. 다른 소스를 살펴 보니 "야구장에서"([this] (https://www.anandtech.com/show/9483/intel-skylake-review-6700k-6600k-ddr4-ddr3-ipc-6th) -generation/9)는 20 % 중반 범위의 전형적인 SnB-> Skylake 융기를 보여 주었다. – BeeOnRope

+0

우리가 관대하고 2 배의 IPC 개선을한다면, 16 코어 2.13GHz Conroe 박스는 여전히 "현대적인"4.26GHz 쿼드 코어 (하이퍼 스레딩 무시)와 같을 것입니다. 어쩌면 Matlab은 AVX 나 더 잘 확장 된 다른 것들의 영향을 더 많이받을 것입니까? – BeeOnRope

관련 문제