몇 가지 JSL 질문모두 안녕!
나는 누군가가 뒤에 오는 것에 응답을 알고 있는지 생각해보고 있었다 :
- 호스트 기계가 동시에 실행할 수있는 스레드의 수를 판별하는 JSL 기능이 있습니까?
- JMP Pro에서 멀티 스레드 된 시뮬레이션 기능입니까?
어떤 생각이라도 환영합니다.
감사!
엠재 : JSL 질문 커플1) 아니요.하지만 다음과 같이 JSL로 답을 추측 할 수 있습니다.
x=j(1000,1,.);
i=0;
parallelassign({q=i++},x[r,c]=q);
show(i);
그러나 그것은 단지 대답 일뿐 * 대답이 아닙니다. 단일 CPU 머신이라도 100s의 쓰레드를 가질 수 있습니다. 현재의 CPU는 일반적으로 빠른 스레드 전환을 가능하게하는 하이퍼 스레딩 기능을 가지고 있습니다. 그러나 위의 i 값은 아마도 당신이 원하는 것일 것입니다. 설명 : {q = i ++} 내부에서 q는 각 스레드 인스턴스의 로컬 변수이고 i ++는 스레드 외부에서 계산 된 초기화 값입니다. 이 동작이나 행렬 요소가 초기화되는 명백한 순서에 따라 달라지는 코드를 작성하면 안됩니다.
2) 작업 관리자를 봅니다 (WIN 7은 10보다 나은 개별 CPU를 보여줍니다). 나는 네가 맞을 거라고 생각한다.
(MFI는 I / O 바인딩이며 스레드를 사용하여 파일을 읽고 단일 CPU 컴퓨터의 스레드로부터 이익을 얻습니다. 한 스레드에서 파일을 읽는 I / O는 다른 스레드가 CPU를 사용하여 데이터를 구문 분석하는 것을 중단하지 않습니다. 이미 다른 파일을 읽었습니다. 하지만 시뮬레이션은 아마도 CPU 바운드이며 아마도 I / O가 없습니다. 스레드라면 다중 CPU의 이점을 누릴 수 있습니다. 위의 ParallelAssign은 메모리 바인딩입니다. 메모리에 대한 대역폭은 데이터가 매트릭스에 쓰여질 수있는 최대 속도를 결정합니다 ... CPU가 x [r, c] =의 오른쪽에서 계산 속도가 느린 경우에만 도움이됩니다. )
재 : JSL 질문 커플재미있는 질문, @MikeD_Anderson . 당신이 물어 보는 것을 나눌 수 있습니까?
재 : JSL 질문 커플감사, @Craige_Hales ! 그게 효과가있을 것 같아. 호스트 OS에 프로세서에 얼마나 많은 코어가 있는지 묻는 JSL 기능이 있기를 바랬습니다. 난 그냥 귀하의 발언을 시도하고 나에게 동일한 대답을 준 (내 i9 프로세서 코어 당 스레드 2 스레드 6 코어 = 12 스레드가).
@ 제프 _ 퍼킨슨 - 시뮬레이션을 수행하기 위해 총 실행 시간을 지정하려고합니다. 즉 내 모델을 실행하는 데 2 초가 걸린 다음 2500 시뮬레이션 (기본값)을 수행하고 6 코어 이상을 코어 당 2 스레드로 분산 시키면 (시뮬레이션이 다중 스레드라고 가정 할 때) 시뮬레이션은 417 초 (6 분)가 소요됩니다. 추가 기능에 경고 메시지를 표시하여 시뮬레이션에 소요되는 시간을 사용자에게 알려주고 싶습니다. 그것은 완벽한 수학은 아니지만, 적어도 저에게 "이봐,이 시뮬레이션은 1 시간 정도 걸릴 것입니다. 정말로 실행하고 싶습니까?"라고 말할 것입니다. 모델을 한 번 반복 할 때 처리 시간을 얻을 수 있습니다. 땀을 흘리지는 않습니다.하지만 실의 수를 알아내는 것은 내가 어려움을 겪고있는 것이 었습니다.
베스트,
엠
재 : JSL 질문 커플CPU의 수를 두 배로 늘리면 CPU 및 메모리 바인딩 인 실제 응용 프로그램의 속도가 결코 두 배가되지 않습니다. 일반적인 경우입니다. 메모리 대역폭은 항상 문제가됩니다. 2 개 또는 4 개의 CPU를 사용할 수 있으며 제어 할 수없는 다른 모든 것들이 있으면 꽤 좋은 추측을 할 수 있습니다. 조기에 끝내면 아무도 불평하지 않을 것입니다.