CPU 성능: 클럭 속도 또는 코어JMP를 실행할 때 더 낮은 빈도로 더 많은 코어를 갖는 것이 더 낫습니까, 아니면 그 반대입니까? 나는 스레드된 플랫폼이 거의 없기 때문에 클럭 속도가 더 중요하다고 믿게 될 것이라고 생각했습니다.그러나 이것이 여전히 사실인지는 확실하지 않습니다.나는 일반적인 경우에 말하고 있다는 것을 알고 있으며 정확하게 말하기가 거의 불가능합니다.어쨌든 감사합니다.
Re: CPU 성능: 클럭 속도 또는 코어JMP가 사용 가능한 프로세서를 얼마나 잘 사용하는지는 실행 중인 분석 플랫폼과 처리 중인 데이터에 따라 다릅니다. 다음은 긴 문서에서 행 수 > 프로세서 수로 텍스트 구문 분석 단계에서 텍스트 탐색기를 실행하는 JMP입니다. (다른 플랫폼은 다르게 동작하며 일부는 스레딩을 활용할 수 없습니다. 텍스트 탐색기의 구문 분석은 제가 최근에 작업한 것입니다.)
100% busy100% busy100% 바쁨
텍스트 탐색기의 알고리즘이 항상 컴퓨터를 100% 바쁜 상태로 유지할 수 있는 것은 아닙니다. 일부 작업은 먼저 완료되는 다른 작업에 따라 달라지며, 스레드된 일부 작업은 스레드를 기다리게 하는 방식으로 리소스(예: 메모리 액세스)를 두고 경쟁합니다.
dt = New Table( "bigtext",
Add Rows( 1000 ),
New Column( "text", Character, "Nominal", formula( Repeat( "aaa bbb ccc ", 1e5 ) ) )
);
dt << Text Explorer(
Text Columns( :text )
);
CPU를 더 추가하는 데는 제한이 있습니다. 여기에서는 모든 32/64 CPU가 바쁜 것처럼 보이지만 작업은 거의 같은 속도로 진행되고 있습니다.
100% busy but not making progress much faster100% busy but not making progress much faster100% 바쁘지만 진행 속도가 훨씬 빠르지 않음
나는 이 CPU들이 서로를 방해하고 있다고 생각합니다. 메모리를 통해 이동하는 1GB의 문서에는 CPU의 캐시 메모리를 변동시킬 수 있는 기회가 많습니다. 대부분 JMP는 CPU가 4~12개 있는 시스템에서 개발되므로 알고리즘도 CPU에 맞게 조정될 가능성이 높습니다. 예를 들어 텍스트 탐색기는 구문 분석 단계를 마친 후 프로세서의 절반을 사용하여 구문 분석 결과를 결합합니다. 8 CPU 시스템에서 모든 프로세서를 사용하는 것보다 빠르다고 판단했기 때문입니다.
그렇습니다. 4~12개의 CPU, 더 빠른 CPU, 페이징을 방지할 수 있는 충분한 메모리가 필요합니다. 디스크에 페이징하지 않고 데이터를 보관할 메모리가 충분하지 않은 경우 다른 방법은 도움이 되지 않습니다.
Re: CPU 성능: 클럭 속도 또는 코어@vince_faller : 원래 질문에 답하기 위해 Windows에서 JMP 사본 하나를 최적화하기 위한 개인적 권장 사항은 가능한 가장 빠른 4개 또는 6개 프로세서를 사용하는 것입니다.
@txnelson : 좀 더 명확하게 설명해야 했는데, JMP는 전체 코어 중 일부만 사용하는 경우가 많지만 코어를 모두 사용하지는 않습니다.이로 인해 JMP는 실제 '작업자' 스레드 수가 8~12개 미만인 상태로 실행되고 있으며 운영 체제에 의해 처리가 코어에서 코어로 이동한다고 믿게 되었습니다.
JMP의 이러한 속성이 나를 괴롭히기 때문에 JMP가 전체 코어의 일부만 사용한다는 내 이론을 테스트하는 데 시간을 보냈습니다. 다음은 각각 자체 JMP 인스턴스에서 아래 스크립트의 복사본 1, 2, 3, 4개를 동시에 실행할 때의 결과입니다.
하나의 인스턴스
19~21초

두 개의 인스턴스
26~28초

3개의 인스턴스
34~39초

4개의 인스턴스
43~47초

한 번에 두 개의 복사본을 실행하는 시간은 한 개를 두 번 실행하는 시간보다 확실히 짧습니다.

Names default to here( 1);
dt = Open( "$Sample_data/probe.jmp", Private );
Random reset(1);
valcol = dt << New Column( "Validation",
Numeric, "Nominal", Set formula( Random Category( 0.75, 0, 0.25, 1, 2 ) ),
Value Labels( {0 = "Training", 1 = "Validation", 2 = "Test"} ), Use Value Labels( 1 )
);
dt << Run Formulas; valcol << Delete Formula;
timeboot = Function( {},
start = Today();
xvars = Substitute(Char((dt << Get Column Names)[8::394]), "{", "", "}", "");
Eval( Parse(
"rf = dt << Bootstrap Forest(
Y( :Process ),
X( " || xvars || " ),
Validation Portion( :Validation ),
Method( \!"Bootstrap Forest\!" ),
Portion Bootstrap( 1 ),
Number Terms( 30 ),
Number Trees( 2000 ),
Early Stopping( 0 ),
Go
);"
));
rf << Close Window;
end = Today();
return(end - start);
);
win = New window("Time Bootstrap",
V List Box(
r = text box( "", << Set Width( 100 ) ),
H List Box(
Button Box( "Start", r << Set Text( Char( timeboot() ) || " seconds" ) ),
Button Box( "Close", dt << Close Window; win << Close Window; )
)
)
);Re: CPU 성능: 클럭 속도 또는 코어내 결과는 다르며, 이는 내가 테스트해 온 플랫폼 때문일 수 있습니다.Random Forrest를 실행할 때 Windows 7과 Windows 10 모두에서 모든 CPU에서 쉽게 실행됩니다. 평균적으로 전체 CPU 용량의 35% 이상을 차지합니다.저는 8개의 프로세스만 가지고 있습니다....총 12개의 멋진 프로세스는 아니지만 8개 모두 문제를 해결하기 위해 노력하고 있습니다.
Re: CPU 성능: 클럭 속도 또는 코어Windows 7 데스크톱에서 JMP의 단일 인스턴스가 12개 코어 중 6개 이상의 코어를 사용하는 것을 본 적이 없습니다. 일반적으로 프로세서 사용량이 25%에 달합니다.Re: CPU 성능: 클럭 속도 또는 코어빈스,
대부분의 분석 플랫폼은 다중 스레드인 반면 JSL은 대부분 단일 스레드입니다.그래서 혼합된 경우입니다.제가 제안하는 것은 작업 관리자를 열고 그 안에 있는 성능 탭을 여는 것입니다.그런 다음 일반적인 작업 흐름을 실행하면 응용 프로그램이 다중 코어에 도달할 때와 단일 코어에 도달할 때를 명확하게 확인할 수 있습니다.거기에서 결정을 내릴 수 있습니다.