답변:
죄송합니다. 매우 명확하지 않습니다.
HT를 활성화 한 경우 코어 당 2 개의 논리 프로세서가 있습니다. 비활성화하면 하나만있는 것입니다. (이것은 우리가 "CPU"의 의미를 지속적으로 제한하지 않고 스케줄러의 작동 방식에 대해 이야기 할 수있게합니다.) 어느 쪽이든, 논리 프로세서는 OS에서 프로세서로 인식되며 최적화 일정을 잡는 일부 시도를 제외하고는 OS는 하이퍼 스레딩에 의해 또는 하이퍼 스레딩으로 인해 다른 작업을 수행하지 마십시오.
LP 컨텍스트 전환에서 스레드로 전환 할 때부터 다른 스레드로 전환 할 때까지 해당 스레드에서 LP를 100 % 사용하는 것으로 간주됩니다. OS는 LP의 스레드가 코어의 10 % 또는 코어의 90 %를 사용하는지 또는 다른 LP의 스레드가 수행중인 작업으로 인해 완전히 정지되었는지 알 수있는 방법이 없습니다. OS는 실행 중이라고 생각합니다.
HT는 스레드 우선 순위와 같은 것을 구현하지 않습니다. 따라서 두 개의 스레드가 한 코어의 두 LP에서 실행하려고 시도하고 하나는 OS에서 다른 코어보다 우선 순위가 높은 것으로 설정되면 코어는 그것에 대해 아무것도 할 수 없습니다-알 수있는 방법이 없습니다. 코어는 두 스레드가 동일한 우선 순위를 갖는 것으로 간주하고 이에 따라 마이크로 아키텍처 리소스를 할당합니다.
* 최적화 : 최신 OS는 LP와 코어의 관계를 알고 있으며, 예를 들어 number_of_cores 이상의 스레드가 실행될 때까지 각 코어에서 하나의 LP 만 사용하려고 시도 합니다. 캐시 투자에 관한 한 코어의 두 LP는 동등한 것으로 간주됩니다. 기타
NTHREADS==2xNCORES
하면 사용 된 CPU 시간이 2 배이지만 작업이 2 배는되지 않습니다. 셋째 : HT가 비활성화되었을 때 코어의 FP 장치에 병목 현상이 발생한 경우 HT와 코어 당 2 개의 스레드를 사용하는 경우 총 FP 작업은 코어 당 1 개의 스레드와 거의 동일하지만 각 스레드는 FP의 절반 만 가져옵니다 thruput. 그러나 FP 성능은 메모리 액세스와 같은 FP 장치 이외의 요소에도 의존하므로 확실하지 않습니다.
NTHREADS == NCORES
논리 코어 시간 이 실제로 공유 할 수있는 실제 명령 양을 무시하고 CPU 시간으로 계산한다는 것입니다. 따라서 HT를 활성화 한 상태에서 소비 한 CPU 시간을 거의 두 배로 늘리고 (완전히) 공정한 큐잉의 경우 (LP) 코어 당 평균 FLOPS의 절반을 얻을 수 있습니까?