slurm 클러스터, 노드 대 코어의 Python 작업
나는 매우 기본적인 질문이 있는데 어떻게 든 답을 찾지 못했습니다. slurm을 실행하는 클러스터에 액세스 할 수 있고 클러스터에서 Python 작업을 실행해야한다고 가정 해 보겠습니다. 내 코드가 다중 처리를 지원하도록 작성 되지 않았다고 가정하겠습니다 . 다중 코어가 필요한 이유가 있습니까? 아니면 노드 1 개와 코어 1 개를 고수해야합니까?
반대로 동일한 스크립트 (예 : 다른 입력 변수 사용)를 5 번 실행하려는 경우 1 개의 노드가 필요한 것과 각 작업에 1 개의 코어를 할당하는 것과 각각 1 개의 코어가있는 5 개의 노드가 필요한 것 사이에 차이가 있습니까?
답변
파이썬 스크립트가 여러 스레드를 사용하지 않는 경우 예, 하나의 노드 ( ) 에 하나의 -n1CPU ( -c1) 가있는 하나의 작업 ( )을 고수해야합니다 -N1. 어쨌든 기본값이므로 지정할 필요가 없습니다. 더 많은 리소스를 요청하면 사용하지 않기 때문에 낭비됩니다.
그러나 : 일부 파이썬 라이브러리는 명시 적으로 지정할 필요없이 다중 스레드 계산을 수행하므로 numpy 계산을 수행 하면 다중 코어의 이점을 얻을 수 있습니다 .
반대로 동일한 스크립트 (예 : 다른 입력 변수 사용)를 5 번 실행하려는 경우 1 개의 노드가 필요한 것과 각 작업에 1 개의 코어를 할당하는 것과 각각 1 개의 코어가있는 5 개의 노드가 필요한 것 사이에 차이가 있습니까?
예, 있습니다 : 노드 당 1 개의 작업이있는 5 개의 노드에 대해 Slurm에 요청하면 5 개의 노드가 작업을위한 공간이있을 때까지 기다려야합니다. 예를 들어 CPU가 20 개인 노드가 완전히 비어 있어도 명시 적으로 5 개 노드를 요청 했으므로 작업이 실행되지 않습니다. 그래서 저는 -n1.