2012-10-25 2 views
1

"sort"는 멀티 스레딩을 이용하는 matlab (R2010a)의 내장 함수 중 하나입니다. 8 코어가있는 머신에서 큰 매트릭스에서 "정렬"을 사용하면 모든 코어가 활성화되었지만 각각에 대한 CPU 사용량이 25 %를 넘지 않음을 알 수 있습니다. 내 자신의 openmp "mex"를 완전히 모든 코어를 채용하고 있습니다. matlab에 모두 사용하도록하는 방법이 있습니까? 코드 작업 스레드 모든 시간, 동안 MATLAB 스레드에 너무 많은 일을하지 않는 것을 의미하는 것은 아니다 사전에matlab multithreaded functions

감사합니다,

캄란

+2

당신의 mex는 MATLAB 정렬보다 빠릅니까? – angainor

+0

아니요, 조금 느립니다. 나는 mex에서 어떤 사전 분류도하지 않는다. 하지만 CPU 사용량은 모든 코어에서 100 %입니다. – user1641496

답변

3

. matlab의 스레드가 잠자고있는 동안 코드 (#pragma omp barrier)의 일부 잠금/뮤텍스를 스핀 (활성 대기) 할 수 있습니다. 효과는 동일합니다. 쓰레드가 대기하지만, 귀하의 경우에는 100 % CPU 사용량이 표시됩니다.

MATLAB에는 'CPU 사용 100 %'라는 스위치가 없습니다. 이것은 OS에 의해 결정됩니다. 스레드가 작동하면 실행됩니다. 귀하의 설명에서 나는 matlab에 스레드 자주 수면을 정렬 말하고 싶지만.

MATLAB이 어떤 작업을 수행하든 적어도 가능한 최선을 다하려고합니다. MATLAB과 거의 같은 속도로 - 축하해! 좋은 당신을 위해 :)