IO latency 에 달린 문제입니다.
가령 어떤 코드의 비용이
연산 3 입출력 3 클럭 이라면, 대략 물리 코어수의 2배의 쓰레드가 적합하죠.
연산 3 입출력 9 클럭 이라면, 대략 물리 코어수의 4배 정도의 쓰레드가 적합합니다.
이때 소프트웨어로 쓰레드간 스위칭하는 것 보다
하이퍼 쓰레딩이 더 효율적이거든요.
그러니깐, 하이퍼쓰레딩이 일방적으로 병렬화에 나쁜건 아니고,
IO latency 가 낮고 내부연산량만 많을때에 나쁜것이죠.
IO latency 에 달린 문제입니다.
가령 어떤 코드의 비용이
연산 3 입출력 3 클럭 이라면, 대략 물리 코어수의 2배의 쓰레드가 적합하죠.
연산 3 입출력 9 클럭 이라면, 대략 물리 코어수의 4배 정도의 쓰레드가 적합합니다.
이때 소프트웨어로 쓰레드간 스위칭하는 것 보다
하이퍼 쓰레딩이 더 효율적이거든요.
그러니깐, 하이퍼쓰레딩이 일방적으로 병렬화에 나쁜건 아니고,
IO latency 가 낮고 내부연산량만 많을때에 나쁜것이죠.
인공지능용 서버컴에 달아주면 딱이겠네요.