CPU는 몇 개이고 제출해야 하는 작업은 몇 개입니까?

CPU는 몇 개이고 제출해야 하는 작업은 몇 개입니까?

저는 컴퓨터(실제로는 여러 대)에서 과학적 계산을 하고 있는데 한 번에 몇 개의 과제를 제출해야 하는지 알고 싶습니다. lscpu는 다음을 표시합니다:

CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1

모호함은 "스레드"입니다. 나는 온라인으로 검색하여 관련 정보를 배웠습니다. 하지만 여전히 혼란스럽습니다. (제출한 작업 수에 따라 달라질 수 있습니다.) 나는 기계의 세부 사항에 관심이 없습니다. 예를 들어, 이제 실행 파일이 생겼습니다. 직접 실행하면 10분 정도 걸립니다. 이제 실행해야 할 항목이 800개 있다고 가정해 보겠습니다. 총 시간 비용을 줄이려면 한 번에 4개 또는 8개를 실행해야 합니까?

답변1

이 PC에 Intel CPU가 있는 경우코어당 스레드 수가장 확실한 것은 하이퍼스레딩입니다.

https://en.wikipedia.org/wiki/hyperthreading

물리적으로 존재하는 각 프로세서 코어에 대해 운영 체제는 두 개의 가상(논리) 코어를 처리하고 가능한 경우 이들 사이의 작업 부하를 공유합니다. 하이퍼스레딩의 주요 목적은 파이프라인의 독립적인 명령 수를 늘리는 것입니다. 이는 여러 명령이 별도의 데이터에 대해 병렬로 작동하는 수퍼스칼라 아키텍처를 활용합니다.

.

총 시간 비용을 줄이려면 한 번에 4개 또는 8개를 실행해야 합니까?

때에 따라 다르지. 하이퍼스레딩을 사용하면 일부 작업이 더 빠르게 실행되고 일부 작업은 그렇지 않습니다. 직접 테스트해 보아야 합니다.

이제 실행해야 할 항목이 800개 있다고 가정해 보겠습니다.

나는 이 문제를 처리하기 위해 GNU Parallel을 사용할 것입니다.

https://www.gnu.org/software/parallel/

GNU Parallel은 하나 이상의 컴퓨터를 사용하여 작업을 병렬로 실행하기 위한 쉘 도구입니다.

.처리해야 할 파일 목록이 있는 경우 다음 방법을 사용할 수 있습니다.

find . | parallel -j4 yourprogram

이전 테스트에서 하이퍼스레딩이 더 빠르게 실행되는 것으로 나타나면 "4"를 "8"로 변경합니다.

편집: 때때로 프로그램이 더 빠르게 실행된다는 점을 언급하는 것을 잊었습니다.장애를 입히다BIOS의 HT.

관련 정보