KR20230091834A - 멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당을 위한 시스템, 방법 및 컴퓨터 액세스가능 매체 - Google Patents

멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당을 위한 시스템, 방법 및 컴퓨터 액세스가능 매체 Download PDF

Info

Publication number
KR20230091834A
KR20230091834A KR1020227000997A KR20227000997A KR20230091834A KR 20230091834 A KR20230091834 A KR 20230091834A KR 1020227000997 A KR1020227000997 A KR 1020227000997A KR 20227000997 A KR20227000997 A KR 20227000997A KR 20230091834 A KR20230091834 A KR 20230091834A
Authority
KR
South Korea
Prior art keywords
information
tasks
computer
computing nodes
arrangement
Prior art date
Application number
KR1020227000997A
Other languages
English (en)
Inventor
베노이트 마첸드
Original Assignee
뉴욕 유니버시티 인 아부다비 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 뉴욕 유니버시티 인 아부다비 코포레이션 filed Critical 뉴욕 유니버시티 인 아부다비 코포레이션
Publication of KR20230091834A publication Critical patent/KR20230091834A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1036Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

복수의 태스크들을 복수의 컴퓨팅 노드들에 할당하기 위한 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는, 예를 들어 컴퓨팅 노드들에 관련된 제1 정보를 수신하는 것 - 제1 정보는 컴퓨팅 노드들 각각 내의 코어들의 수를 포함할 수 있음 -, 컴퓨팅 노드들 각각 내의 코어들의 수를 분리함으로써 제2 정보를 생성하는 것, 및 제2 정보에 기초하여 태스크들을 컴퓨팅 노드들에 할당하는 것을 포함할 수 있다. 제1 정보는 (i) 컴퓨터 노드들 각각 사이의 네트워크 접속의 거리, 및 (ii) 네트워크 접속의 대역폭을 더 포함할 수 있다. 제2 정보는 태스크들에 기초하여 생성될 수 있다. 제2 정보는 태스크들의 차원들의 수에 기초하여 생성될 수 있다. 태스크들은 노드들 사이의 통신들의 수의 최소화에 기초하여 할당될 수 있다.

Description

멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당을 위한 시스템, 방법 및 컴퓨터 액세스가능 매체
관련 출원들에 대한 상호 참조
본 출원은 2019년 6월 12일자로 출원된 미국 특허 출원 제62/860,480호, 및 2019년 12월 12일자로 출원된 미국 특허 출원 제62/947,375호와 관련되고 그들로부터 우선권을 주장하며, 그 전체 개시들은 본 명세서에 참조로 통합된다.
개시의 분야
본 개시는 일반적으로 멀티코어 처리(multicore processing)에 관한 것으로, 보다 구체적으로는, 멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당(domain decomposition aware processor assignment)을 위한 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체의 예시적인 실시예들에 관한 것이다.
2007년과 2018년 사이에, 고성능 컴퓨팅("HPC")에서 사용되는 프로세서 설계들은 프로세서당 4개의 코어(core)에서 28개의 코어로 증가하였고, 상호접속 대역폭(interconnect bandwidth)은 약 1 Gbps에서 약 100 Gbps로 증가하였다. 그러나, 2018년 중반 이후, 프로세서 코어 카운트를 64개(예를 들어, 듀얼-프로세서 컴퓨트 노드(compute node)당 128개의 코어)까지 증대시키는 새로운 혁신적 프로세서 설계들이 있어왔다. 이러한 새로운 프로세서 설계들은 컴퓨팅 비용을 상당히 감소시켜, 더 큰 경제적 효율을 제공한다. 불행하게도, 상호접속 기술들은 프로세서 가격 및 성능 개선들을 따르지 못한다.
프로세서당 코어들의 수가 증가함에 따라, 프로세서들과 컴퓨터들 사이의 통신을 스케일링(scale)할 필요성도 증가한다. 멀티-레일 상호접속 포트들의 사용은 노드들 사이에서 데이터를 전송하기 위해 1개보다 많은 상호접속 링크를 용이하게 함으로써 Ethernet, OmniPath, 및 Mellanox Infmiband 등의 스케일링을 용이하게 할 수 있다. 불행하게도, 이것은 상호접속 기반구조 크기 및 비용의 2배, 3배 또는 심지어 4배를 요구한다. 따라서, 이것은 큰 코어 카운트 프로세서 시스템들의 가격 이점을 감소시키거나 무효화한다.
실제로, 상호접속 케이블에 의해 유지되는 대역폭을 2배로 하기 위해, 광섬유들 또는 구리 케이블들의 수가 2배가 되어야 한다. 이것은 프로세서 코어 비용을 기하급수적으로 감소시키지만 상호접속 패브릭(interconnect fabric)의 비용을 기하급수적으로 증가시킨다.
상호접속 성능에 대한 대안으로서, 데이터를 교환할 가능성이 있는 메시지 전달 인터페이스(Message Passing Interface)("MPI") 프로세스들이 가능한 한 동일 노드 상에 병치(co-located)되는 참조의 공간 지역성(spatial locality of reference)을 사용하여 프로세스간 통신 성능이 수정될 수 있다. 작업부하 관리자들(Workload managers)(예컨대, SLURM, PBS, Torque, SGE, LSF 등)은 프로세스 배치 정책들에 대한 제한된 지원을 가지며, 이들 중 어느 것도 효율적인 그리드 토폴로지들(grid topologies)을 구현하지 못한다. MPI의 경우, 프로세스들의 배치가 작업부하 관리자에 맡겨질 수 있지만, OpenMPI는 사용자 제공 랭크 파일들(user-supplied rank files)을 통해 그러한 배치를 수동으로 번복(override)하는 능력을 제공할 수 있다. 그러나, Hewlett-Packard Enterprise로부터의 독점 기술인 CrayPAT는 그의 사용을 제한하는 주요 제한들과 함께 2D 및 3D 그리드 토폴로지들을 지원하는 그의 독점 MPI 구현 내에 프로세스 배치 메커니즘을 통합한다.
빠르게 진화하는 혁신적인 프로세서 설계들은 HPC 시스템들이 점점 더 이종(heterogeneous) 프로세서 기술들로 구성되고 있다는 것을 의미한다. 현재, 이종 시스템들에 걸쳐 통신들을 최적화하는 프로세스 배치 기술은 아마도 미지의 상태로 남아 있다. 특히, 기존의 MPI 프로세스 배치 메커니즘들은 정적(static)이다. 따라서, 이들은 컴퓨트 노드 구성들, 및 초기 프로세스 배치 매핑을 미리 알아야 한다. 이 제한은 시스템 이용을 최적화하기 위한 작업부하 관리 도구들의 능력을 방해한다. 또한, 기존의 MPI 프로세스 배치 메커니즘들은 버전 특정적(version specific)이고; 이러한 특징을 이용하기 위해, 사용자들은 그들의 애플리케이션들을 이러한 특정 MPI 버전들에 이식(porting)해야 한다.
그리드 토폴로지 프로세스 배치를 지원하기 위한 유일한 MPI 프로세스 배치 메커니즘인 CrayPAT는 2차원(2D) 및 3차원(3D) 통신 패턴들로 제한될 수 있고, 다중 프로그램 다중 데이터("MPMD") 프로그래밍 패러다임들, 또는 이종 컴퓨트 노드 구성들을 지원하지 않는다.
따라서, 멀티코어 처리 시스템들에서의 프로세서 할당을 위한 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체를 제공하는 것이 유익할 수 있고, 이는 위에서 설명된 결함들 중 적어도 일부를 해결 및/또는 극복할 수 있다.
따라서, 본 개시의 예시적인 실시예들에 따른 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체는 복수의 컴퓨팅 노드들에 복수의 태스크들을 할당하기 위해 제공될 수 있다. 예를 들어, 컴퓨팅 노드들과 관련된 제1 정보를 수신하는 것이 가능하고, 제1 정보는 컴퓨팅 노드들 각각 내의 코어들의 수를 포함할 수 있다. 또한, 제2 정보는 컴퓨팅 노드들 각각 내의 코어들의 수를 분리하고, 제2 정보에 기초하여 태스크들을 컴퓨팅 노드들에 할당함으로써 생성될 수 있다. 제1 정보는 비전면적으로(non-exhaustively), (i) 네트워크 접속 컴퓨터 노드들의 거리, (ii) 네트워크 접속의 대역폭, 및 (iii) 네트워크 접속의 근접성(proximity)(예를 들어, 노드내의 버스 위치)을 더 포함할 수 있다. 제1 정보는 가장 가까운 이웃 노드(들)까지의 거리를 더 포함할 수 있다. 제2 정보는 비전면적으로, 태스크들의 차원들(dimensions)의 수, 또는 태스크들 간의 통신 패턴들 또는 통계들의 임의의 다른 선험적 지식에 기초하여 생성될 수 있다. 태스크들은 노드간 통신들의 수의 최소화에 기초하여 할당될 수 있다.
본 개시의 일부 예시적인 실시예들에서, 태스크들 중 적어도 하나와 연관된 문제 특성(들)(problem characteristic(s))에 관련된 정보가 획득될 수 있고, 태스크들은 문제 특성(들)에 기초하여 컴퓨팅 노드들에 할당될 수 있다. 문제 특성(들)은 (i) 그리드 내의 차원들의 제1의 수, (ii) 그리드의 축 내의 차원들의 제2의 수, 또는 (iii) 메시지 전달 인터페이스 프로세스에서의 그리드의 포인트들의 제3의 수를 포함할 수 있다. 문제 특성들은 다차원(multi-dimensional)일 수 있다. 예를 들어, 축을 따른 차원은 이 축을 따른 통신과 연관된 백분율 또는 가중치(weight)의 부가에 의해 더 특성화될 수 있다. 최적의 서브그리드 레이아웃(sub-grid layout)은 문제 특성(들)에 기초하여 결정될 수 있고, 태스크들은 최적의 서브그리드 레이아웃에 기초하여 할당될 수 있다. 태스크들은 메시지 전달 인터페이스 프로세스들일 수 있다. 컴퓨팅 노드들에 대해 컴퓨팅 토폴로지가 결정될 수 있다. 제2 정보는 컴퓨팅 토폴로지의 결정 후에 생성될 수 있다.
본 개시의 소정의 예시적인 실시예들에서, 컴퓨팅 토폴로지의 변경과 관련된 제3 정보가 결정될 수 있고, 제4 정보는 제3 정보에 기초하여 코어들의 수를 분리함으로써 생성될 수 있고, 태스크들은 제3 정보 및 제4 정보에 기초하여 재할당될 수 있다. 컴퓨팅 노드들은 폴링(poll)될 수 있고, 제1 정보는 폴링에 기초하여 생성될 수 있다. 제2 정보가 생성될 수 있고, 태스크들은 작업부하 관리자를 사용하여 할당될 수 있다. 컴퓨팅 노드들에 대한 태스크들의 할당을 시뮬레이션하는 것을 포함할 수 있는 시뮬레이션(들)이 수행될 수 있고, 태스크들은 시뮬레이션(들)에 기초하여 할당될 수 있다. 시뮬레이션(들)은 애플리케이션 통계(들)(application statistic(s))에 기초하여 수행될 수 있으며, 애플리케이션 통계(들)는 이전 시뮬레이션(들)으로부터의 통계들을 포함할 수 있다.
본 개시의 예시적인 실시예들의 이들 및 다른 목적들, 특징들 및 이점들은 첨부된 청구항들과 함께 취해질 때 본 개시의 예시적인 실시예들의 다음의 상세한 설명을 읽으면 명백해질 것이다.
본 개시의 추가적인 목적들, 특징들 및 이점들은 본 개시의 예시적인 실시예들을 도시하는 첨부 도면들과 함께 얻어지는 아래의 상세한 설명으로부터 명백해질 것이다. 도면들에서:
도 1은 본 개시의 예시적인 실시예에 따른 멀티코어 시스템들 상의 프로세스들 사이의 통신을 최적화하기 위한 예시적인 시스템의 예시적인 도면이다.
도 2는 본 개시의 예시적인 실시예에 따른 도 1에 도시된 컴포넌트 A1(예컨대, 컴퓨트 노드 정보)을 복수의 서브컴포넌트로 분할하기 위한 예시적인 시스템의 예시적인 도면이다.
도 3은 본 개시의 예시적인 실시예에 따른 도 1에 도시된 컴포넌트(예컨대, 애플리케이션 정보)를 복수의 서브컴포넌트로 분할하기 위한 시스템의 예시적인 도면이다.
도 4는 본 개시의 예시적인 실시예에 따른 도 1에 도시된 컴포넌트(예컨대, 통신 관리)를 복수의 서브컴포넌트로 분할하기 위한 방법의 예시적인 흐름도이다.
도 5는 본 개시의 예시적 실시예에 따른 작업부하 관리자 유틸리티와 인터페이스하기 위한 예시적 방법의 예시적 흐름도이다.
도 6은 본 개시의 예시적인 실시예에 따른 다양한 실행 시나리오들에 대한 선험적 데이터 교환 추정들(priori data exchange estimations)을 제공하기 위한 예시적인 시스템의 예시적인 도면이다.
도 7은 본 개시의 예시적인 실시예에 따른 2차원 프로세스 데이터 그리드의 예시적인 도면이다.
도 8은 본 개시의 예시적인 실시예에 따른 도 7에 도시된 2차원 데이터 그리드의 관련 디폴트 MPI 프로세스 배치의 예시적인 도면이다.
도 9는 본 개시의 예시적인 실시예에 따른 도 8에 도시된 프로세스 배치를 위한 노드내(intra-node) 및 노드간(inter-node) 통신들을 예시하는 예시적인 도면이다.
도 10은 본 개시의 예시적인 실시예에 따른 개선된 MPI 프로세스 배치를 나타내는 도 7로부터의 데이터 그리드를 예시하는 예시적인 도면이다.
도 11은 본 개시의 예시적인 실시예에 따른 컴포넌트로서의 실제 MPI 프로세스 ID의 가상 MPI 프로세스 ID로의 프로세스 배치 최적화 매핑을 예시하는 예시적인 도면이다.
도 12는 본 개시의 예시적인 실시예에 따른 도 11에 도시된 프로세스 배치를 위한 노드내 및 노드간 통신들을 예시하는 예시적인 도면이다.
도 13은 본 개시의 예시적인 실시예에 따른 최적화된 MPI 프로세스 배치를 나타내는 데이터 그리드를 예시하는 추가적인 예시적인 도면이다.
도 14는 본 개시의 예시적인 실시예에 따른 도 13에 도시된 프로세스 배치를 위한 노드내 및 노드간 통신들을 예시하는 예시적인 도면이다.
도 15는 본 개시의 예시적인 실시예에 따른 비동종(non-homogeneous) 컴퓨트 노드들을 위한 노드내 및 노드간 통신들을 예시하는 예시적인 도면이다.
도 16a 내지 도 16c는 본 개시의 예시적인 실시예에 따른 다양한 서브그리딩 방법들 사이의 노드내 및 노드간 통신들을 예시하는 예시적인 도면들이다.
도 17은 본 개시의 예시적인 실시예에 따른 예시적인 절차를 사용하는 서브그리딩의 최적화를 예시하는 예시적인 도면이다.
도 18은 본 개시의 예시적인 실시예에 따른 복수의 태스크들을 복수의 컴퓨팅 노드들에 할당하기 위한 방법의 예시적인 흐름도이다.
도 19는 본 개시의 특정 예시적인 실시예들에 따른 예시적인 시스템의 예시적인 블록도의 예시이다.
도면들 전반에 걸쳐, 동일한 참조 번호들 및 문자들은, 달리 언급되지 않는 한, 예시된 실시예들의 유사한 특징들, 요소들, 컴포넌트들, 또는 부분들을 나타내기 위해 사용된다. 더욱이, 본 개시가 이제 도면들을 참조하여 상세히 설명될 것이지만, 이는 예시적인 실시예들과 관련하여 그렇게 행해지며, 도면들 및 첨부된 청구항들에 예시된 특정 실시예들에 의해 제한되지 않는다.
예시적인 용어
다음의 예시적이고 비제한적인 정의들이 본 명세서에 설명된 예시적인 실시예들과 함께 사용될 수 있다.
예를 들어, "컴퓨트 노드"라는 용어는 공유 메모리, 프로세서 버스, Ethernet, Infmiband 등과 같은 통신 디바이스에 의해 다른 컴퓨팅 디바이스들과 데이터를 교환하도록 구성되는 컴퓨팅 디바이스를 지칭할 수 있다. 따라서, 예를 들어, 단일 프로세서 내에서 메모리 캐시에 의해 접속되는 프로세서 코어들의 그룹들은 "컴퓨트 노드들"일 수 있다. 시스템 버스 또는 다른 통신 디바이스에 의해 접속되는 공유 메모리 컴퓨터 내의 독립적 프로세서들은 또한 "컴퓨트 노드들"일 수 있다. 또한, 상호접속 패브릭에 의해 접속되는 컴퓨터들은 "컴퓨트 노드들"일 수 있다. 컴퓨팅 디바이스의 예시적인 정의는 부동 소수점 유닛(floating point unit), 그래픽 처리 유닛, 필드 프로그래머블 게이트 어레이, 및 메모리 상주 프로세서들과 같은, 그러나 이들로 한정되지 않는 가속기들(accelerators)을 또한 포함할 수 있지만, 이들로 한정되지 않는다.
"노드간 통신"은 컴퓨트 가능 디바이스들 간의 데이터의 교환을 지칭할 수 있다.
"노드내 통신"은 컴퓨팅 디바이스 내에서 발생하는 데이터의 교환을 지칭할 수 있다.
"헤일로 통신 패턴들(Halo communication patterns)" 및 "데카르트 통신 패턴들(Cartesian communication patterns)"은 교환 가능하게 사용될 수 있다. 그러한 예시적인 통신 패턴들은 데카르트 그래프 상에서와 같이 그리드(grid)(예로서, 하나 이상의 차원) 상에 있는 이웃들과의 통신을 포함할 수 있다. 이웃들은 하나 이상의 차원에서 1 그리드 요소보다 더 멀리 떨어져 있을 수 있다(예를 들어, 대각선 이웃들(diagonal neighbors)).
"메시지 전달 인터페이스(MPI)"는 프로세스들 간의 정보의 교환을 포함할 수 있는 임의의 적절한 도구, 구성 및/또는 시스템일 수 있다. 그러나, 본 개시는 MPI 표준으로 한정되지 않으며, 예를 들어 데이터 전송을 개시하기 위한 사용자 호출 가능 함수(user-callable function) 또는 공유 메모리를 사용하는 다른 형태의 메시지 전달에도 적용될 수 있다.
예시적인 MPI 구현들은 OpenMPI(예로서, 참고문헌 23 참조), MPICH(예로서, 참고문헌 25 참조), MVAPICH(예로서, 참고문헌 24 참조), Cray MPT(예로서, 참고문헌 29 참조), HPE MPI(예로서, 참고문헌 30 참조), Intel MPI(예로서, 참고문헌 31 참조) 및 IBM MPI(예로서, 참고문헌 32 참조)를 포함할 수 있다. 본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 임의의 MPI 구현에 적용되거나 이를 이용할 수 있다.
"병렬 가상 머신(Parallel Virtual Machine)"(예를 들어, 참고문헌 28 참조)은 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체와 함께 또는 그들에 의해 사용될 수 있는 추가적인 메시지 전달 툴킷일 수 있다.
Linux/UNIX 소켓 통신과 같은, 그러나 이에 한정되지 않는 다른 데이터 교환 메커니즘들도 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체에 포함되거나 그들에 의해 사용될 수 있다. OpenSHMEM(예로서, 참고문헌 26 참조) 통신(예로서, 명시적(explicit) 공유 메모리 데이터 교환), OpenMP(예로서, 참고문헌 28 참조)(예로서, 암시적(implicit) 공유 메모리 데이터 교환) 및 다른 적절한 데이터 교환 메커니즘들이 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체에 통합되거나 그들에 의해 사용될 수 있다.
용어 MPI 랭크, MPI 스레드, MPI 프로세스, 태스크들, 및 프로세스는 컴퓨팅 가능 디바이스 상에서 실행되는 임의의 실행파일(executable)을 식별하기 위해 교환 가능하게 사용될 수 있다. 실행파일 자체는 프로그램 컴파일로 인한 하나의 소프트웨어일 뿐만 아니라, 처리 디바이스 내에 내장된 기계 언어 함수(machine language function), 또는 컴퓨팅 디바이스에 의해 프로그래밍가능 기능을 실행하는 임의의 다른 메커니즘일 수 있다. 프로세스들은 프로세서 코어, 다수의 프로세서 코어 - 잠재적으로 둘 이상의 프로세서에 걸쳐 있음 -, 및 프로세서 스레드들과 같은 프로세서 코어들의 서브컴포넌트들을 동등하게 사용할 수 있다.
"작업부하 관리 시스템(Workload Management System)"은 이용 가능한 컴퓨팅 디바이스들이 프로세스들을 실행하도록 선택될 수 있는 적합한 메커니즘일 수 있다. 예를 들어, SGE(예를 들어, 참고문헌 14 참조), LSF(예를 들어, 참고문헌 16 참조), PBS(예를 들어, 참고문헌 17 및 18 참조), Condor(예를 들어, 참고문헌 20 참조), LoadLeveler(예를 들어, 참고문헌 22 참조), Torque(예를 들어, 참고문헌 9 참조), Moab(예를 들어, 참고문헌 19 참조), SLURM(예를 들어, 참고문헌 23 참조) 등은 컴퓨트 클러스터들 상에서 이러한 기능을 수행하기 위해 일반적으로 사용될 수 있다. 이러한 예시적인 메커니즘은 또한 수동 컴퓨트 노드들 및/또는 프로세서 코어 선택들에 의해 제공될 수 있다. 이러한 메커니즘은 본 개시의 실시예에 대한 요건이 아니며: 프로세스들은 정적으로 할당될 수 있고, 그들의 매핑은 본 개시의 동작을 통해 최적화될 수 있다.
본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 컴퓨팅 토폴로지 내의 특정 노드들에 태스크들을 할당하는 데 사용될 수 있다. 예를 들어, 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 컴퓨팅 토폴로지에서 이용 가능한 자원들을 분석하고, 이용 가능한 자원들에 구체적으로 기초하여 태스크들을 할당할 수 있다. 컴퓨팅 토폴로지는, 예를 들어 노드들(예로서, 컴퓨터들)의 수, 노드당 처리 코어들의 수, 노드들 간의 네트워크 거리 및 네트워크의 대역폭을 포함할 수 있다. 그리고, 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 노드당 처리 코어들의 수에 기초하여 각각의 노드를 세분(subdivide)할 수 있다. 이것은 MPI 프로세스들을 컴퓨트 노드들 상으로 디스패치하기 전에, 또는 컴퓨팅 토폴로지가 먼저 확립될 수 있을 때(예로서, MPI 프로세스들이 이 목적을 위해 할당된 컴퓨트 노드들 상에서 인스턴스화(instantiate)되었을 때) 수행될 수 있고, 컴퓨팅 토폴로지에 대한 변경들에 기초하여 주기적으로 업데이트될 수 있다. 대안으로서 또는 추가로, 수행되는 태스크가 분석될 수 있고, 노드들은 수행되는 태스크에 구체적으로 기초하여 분할될 수 있다.
본 개시의 예시적 실시예에 따른 예시적 시스템, 방법, 및 컴퓨터 액세스가능 매체는 작업부하 관리자 유틸리티 및 MPI 라이브러리를 관리하기 위한 절차들을 포함할 수 있다. MPI 라이브러리는, 예를 들어 임의의 메시지-전달 라이브러리, 병렬 가상 머신, 원격 직접 메모리 액세스 라이브러리, 소켓 기반 메커니즘(예를 들어, 유닉스 소켓), 2개의 실행중인 프로세스들 사이에서 암시적으로 또는 명시적으로 데이터를 교환하는데 이용되는 임의의 라이브러리(그들이 메모리를 공유하든, 각각이 자신의 개인 가상 메모리 주소 공간을 소유하든), 및 최종 사용자 애플리케이션 자체뿐만 아니라, 시밍된 통신 라이브러리들(shimmed communication libraries)(예를 들어, 다른 라이브러리 호출들을 인터셉트하여 그들의 기능을 변경하는 라이브러리들)을 포함할 수 있다.
각각의 노드가, 예를 들어 노드당 처리 코어들의 수에 기초하여 세분될 때, 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체는 각각의 노드에 특정 태스크들을 할당할 수 있다. 태스크들은 2개 이상의 프로세서 코어에 걸칠 수 있다. 노드들은 수행되고 있는 태스크에 기초하여 할당될 수 있고, 이는 노드당 코어들의 수는 물론, 특정 노드와 태스크를 수행하는 데 필요할 수 있는 가장 가까운 노드들 사이의 거리를 고려하는 것을 포함할 수 있다. 모든 노드들이 할당될 수 있으면, 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체는 각각의 노드에 수행될 특정 태스크를 제공할 수 있다.
본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는, 예를 들어 (i) 컴퓨터 노드당 프로세서 코어들의 수에 관한 정보를 획득하고, (ii) 애플리케이션의 문제 특성들(예를 들어, 그리드에서의 차원들의 수, 모든 그리드 축에서의 차원들, 및/또는 MPI 프로세스당 그리드 포인트들의 수)에 관한 정보를 획득하고, (iii) 컴퓨터 노드당 최적의 서브그리드 레이아웃을 결정하기 위해 상기 정보를 이용하고, (iv) 실행을 위해 이용되는 프로세서 노드들의 수를 결정하기 위해 상기 절차들 (i)-(iii)의 결과들을 이용할 수 있다. 문제 특성들은 다차원일 수 있다. 예를 들어, 축을 따른 차원은 이 축을 따른 통신과 연관된 백분율 또는 가중치의 부가에 의해 더 특성화될 수 있다.
도 1은 본 개시의 예시적인 실시예에 따른 멀티코어 시스템들 상의 프로세스들 사이의 통신을 스케일링하기 위한 예시적인 시스템(100)의 예시적인 도면을 도시한다. 예를 들어, 컴퓨트 노드 정보(105)가 획득되고 서브그리딩 최적화 모듈(Sub-gridding Optimization Module, 110)로 전달될 수 있다. 최적화된 서브그리딩 정보는 프로세스 배치 최적화 모듈(Process Placement Optimization module, 120)로 전달될 수 있다. 애플리케이션 정보(115)가 획득되고 프로세스 배치 최적화 모듈(120)로 전달될 수 있다. 결정된 최적의 프로세스 배치는 통신 관리 모듈(Communication Management module, 125)로 전달될 수 있다. 통신 관리 모듈(125)은 예시적인 데이터 교환(Data Exchange, 135)과 인터페이스할 수 있고, 통신 정보를 통계 출력 모듈(Statistics Output module, 130)로 전달할 수 있다.
서브그리딩 모듈(110) 및 프로세스 배치 최적화 모듈(120)은 함께 또는 서로 독립적으로 사용될 수 있다. 추가적으로, 각각의 절차는 (i) 독립형 유틸리티(standalone utility)로서, (ii) 작업부하 관리자의 프로세스 바인딩(process binding), 분배(distribution), 배치(placement) 등의 메커니즘 내에 통합되어, (iii) 애플리케이션들을 실행하기 전에 유틸리티에 의해 호출된 작업부하 관리자 유틸리티에 대한 플러그-인 모듈로서, (iv) MPI 라이브러리에 의해, (v) 최종 사용자 애플리케이션들에 의해 호출된 독립적인 라이브러리로서, 그리고/또는 (vi) 최종 사용자 애플리케이션에 통합되어 구현될 수 있다.
도 2는 본 개시의 예시적인 실시예에 따른 도 1에 예시된 컴퓨트 노드 정보(105)를 복수의 서브컴포넌트들로 분할하기 위한 예시적인 시스템(200)의 예시적인 도면을 도시한다. 컴퓨트 노드 정보(110)는, 적절한 서브그리딩 솔루션을 결정하는 데 사용될 수 있는 문제 관련 특성들(problem related characteristics), 또는 동작하는 방법에 관한 정보를 포함하는 애플리케이션-제공 정보(Application-Supplied information, 205)를 사용하고, (i) 사용자 제공 정보(User Supplied information, 210), (ii) 시스템 구성 정보(System Configuration information, 215)(예를 들어, 작업부하 관리 유틸리티에 의해 유지되는 정보), 또는 (iii) MPI 프로세스들이 디스패치되면 컴퓨트 노드들을 폴링함으로써 획득될 수 있는 실시간 획득 정보(Real-Time Acquired information, 220), 또는 컴퓨트 노드 구성들, 상호접속 구성 등에 관한 정보를 제공할 수 있는 임의의 다른 적절한 메커니즘을 사용하여, 획득될 수 있다. 이 정보는 서브그리딩 최적화 모듈(110)로 전달될 수 있고, 이어서 서브그리딩 최적화 모듈(110)은 프로세스 배치 최적화 모듈(120)로 진행하여, 동작 환경에 기초하여 노드간 통신들을 최소화할 수 있는 예시적인 서브그리딩 솔루션을 결정할 수 있다.
도 3은 본 개시의 예시적인 실시예에 따른 도 1에 예시된 컴포넌트(예로서, 애플리케이션 정보(115))를 복수의 서브컴포넌트로 분할하기 위한 시스템의 예시적인 도면을 도시한다. 최적 프로세스 배치를 결정하는 데 사용될 수 있는 애플리케이션 관련 정보는 (i) 사용자 제공 거리 데이터(User-Supplied Distance Data, 305), (ii) 사용자 제공 거리 함수(User-Supplied Distance Function, 110), (iii) 애플리케이션 통계(115) 및 (iv) 애플리케이션 정보(320)를 이용하는 것과 같은, 그러나 이에 한정되지 않는 다양한 적절한 절차들을 통해 획득될 수 있다. 이 정보는 프로세스 배치 최적화 모듈(120)로 전달될 수 있다. 사용자 제공 거리 데이터(305)는, 예를 들어 통신 MPI 프로세스들 간의 MPI 랭크 위치 차이(rank position difference)를 지정할 수 있는 수치 표현들(numerical expressions)(예로서, 숫자)을 포함할 수 있는 반면, 사용자 제공 함수(310)는 예시적인 수학 함수를 통해 통신 MPI 프로세스들의 MPI 랭크 위치 차이를 나타낼 수 있다. 이전 실행들로부터 유래될 수 있는 애플리케이션 통계(315)는, 예를 들어 MPI 프로세스 통신 교환들의 보급(prevalence)을 결정하기 위해 재사용될 수 있고, 애플리케이션 정보(320)는 프로세스 배치 최적화 모듈(120)에 예상 통신 교환들(expected communication exchanges)에 대한 정보를 제시할 수 있다.
도 4는 데이터 교환 메커니즘(예로서, MPI)과 별개로 구현될 수 있는 본 개시의 예시적인 실시예에 따른 도 1에 예시된 컴포넌트(예로서, 통신 관리(125))를 복수의 서브컴포넌트로 분할하기 위한 시스템(400)의 예시적인 도면을 도시한다. MPI 도구 내에서 구현되는 경우, 통신 관리 모듈(125)은 필요하지 않을 수 있다. 본 개시의 예시적인 실시예에서, 통신 관리(125)는 (i) 통신 제어 모듈(Communication Control module, 405), (ii) 데이터 교환 트랩 모듈(Data Exchange Trap module, 410), (iii) 데이터 교환 인터셉트 모듈(Data Exchange Intercept module, 415), (iv) 데이터 교환 리라우팅 모듈(Data Exchange Rerouting module, 420), (v) 통계 수집 모듈(Statistics Gathering module, 425) 및 (vi) 데이터 교환 스로틀링 모듈(Data Exchange Throttling module, 430)과 같은, 그러나 이에 한정되지 않는 다수의 서브시스템으로 분할될 수 있다.
통신 제어 모듈(405)은 프로세스 배치 최적화(120)에서 획득된 프로세스 배치에 관한 정보를 수신할 수 있고, (예를 들어, 기본 데이터 교환 메커니즘의 기능을 사용하여) 새로운 MPI 프로세스 매핑을 셋업할 수 있다. 기본 MPI 도구(예를 들어, 데이터 교환 메커니즘)와 별도로 동작하기 위해, 통신 제어 모듈(405)은 데이터 교환 트랩 모듈(410)을 셋업하여 미래의 MPI 호출들이 데이터 교환 인터셉트 모듈(415)에서 인터셉트되게 할 수 있다. MPI 데이터 교환이 데이터 교환 인터셉트 모듈(415)에서 인터셉트될 수 있으면, 통계 수집 모듈(425)은 다양한 통계를 기록하기 위해 사용될 수 있고, 데이터 교환 요청은 데이터 교환 리라우팅 모듈(420)로 전송될 수 있다. 데이터 교환 리라우팅 모듈(420)에 의해 수행되는 예시적인 리라우팅 절차는 서브그리딩 최적화 모듈(110)로부터의 출력을 사용하여 MPI 프로세스의 위치를 결정할 수 있다. 데이터 교환 리라우팅 모듈(420)에 의해 수행되는 리라우팅 프로세스는 또한 통계 출력 모듈(130)로부터의 통신 통계를 로깅(log)할 수 있다. 데이터 교환 라우팅이 완료된 후에, 데이터 교환은 데이터 교환 스로틀링 모듈(430)에 의해 스로틀링을 수행하기 위해 사용될 수 있는 데이터 교환(435)으로 전달될 수 있다. 기간 동안 컴퓨트 노드 상의 상호접속을 통과하는 데이터의 양을 측정함으로써 더 낮은 성능의 상호접속의 성능을 모방하고, 더 느린 상호접속의 성능을 시뮬레이션하도록 메시지들을 지연시키기 위해 예시적인 스로틀링 메커니즘이 추가될 수 있다.
예시적인 통계 수집 모듈(425) 실시예는, 예를 들어, 전부는 아니지만, MPI 피어들 사이에 전달되는 메시지의 수, MPI 피어들 사이에 전달되는 데이터의 총량 및 MPI 피어들 사이의 데이터 교환의 빈도(예를 들어, MBytes/초)를 추적할 수 있다. 이 정보는, 예를 들어 MPI 프로세스들 또는 컴퓨트 노드들 사이의 트래픽 패턴들을 결정하는 데 사용될 수 있다.
이하는, 예시적인 통계 수집 모듈(425)을 통해 생성될 수 있는 통계 출력(130) 정보의 예이다. 여기서, 1024개의 MPI 프로세스들은 각각 64개의 코어를 갖는 16개의 컴퓨트 노드들 상에 확산되었다는 것을 알 수 있다. 호스트 #0은 총 69672 MBytes의 노드간 트래픽에 대해 32083 MBytes를 다른 노드들로 전송한 반면, 다른 노드들로부터 37679 MBytes를 수신하였고, 그 동안 노드내 트래픽은 953 GBytes였다. 또한, 컴퓨트 노드 0에 상주하는 MPI 랭크 #2는 (또한 노드 0에 상주하는) MPI 랭크 #34와 2,317,306,272 Bytes를 교환했다는 것을 알 수 있다.
Figure pct00001
예시적인 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)은 작업부하 관리자 내에서 구현 및/또는 이용될 수 있다. 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)은 (i) 토폴로지 또는 프로세스 분배 또는 프로세스 바인딩 메커니즘들과 통합될 수 있고/있거나 (ii) 사전 실행 플러그인 모듈(pre-execution plug-in module)의 일부일 수 있다. 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)이 작업부하 관리자 내부 메커니즘들과 통합되는 경우, 이용되는 컴퓨터 노드들의 수는 작업 제출 시간(job submission time)에 작업부하 관리자에 의해 결정될 수 있다. 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)이 사전 실행 플러그인 모듈로서 통합되는 경우, 이용되는 컴퓨터 노드들의 수는 작업 제출 시간에 사용자에 의해 설정될 수 있고, 작업부하 관리자 유틸리티에 의해 더 낮게 조정될 수 있다.
도 5는 본 개시의 예시적인 실시예에 따른 작업부하 관리자 유틸리티와 인터페이스하기 위한 예시적인 시스템(500)의 예시적인 도면을 도시한다. 도 5에 도시된 바와 같이, 컴퓨트 노드 정보 모듈(105), 서브그리딩 최적화 모들(110), 애플리케이션 정보 모듈(115), 및 프로세스 배치 최적화 모듈(120)은 작업부하 관리 유틸리티와 함께 사용되거나, 유틸리티 내에 유틸리티에 대한 플러그인 모듈로서 통합되거나, 유틸리티 외부에 있을 수 있다. 또한, 사용자가 (i) 작업부하 관리자에, (ii) 작업부하 관리자 유틸리티에, (iii) MPI 라이브러리에, (iv) 공통 행 인자(common line argument), 파라미터들, 환경 변수들을 통해 최종 사용자 애플리케이션에, 그리고/또는 (v) 독립형 도구로서 제공할 수 있는 정보를 생성할 수 있는 독립형 도구 및/또는 시스템으로서 본 개시의 예시적인 실시예를 구현하는 것이 가능하다.
서브그리딩 최적화 모듈(110) 및 프로세스 배치 매핑 최적화 모듈(120) 각각은 함께 또는 서로 독립적으로 구현될 수 있고/있거나, (i) 작업부하 관리자 도구에, (ii) MPI 라이브러리 도구에, (iii) 애플리케이션 프로그램 인터페이스("API")로서, 또는 (iv) 다른 메커니즘에 통합되어, 다른 소프트웨어 도구들 및 애플리케이션들의 기능을 향상시킬 수 있다.
추가적으로, 서브그리딩 최적화 모듈(110) 및 프로세스 배치 매핑 최적화 모듈(120)은, 작업부하 관리자 유틸리티, MPI 라이브러리도, 최종 사용자 애플리케이션도 어떠한 수정도 필요로 하지 않도록 SLURM의 랭크파일 메커니즘과 같은 최적화된 프로세스 배치 파일을 생성하기 위해 독립형 도구들 또는 시스템들로서 사용될 수 있다.
컴퓨트 노드 정보 모듈(105), 서브그리딩 최적화 모듈(110), 애플리케이션 정보 모듈(115), 프로세스 배치 최적화 모듈(120), 및 통계 출력 모듈(130)은 독립형 시스템에서 구현되고, 예를 들어 도 6에 도시된 통계 시뮬레이션 모듈(605)과 함께, 이전에 기록된 애플리케이션 통계를 이용하여 선험적으로 시뮬레이션 및 성능 추정을 용이하게 할 수 있다. 따라서, 사용자들은 목표 구성에서 애플리케이션을 재실행할 필요 없이 다양한 노드 및 상호접속 구성들을 이용하는 것의 영향을 추정할 수 있다.
도 7 내지 도 9는 본 개시의 예시적인 실시예에 따른 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)의 동작(들)의 예시적인 도면들을 도시한다.
특히, 도 7은 본 개시의 예시적인 실시예에 따른 2차원 프로세스 데이터 그리드(700)의 예시적인 도면을 도시한다. 특히, 도 7은 문제 데이터가 다수의 조각들(705)로 분할된 사용자 애플리케이션을 도시한다. 이것은 도메인 분해, 또는 구분된 전역 주소 공간(partitioned global address space)으로 지칭될 수 있다. 이 예에서, 문제 데이터, 또는 그리드는 4개의 행 및 6개의 열로 분할될 수 있다. 각각의 서브도메인은 데카르트 그리드 위치(Cartesian grid position)(X, Y)와 연관될 수 있다.
도 8은 본 개시의 예시적인 실시예에 따른 도 7에 도시된 2차원 데이터 그리드(700)의 관련 디폴트 MPI 프로세스의 예시적인 도면을 도시한다. 특히, 도 8은 분해된 데이터 그리드에 대한 공통 디폴트 MPI 프로세스 매핑을 도시한다. 도 8에 도시된 바와 같이, 각각의 컴퓨트 노드(805)는 6개의 서브도메인을 가질 수 있다. 데이터 그리드 서브도메인 ID들과 MPI 프로세스 ID들 간의 관계는 MPIproassID = subdomain.Xposition * columns.Ydimension + subdomain.Yposition으로서 계산될 수 있다.
도 9는 도 7에 도시된 바와 같은 도메인 분해 및 도 8에 제공된 바와 같은 MPI 프로세스 배치로부터 발생하는 노드내 및 노드간 통신을 나타내는 예시적인 도면을 도시하며, 각각의 서브도메인 루틴은 그의 가장 가까운 이웃들과 데이터를 교환할 수 있다. 이 예에서는 76개의 데이터 교환, 즉 40개의 노드내 통신 및 36개의 노드간 통신이 존재할 수 있다. 물론, 상이한 수의 데이터 교환, 노드내 통신 및 노드간 통신이 제공될 수 있다.
도 10은 본 개시의 일 실시예에 따른 개선된 MPI 프로세스 배치를 나타내는 도 7로부터의 데이터 그리드(700)를 예시하는 예시적인 도면을 도시한다. 도 10에 도시된 바와 같이, MPI 프로세스들의 그룹핑은 도 8에 도시된 것과 다르다. 서브그리딩 최적화 모듈(110)은 각각의 노드가 도 8에 도시된 바와 같은 1x6 서브그리드가 아니라 2x3 서브그리드를 유지할 수 있는 것으로 결정하는데 사용되었다. 애플리케이션은 프로세스 배치 변화를 인식하지 못할 수 있고, 서브도메인 ID들과 프로세스 ID들 간의 관계가 동일하게 유지되며, 진행들은 그의 동작을 기반으로 할 수 있다는 점에 유의한다. 예시적인 서브그리딩 절차는 본 명세서에서 아래에 설명된다.
도 11은 본 개시의 예시적인 실시예에 따른 컴포넌트로서 가상 MPI 프로세스 ID에 대한 실제 MPI 프로세스 ID의 프로세스 배치 최적화 매핑을 예시하는 예시적인 도면을 도시한다. 특히, 도 11은 프로세스 배치 최적화 모듈(120)의 동작을 예시한다. MPI 프로세스는 외부 제공 MPI 도구에 의해 노드들 상으로 이미 디스패치되었을 수 있다. 따라서, 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 원래의 프로세스 배치를 수정할 수 없다. MPI 도구로부터 발생되는 프로세스로부터 생성될 수 있는 실제 MPI 프로세스 배치가 프로세스 배치 최적화 모듈(120)로부터 생성된 매핑으로 대체될 수 있는 예시적인 가상화 절차(virtualization procedure)가 사용될 수 있다. 사용자 애플리케이션들은 이러한 리매핑(remapping)을 인식하지 못할 수 있고 평소대로 동작할 수 있다.
예시적인 온-더-플라이(on-the-fly) 리매핑은 도 4에 도시된 데이터 교환 리라우팅 모듈(420)에 의해 구현될 수 있다. 실시간 온-더-플라이 리매핑의 예시적인 이익은 도 1에 도시된 통신 관리 모듈(125)을 사용하여 다수의 MPI 도구를 지원하는 것일 수 있다. 프로세스 배치 최적화는 프로세스 식별자들을 서브그리드 식별자들과 링크하는 하나 이상의 수학 공식(들) 및/또는 절차(들), 또는 프로세스 식별자들을 서브그리드 식별자들에 매핑하는 카탈로그, 또는 이들의 조합과 같은, 그러나 이에 한정되지 않는 다양한 예시적인 방법들 또는 절차들을 통해 구현될 수 있다. 프로세스 배치 최적화 모듈(120)의 이러한 실시간 예시적인 실시예는 노드 크기들에 대한 전제조건을 가질 수 없고, 작업부하 관리 도구에 의해 동적으로 할당된 비동종 노드들과 함께 사용될 수 있다.
본 개시의 예시적인 실시예에서, 프로세스 배치 최적화 모듈(120)은 데카르트 통신 패턴들(예컨대, X, Y, Z 좌표들을 따른 피어들과의 통신들)은 물론, 비-데카르트 통신 패턴들에 대해 사용될 수 있다. 비-데카르트 통신 패턴들은 피어들이 그들의 통신 피어들을 선택하기 위해 다른 그리드 좌표 특징들을 사용하여 자신들 사이에서 통신할 수 있는 애플리케이션들에서 발생할 수 있다. 예를 들어, 프로세스는 2N(예를 들어, 1, 2, 4, 8 등) 거리 떨어져 있을 수 있는 피어들과 또는 도메인이 컨텍스트 데이터(contextual data)(예를 들어, 날씨 모델 내의 수역들(water bodies in a weather model))를 포함할 수 있는 피어들과 통신할 수 있다. 프로세스 배치를 수행하기 위해 프로세스 식별자들과 서브도메인 식별자들 사이의 수학적 관계를 사용하는 기존의 MPI 프로세스 배치 도구들과 달리, 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체에 의한 프로세스 배치 최적화 모듈(120)의 사용은 수학적 관계들로 제한되지 않을 수 있다. 그것은 관계에 관한 정보, 그것이 수학적인지, 무작위인지, 상황적(contextual)인지, 기타 등등일 수 있는지, 및 노드들 사이의 통신 프로세스들을 사용하여 동작할 수 있다.
도 12는 본 개시의 예시적인 실시예에 따른 서브그리딩 최적화 모듈(110), 프로세스 배치 최적화 모듈(120) 및 통신 관리 모듈(125)의 결합된 동작으로부터 발생하는 노드내 및 노드간 통신 트래픽을 예시하는 예시적인 도면을 도시한다. 도 12에 도시된 바와 같이, 총 76개의 데이터 교환이 여전히 존재할 수 있지만, 노드간 통신들의 수는 36에서 20으로 감소될 수 있다.
도 13은 본 개시의 예시적인 실시예에 따른 최적화된 MPI 프로세스 배치를 나타내는 데이터 그리드를 예시하는 다른 예시적인 도면을 도시한다. 도 13에 도시된 바와 같이, MPI 랭크들이 도 10에서 사용된 XY 순서 대신에 YX 순서(예를 들어, 행렬 전치(matrix transpose))로 기록될 수 있는 도 10의 대안적인 프로세스 배치가 제공될 수 있다.
도 14는 본 개시의 예시적인 실시예에 따라 도 13에서 제공된 프로세스 배치에 대한 노드내 및 노드간 통신을 예시하는 예시적인 도면을 도시한다. 도 14에 도시된 바와 같이, 행렬 전치 MPI 배치의 효과는 노드간 통신에 대해 제공된다. MPI 애플리케이션들은 이 필드에 설정된 규칙들이 없을 수 있으므로 2D 문제들에 대한 XY, YX뿐만 아니라 3D 문제들에 대한 XYZ, XZY, YXZ, YZX, ZXY 및 ZYX 순서에서 서브그리드들을 넘버링한다. 또한, 도 14는 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체 상에서의 도메인 분해 순서의 변경의 효과를 도시한다.
도 15는 본 개시의 예시적인 실시예에 따른 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)의 예시적인 실시예에서 MPI 노드내 및 노드간 통신에 비동종 컴퓨트 노드들을 사용하는 것의 예시적인 효과를 도시한다. 이것은 전술한 바와 같은 사전 계산된 정적 관계(pre-calculated static relationship) 대신에, 독립적으로 서브그리딩 및 프로세스 배치를 구현하기 위해 독립적인 메커니즘들을 사용하여 수행될 수 있다.
도 16a 내지 도 16c는 본 개시의 예시적인 실시예에 따른 다양한 서브그리딩 방법들 사이의 노드내 및 노드간 통신을 예시하는 예시적인 도면들을 도시한다. 도 16a 내지 도 16c에 도시된 바와 같이, 사전 계산된 정적 관계들을 사용하는 것에 비해, 프로세스 배치 및 서브그리딩 메커니즘들을 분리하는 것에는 추가적인 이점이 있다. 예를 들어, 다수의 서브그리드들이 노드마다 정의되는 것을 용이하게 하도록 서브그리딩 최적화 모듈(110) 및 프로세스 배치 최적화 모듈(120)을 구현하는 것이 가능할 수 있다. 다수의 서브그리드들은, 도 16a에 예시된 바와 같은 노드당 단일 서브그리드(예를 들어, 1x18 서브그리드), 도 16b에 도시된 바와 같은 2x9 서브그리드, 및 도 16c에 도시된 바와 같은 4x4 및 1x2 서브그리드들을 사용하는 것보다 더 노드간 통신 최적화를 개선하기 위해 사용될 수 있다. 노드당 다수의 서브그리드들의 사용은 하나보다 많은 협력 MPI 애플리케이션이 동일한 컴퓨트 노드에 공존할 수 있는 MPMD 프로그래밍 패러다임들을 용이하게 할 수 있다. 이것은, 예를 들어 기후학에서의 모델 커플링(model coupling in climatology)으로 지칭될 수 있다.
도 17은 본 개시의 예시적인 실시예에 따른 예시적인 절차를 사용하는 서브그리딩의 최적화를 예시하는 도면을 도시한다. 도 17에 예시된 바와 같이, 도 1에 도시된 서브그리딩 최적화 모듈(110)을 사용하는 서브그리딩 최적화 절차의 예시적인 실시예가 제공될 수 있다. 예시적인 2D 4x4 서브그리드에서, 노드간 통신들의 수가 서브도메인들의 주변부의 합: 16개의 통신 교환들(예를 들어, 4+4+4+4)과 동일할 수 있다는 것이 관찰될 수 있다. 노드간 통신들의 수를 최소화하기 위해, 주변부를 최소화할 수 있는 서브그리딩 절차가 사용될 수 있다. 이것은 주변부가 측면 크기(side-size) = SQRT(#cores)에 가능한 한 가까울 때 발생할 수 있다. 에지의 크기가 정수일 수 있기 때문에, min((#cores - s1*s2) 및 min(|sl-s2|)(여기서, N.B.|s1-s2|는 차이의 절대값일 수 있음)을 고려하면 정수들의 가까운 쌍을 찾을 수 있다. 예시적인 서브그리딩 절차는 노드간 통신을 최소화하기 위해 사용될 수 있다. 이 예시적인 절차는 도 16a 내지 도 16c에 따라 18 서브도메인 문제를 4x4 서브그리드 및 1x2 서브그리드로 서브그리딩할 수 있다. 예시적인 서브그리딩 절차는 다음과 같을 수 있다:
Figure pct00002
위에 설명된 예시적인 서브그리딩 절차는 더 정밀화될 수 있다. 예를 들어, 예시적인 서브그리딩 절차는 문제 크기를 고려하고, 서브그리드들을 배향시켜 단편화(fragmentation)를 감소시킬 수 있다. 예를 들어, 56개의 코어 노드들을 사용하는 32x21 문제 크기는 8x7 서브그리드들에 대해 최상으로 작동하여, 제1 차원에서 정확히 4개의 서브그리드들 및 제2 차원에서 정확히 3개의 서브그리드들을 생성할 수 있고, 그 결과 총 12개의 완전히 채워진(fully populated) (예를 들어, 56개의 컴퓨트 코어 노드들과 매칭하는 8x7 요소들) 서브그리드들을 생성할 수 있다. 7x8 서브그리드들의 사용은 대신에 제5 서브그리드에 4개의 나머지 요소들을 갖는 제1 차원에서의 4개의 전체 서브그리드들, 및 제3 서브그리드에 5개의 나머지 요소들을 갖는 제2 차원에서의 2개의 전체 서브그리드들을 생성할 것이다. 이것은 8개의 완전히 채워진 (예컨대, 각각 7x8 요소들) 서브그리드들 및 4개의 부분적으로 채워진 (예컨대, 각각 4x5 요소들) 서브그리드들을 유발할 수 있다.
위에 설명된 예시적인 서브그리딩 절차에 대한 다른 예시적인 정밀화(refinement)는, 예를 들어 문제 차원에 적용되는 가중 인자(weight factor)를 포함할 수 있다. 이하는 노드간 통신을 최소화하는 서브그리딩을 수행하기 위해 2개의 차원 각각에 가중 인자를 할당하는 것을 예시하는 간단한 코드 샘플이다.
Figure pct00003
위에 제시된 서브그리딩 정밀화들은 결합될 수 있다. 이러한 정밀화들은 포괄적이지 않으며; 상대적 프로세서 성능, 네트워크 토폴로지 등에 대처하기 위해 더 많은 서브그리딩 정밀화가 추가될 수 있다.
예시적 시스템, 방법, 및 컴퓨터 액세스가능 매체는 노드당 코어들의 수 및 그리드 차원들에 기초하여, 노드간 통신들의 수를 감소시킬 수 있는 최적화된 서브그리드 크기를 결정할 수 있다. 부가적으로, 예시적 시스템, 방법, 및 컴퓨터 액세스가능 매체는 동일한 서브그리드에 속하는 프로세스들을 병치하기 위해 노드들에 대한 MPI 프로세스들의 맵을 생성할 수 있다. 이 예시적 절차는 시동 시에 애플리케이션에 의해 호출되는 라이브러리로서 구현될 수 있고, 그것은 10 라인 미만의 코드 변경을 포함할 수 있다. 대안적으로, 예시적 절차는 랭크 파일을 생성하기 위해 작업부하 관리자에 대한 사전단계로서 구현될 수 있다. 부가적으로, 그러한 예시적 절차는 프로세스 레이아웃 옵션으로서 작업부하 관리자 자체 내에 내장될 수 있다.
예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체는 또한 컴퓨트 노드들로 이루어진 시스템에 재귀적으로 적용될 수 있고, 각각의 노드는 상호접속된 프로세서들의 집합일 수 있고, 각각의 프로세서는 상호접속된 프로세서 코어들의 집합일 수 있다.
Infmiband, Ethernet, 또는 다른 기술들을 기반으로 할 수 있는 상호접속 속성들은 또한 단일 컴퓨트 노드 내의 프로세서들을 접속하는 프로세서간 패브릭에 적용될 수 있다. 따라서, 본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법, 및 컴퓨터 액세스가능 매체는 컴퓨트 노드들을 포함할 수 있는 시스템에 재귀적으로 적용될 수 있고, 각각의 노드는 상호접속된 프로세서들의 집합일 수 있고, 따라서 각각의 프로세서는 상호접속된 프로세서 코어들의 집합일 수 있다.
본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 상이한 컴퓨트 노드들 상의 피어 쌍들 간에 교환되는 모든 메시지들이 먼저, 전송되는 모든 메시지들을 단일의 큰 메시지로 집계할 수 있고, 이어서 단일 피어가 복합 메시지를 전송할 수 있도록, 메시지 집계-배포 방법(message aggregation-distribution method)을 구현하기 위해 통신 패턴들에 대한 지식을 사용할 수 있다. 그의 피어는 복합 메시지를 수신할 수 있고 메시지들을 동일한 시스템 상의 다른 피어들에 배포할 수 있다. 이러한 메커니즘은 호스트 채널 어댑터(예컨대, 네트워크 카드) 레벨에서의 혼잡(congestion)을 감소시키는 것에 의해 상호접속 이용률을 향상시킬 수 있다. 예를 들어, 2D 도메인 분해 문제에서, 결합된 서브그리딩 및 매핑 프로세스들로 인해, 컴퓨트 노드 상의 서브그리드의 에지를 따르는 프로세스들은 다른 컴퓨트 노드 상의 서브그리드의 에지 상의 프로세스들과 통신할 수 있다. 따라서, 2D 문제는, 예컨대 4개의 컴퓨트 노드들이 서브그리드에 대한 통신에 참여하게 할 수 있다. 서브그리딩 및 매핑 메커니즘이 없는 경우, 컴퓨트 노드 상의 프로세스들은 다양한 수의 다른 컴퓨트 노드들과 통신할 수 있다.
본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 그의 서브그리딩 및 매핑 동작으로 인해 네트워크 패브릭 상호접속 레벨(예컨대, 네트워크 스위치)에서의 혼잡 관리를 개선할 수 있다. 결합된 서브그리딩 및 매핑 메커니즘들에 기초하여, 서브그리드 에지를 따르는 통신 프로세스들은 대안의 매핑 절차들에서보다 더 적은 컴퓨트 노드들과 통신할 수 있다. 이것은 네트워크 패브릭 상호접속 내에서의 더 적은 혼잡을 유발할 수 있다.
본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 MPI 호출들을 인터셉트하고, 데이터 교환 인터셉트 모듈(415)을 사용하여, 온-더-플라이로, (예를 들어, 데이터 교환 리라우팅 모듈(420)을 사용하여) 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체에 의해 제공되는 것으로 원래의 MPI 통신기를 대체하기 위해 라이브러리(예를 들어, 데이터 교환 트랩 모듈(410))를 사전 로딩하는 것을 포함할 수 있다. MPT 고유 프로세스 리매핑 프리미티브들(MPI's own process remapping primitives)을 사용하여, 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 노드간 통신들을 최적화하기 위해 프로세스 위치들이 사용될 수 있는 새로운 통신기(communicator)를 생성할 수 있다. 따라서, 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 간단하고, 가벼우며, 운영 체제, 작업부하 관리자(예를 들어, SLURM), MPI 라이브러리에 대한 어떠한 수정도 구현할 필요가 없으며, 애플리케이션 바이너리들 상에서 동작할 수 있다.
전술한 예시적인 실시예는 원래의 MPI_COMM_WORLD 통신기만이 아니라 임의의 MPI 통신기를 온-더-플라이로 교체하고 대체하도록 더 확장될 수 있으며, 다수의 MPI 통신기에 동시에 적용될 수 있다. 따라서, 단일 애플리케이션 내에서 한 번에 2개 이상의 레벨의 통신들에서 통신 교환을 최적화하는 것이 가능할 수 있다. 본 개시의 예시적인 실시예에 따른 예시적인 시스템, 방법 및 컴퓨터 액세스가능 매체는 또한 프로세서/시스템 타입 또는 사용자 인증서들에 기초하여 환경 특정 거동(circumstance specific behavior)을 제공하는 데 사용될 수 있는 통계 수집, 성능 모니터링 및 분석을 제공하기 위해 애플리케이션 및 시스템 특성들에 대한 지식을 이용할 수 있다.
예비 테스트들은 9개의 노드(예로서, 28 코어/노드) 상에서 252개의 MPI 프로세스를 사용하여 52%의 MPI 대역폭 증가를 관찰하였다. 128 코어/노드 시스템은 MPI 대역폭을 80% 이상 증가시킬 수 있다. MPI 대역폭은 (예로서, Infmiband 상호접속을 통한) 모든 MPI 노드간 통신의 대역폭 및 (예로서, 공유 메모리를 통한) 모든 MPI 노드내 통신의 대역폭일 수 있다.
도 18은 본 개시의 예시적인 실시예에 따른 복수의 컴퓨팅 노드들에 복수의 태스크들을 할당하기 위한 방법(1800)의 예시적인 흐름도를 도시한다. 예를 들어, 절차(1805)에서, 컴퓨팅 노드들이 폴링될 수 있다. 절차(1810)에서, 컴퓨팅 노드들과 관련된 제1 정보가 수신될 수 있거나, 제1 정보가 폴링에 기초하여 생성될 수 있다. 절차(1815)에서, 컴퓨팅 노드들에 대한 컴퓨팅 토폴로지가 결정될 수 있다. 절차(1820)에서, 컴퓨팅 노드들 각각 내의 코어들의 수를 분리함으로써 제2 정보가 생성될 수 있다. 절차(1825)에서, 태스크들과 연관된 문제 특성과 관련된 정보가 획득될 수 있다. 절차(1830)에서, 문제 특성에 기초하여 최적 서브그리드 레이아웃이 결정될 수 있다. 절차(1835)에서, 컴퓨팅 노드들에 대한 태스크들의 할당을 시뮬레이션하는 것을 포함할 수 있는 시뮬레이션이 수행될 수 있다. 절차(1840)에서, 태스크들은 제2 정보, 문제 특성, 최적 서브그리드 레이아웃, 및/또는 시뮬레이션에 기초하여 컴퓨팅 노드들에 할당될 수 있다. 절차(1845)에서, 컴퓨팅 토폴로지의 변경과 관련된 제3 정보가 결정될 수 있다. 절차(1850)에서, 제3 정보에 기초하여 코어들의 수를 분리함으로써 제4 정보가 생성될 수 있다. 절차(1855)에서, 태스크들은 제3 정보 및 제4 정보에 기초하여 재할당될 수 있다.
도 19는 본 개시에 따른 시스템의 예시적 실시예의 블록도를 도시한다. 예를 들어, 본 명세서에 설명된 본 개시에 따른 예시적 절차들은 처리 배열 및/또는 컴퓨팅 배열(processing arrangement and/or a computing arrangement, 1905)에 의해 수행될 수 있다. 이러한 처리/컴퓨팅 배열(1905)은, 예를 들어 하나 이상의 마이크로프로세서를 포함할 수 있고 컴퓨터 액세스가능 매체(예를 들어, RAM, ROM, 하드 드라이브, 또는 다른 저장 디바이스) 상에 저장된 명령어들을 사용할 수 있는 컴퓨터/프로세서(1910)이거나, 예를 들어 그것의 전부 또는 일부이거나, 그것을 포함할 수 있지만, 그것으로 제한되지 않는다.
도 19에 도시된 바와 같이, 예를 들어, (예로서, 처리 배열(1905)과 통신하는) 컴퓨터 액세스가능 매체(1915)(예로서, 본 명세서에서 전술한 바와 같이, 하드 디스크, 플로피 디스크, 메모리 스틱, CD-ROM, RAM, ROM 등 또는 이들의 집합과 같은 저장 디바이스)가 제공될 수 있다. 컴퓨터 액세스가능 매체(1915)는 실행 가능 명령어들(1920)을 포함할 수 있다. 추가로 또는 대안으로서, 저장 배열(1925)이 컴퓨터 액세스가능 매체(1915)와 별개로 제공될 수 있으며, 이는 예를 들어 본 명세서에서 전술한 바와 같은 소정의 예시적인 절차들, 프로세스들 및 방법들을 실행하도록 처리 배열을 구성하기 위해 명령어들을 처리 배열(1905)에 제공할 수 있다.
또한, 예시적인 처리 배열(1905)은 예를 들어 유선 네트워크, 무선 네트워크, 인터넷, 인트라넷, 데이터 수집 프로브, 센서 등을 포함할 수 있는 입력/출력 포트들(1935)을 구비하거나 포함할 수 있다. 도 19에 도시된 바와 같이, 예시적인 처리 배열(1905)은, 본 개시의 소정의 예시적인 실시예들에 따라, 예를 들어 처리 배열로부터 정보를 출력하는 것에 더하여 처리 배열에 정보를 입력하도록 구성된 터치스크린일 수 있는 예시적인 디스플레이 배열(1930)과 통신할 수 있다. 또한, 예시적인 디스플레이 배열(1930) 및/또는 저장 배열(1925)은 사용자 액세스가능 포맷 및/또는 사용자 판독가능 포맷으로 데이터를 디스플레이 및/또는 저장하기 위해 사용될 수 있다.
전술한 내용은 단지 본 개시의 원리들을 예시한다. 설명된 실시예들에 대한 다양한 수정들 및 변경들이 본 명세서의 교시들에 비추어 이 분야의 기술자들에게 명백할 것이다. 따라서, 이 분야의 기술자들은, 본 명세서에 명시적으로 도시되거나 설명되지 않더라도, 본 개시의 원리들을 구현하고, 따라서 본 개시의 사상 및 범위 내에 있을 수 있는 다수의 시스템들, 배열들, 및 절차들을 고안할 수 있을 것이라는 점이 이해될 것이다. 다양한 상이한 예시적인 실시예들은 이 분야의 통상의 기술자들에 의해 이해되어야 하는 바와 같이 서로 함께 사용될 수 있을 뿐만 아니라, 상호 교환가능하게 사용될 수 있다. 또한, 명세서, 도면들 및 청구항들을 포함하는 본 개시에서 사용되는 소정의 용어들은, 예를 들어 데이터 및 정보를 포함하지만 이에 제한되지 않는 소정의 사례들에서 동의어로 사용될 수 있다. 이러한 단어들 및/또는 서로 동의어일 수 있는 다른 단어들이 본 명세서에서 동의어로 사용될 수 있지만, 그러한 단어들이 동의어로 사용되지 않도록 의도될 수 있는 경우들이 존재할 수 있다는 점이 이해되어야 한다. 또한, 종래 기술의 지식이 위에서 본 명세서에 명시적으로 참고로 통합되지 않은 정도까지, 그 전체가 본 명세서에 명시적으로 통합된다. 참조되는 모든 공보들은 그 전체가 본 명세서에 참고로 통합된다.
예시적인 참고문헌들
다음의 공보들 및 정보는, 적용가능한 경우, 그 전체가 본 명세서에 참고로 통합된다.
Figure pct00004
Figure pct00005
Figure pct00006
Figure pct00007

Claims (54)

  1. 복수의 태스크들을 복수의 컴퓨팅 노드들(computing nodes)에 할당하기 위한 컴퓨터 실행가능 명령어들을 저장한 비일시적 컴퓨터 액세스가능 매체로서,
    컴퓨터 배열(computer arrangement)이 상기 명령어들을 실행할 때, 상기 컴퓨터 배열은:
    상기 컴퓨팅 노드들에 관련된 제1 정보를 수신하는 절차 - 상기 제1 정보는 상기 컴퓨팅 노드들 각각 내의 코어들의 수를 포함함 -;
    상기 컴퓨팅 노드들 각각 내의 상기 코어들의 수를 분리함으로써 제2 정보를 생성하는 절차; 및
    상기 제2 정보에 기초하여 상기 태스크들을 상기 컴퓨팅 노드들에 할당하는 절차
    를 포함하는 절차들을 수행하도록 구성되는, 컴퓨터 액세스가능 매체.
  2. 제1항에 있어서, 상기 제1 정보는 (i) 상기 컴퓨팅 노드들 각각 사이의 네트워크 접속의 거리, 및 (ii) 상기 네트워크 접속의 대역폭(bandwidth)을 더 포함하는, 컴퓨터 액세스가능 매체.
  3. 제1항에 있어서, 상기 제1 정보는 적어도 하나의 가장 가까운 이웃 노드까지의 거리를 더 포함하는, 컴퓨터 액세스가능 매체.
  4. 제1항에 있어서, 상기 컴퓨터 배열은 상기 태스크들에 기초하여 상기 제2 정보를 생성하도록 구성되는, 컴퓨터 액세스가능 매체.
  5. 제4항에 있어서, 상기 컴퓨터 배열은 상기 태스크들의 차원들(dimensions)의 수에 기초하여 상기 제2 정보를 생성하도록 구성되는, 컴퓨터 액세스가능 매체.
  6. 제4항에 있어서, 상기 컴퓨터 배열은:
    상기 태스크들 중 적어도 하나와 연관된 적어도 하나의 문제 특성(problem characteristic)에 관련된 정보를 획득하며;
    상기 적어도 하나의 문제 특성에 기초하여 상기 태스크들을 상기 컴퓨팅 노드들에 할당하도록 더 구성되는, 컴퓨터 액세스가능 매체.
  7. 제6항에 있어서, 상기 적어도 하나의 문제 특성은 (i) 그리드 내의 차원들의 제1의 수, (ii) 상기 그리드의 적어도 하나의 축 내의 차원들의 제2의 수, 또는 (iii) 메시지 전달 인터페이스(Message Passing Interface) 프로세스 내의 상기 그리드의 포인트들의 제3의 수 중 적어도 하나를 포함하는, 컴퓨터 액세스가능 매체.
  8. 제6항에 있어서, 상기 컴퓨터 배열은:
    상기 적어도 하나의 문제 특성에 기초하여 최적의 서브그리드 레이아웃(sub-grid layout)을 결정하며;
    상기 최적의 서브그리드 레이아웃에 기초하여 상기 태스크들을 할당하도록 구성되는, 컴퓨터 액세스가능 매체.
  9. 제1항에 있어서, 상기 컴퓨터 배열은 상기 노드들 사이의 통신들의 수의 최소화에 기초하여 상기 태스크들을 할당하도록 구성되는, 컴퓨터 액세스가능 매체.
  10. 제1항에 있어서, 상기 태스크들은 메시지 전달 인터페이스 프로세스들인, 컴퓨터 액세스가능 매체.
  11. 제1항에 있어서, 상기 컴퓨터 배열은 상기 컴퓨팅 노드들에 대한 컴퓨팅 토폴로지(computing topology)를 결정하도록 더 구성되는, 컴퓨터 액세스가능 매체.
  12. 제11항에 있어서, 상기 컴퓨터 배열은 상기 컴퓨팅 토폴로지의 상기 결정 후에 상기 제2 정보를 생성하도록 구성되는, 컴퓨터 액세스가능 매체.
  13. 제11항에 있어서, 상기 컴퓨터 배열은:
    상기 컴퓨팅 토폴로지의 변경과 관련된 제3 정보를 결정하고;
    상기 제3 정보에 기초하여 상기 코어들의 수를 분리함으로써 제4 정보를 생성하며;
    상기 제3 정보 및 상기 제4 정보에 기초하여 상기 태스크들을 재할당(reassign)하도록 더 구성되는, 컴퓨터 액세스가능 매체.
  14. 제1항에 있어서, 상기 컴퓨터 배열은:
    상기 컴퓨팅 노드들을 폴링(poll)하며;
    상기 폴링에 기초하여 상기 제1 정보를 생성하도록 구성되는, 컴퓨터 액세스가능 매체.
  15. 제1항에 있어서, 상기 컴퓨터 배열은 상기 제2 정보를 생성하며, 작업부하 관리자(workload manager)를 사용하여 상기 태스크들을 할당하도록 구성되는, 컴퓨터 액세스가능 매체.
  16. 제1항에 있어서, 상기 컴퓨터 배열은:
    상기 컴퓨팅 노드들에 대한 상기 태스크들의 할당을 시뮬레이션하는 것을 포함하는 적어도 하나의 시뮬레이션을 수행하며;
    상기 적어도 하나의 시뮬레이션에 기초하여 상기 태스크들을 할당하도록 더 구성되는, 컴퓨터 액세스가능 매체.
  17. 제1항에 있어서, 상기 컴퓨터 배열은 적어도 하나의 애플리케이션 통계에 기초하여 상기 적어도 하나의 시뮬레이션을 수행하도록 구성되는, 컴퓨터 액세스가능 매체.
  18. 제17항에 있어서, 상기 적어도 하나의 애플리케이션 통계는 적어도 하나의 이전 시뮬레이션으로부터의 통계들을 포함하는, 컴퓨터 액세스가능 매체.
  19. 복수의 태스크들을 복수의 컴퓨팅 노드들에 할당하기 위한 시스템으로서,
    컴퓨터 하드웨어 배열을 포함하고, 상기 컴퓨터 하드웨어 배열은:
    상기 컴퓨팅 노드들에 관련된 제1 정보를 수신하고 - 상기 제1 정보는 상기 컴퓨팅 노드들 각각 내의 코어들의 수를 포함함 -;
    상기 컴퓨팅 노드들 각각 내의 상기 코어들의 수를 분리함으로써 제2 정보를 생성하며;
    상기 제2 정보에 기초하여 상기 태스크들을 상기 컴퓨팅 노드들에 할당하도록 구성되는, 시스템.
  20. 제19항에 있어서, 상기 제1 정보는 (i) 상기 컴퓨팅 노드들 각각 사이의 네트워크 접속의 거리, 및 (ii) 상기 네트워크 접속의 대역폭을 더 포함하는, 시스템.
  21. 제19항에 있어서, 상기 제1 정보는 적어도 하나의 가장 가까운 이웃 노드까지의 거리를 더 포함하는, 시스템.
  22. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은 상기 태스크들에 기초하여 상기 제2 정보를 생성하도록 구성되는, 시스템.
  23. 제22항에 있어서, 상기 컴퓨터 하드웨어 배열은 상기 태스크들의 차원들의 수에 기초하여 상기 제2 정보를 생성하도록 구성되는, 시스템.
  24. 제22항에 있어서, 상기 컴퓨터 하드웨어 배열은:
    상기 태스크들 중 적어도 하나와 연관된 적어도 하나의 문제 특성과 관련된 정보를 획득하며;
    상기 적어도 하나의 문제 특성에 기초하여 상기 태스크들을 상기 컴퓨팅 노드들에 할당하도록 더 구성되는, 시스템.
  25. 제24항에 있어서, 상기 적어도 하나의 문제 특성은 (i) 그리드 내의 차원들의 제1의 수, (ii) 상기 그리드의 적어도 하나의 축 내의 차원들의 제2의 수, 또는 (iii) 메시지 전달 인터페이스 프로세스 내의 상기 그리드의 포인트들의 제3의 수 중 적어도 하나를 포함하는, 시스템.
  26. 제24항에 있어서, 상기 컴퓨터 하드웨어 배열은:
    상기 적어도 하나의 문제 특성에 기초하여 최적의 서브그리드 레이아웃을 결정하며;
    상기 최적의 서브그리드 레이아웃에 기초하여 상기 태스크들을 할당하도록 구성되는, 시스템.
  27. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은 상기 노드들 사이의 통신들의 수의 최소화에 기초하여 상기 태스크들을 할당하도록 구성되는, 시스템.
  28. 제19항에 있어서, 상기 태스크들은 메시지 전달 인터페이스 프로세스들인, 시스템.
  29. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은 상기 컴퓨팅 노드들에 대한 컴퓨팅 토폴로지를 결정하도록 더 구성되는, 시스템.
  30. 제29항에 있어서, 상기 컴퓨터 하드웨어 배열은 상기 컴퓨팅 토폴로지의 상기 결정 후에 상기 제2 정보를 생성하도록 구성되는, 시스템.
  31. 제29항에 있어서, 상기 컴퓨터 하드웨어 배열은:
    상기 컴퓨팅 토폴로지의 변경과 관련된 제3 정보를 결정하고;
    상기 제3 정보에 기초하여 상기 코어들의 수를 분리함으로써 제4 정보를 생성하며;
    상기 제3 정보 및 상기 제4 정보에 기초하여 상기 태스크들을 재할당하도록 더 구성되는, 시스템.
  32. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은:
    상기 컴퓨팅 노드들을 폴링하며;
    상기 폴링에 기초하여 상기 제1 정보를 생성하도록 구성되는, 시스템.
  33. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은 상기 제2 정보를 생성하며, 작업부하 관리자를 사용하여 상기 태스크들을 할당하도록 구성되는, 시스템.
  34. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은:
    상기 컴퓨팅 노드들에 대한 상기 태스크들의 할당을 시뮬레이션하는 것을 포함하는 적어도 하나의 시뮬레이션을 수행하며;
    상기 적어도 하나의 시뮬레이션에 기초하여 상기 태스크들을 할당하도록 더 구성되는, 시스템.
  35. 제19항에 있어서, 상기 컴퓨터 하드웨어 배열은 적어도 하나의 애플리케이션 통계에 기초하여 상기 적어도 하나의 시뮬레이션을 수행하도록 구성되는, 시스템.
  36. 제35항에 있어서, 상기 적어도 하나의 애플리케이션 통계는 적어도 하나의 이전 시뮬레이션으로부터의 통계들을 포함하는, 시스템.
  37. 복수의 태스크들을 복수의 컴퓨팅 노드들에 할당하기 위한 방법으로서,
    상기 컴퓨팅 노드들에 관련된 제1 정보를 수신하는 단계 - 상기 제1 정보는 상기 컴퓨팅 노드들 각각 내의 코어들의 수를 포함함 -;
    상기 컴퓨팅 노드들 각각 내의 상기 코어들의 수를 분리함으로써 제2 정보를 생성하는 단계; 및
    컴퓨터 하드웨어 배열을 사용하여, 상기 제2 정보에 기초하여 상기 태스크들을 상기 컴퓨팅 노드들에 할당하는 단계
    를 포함하는, 방법.
  38. 제37항에 있어서, 상기 제1 정보는 (i) 상기 컴퓨팅 노드들 각각 사이의 네트워크 접속의 거리, 및 (ii) 상기 네트워크 접속의 대역폭을 더 포함하는, 방법.
  39. 제37항에 있어서, 상기 제1 정보는 적어도 하나의 가장 가까운 이웃 노드까지의 거리를 더 포함하는, 방법.
  40. 제37항에 있어서, 상기 태스크들에 기초하여 상기 제2 정보를 생성하는 단계를 더 포함하는, 방법.
  41. 제40항에 있어서, 상기 태스크들의 차원들의 수에 기초하여 상기 제2 정보를 생성하는 단계를 더 포함하는, 방법.
  42. 제40항에 있어서,
    상기 태스크들 중 적어도 하나와 연관된 적어도 하나의 문제 특성과 관련된 정보를 획득하는 단계; 및
    상기 적어도 하나의 문제 특성에 기초하여 상기 태스크들을 상기 컴퓨팅 노드들에 할당하는 단계
    를 더 포함하는, 방법.
  43. 제42항에 있어서, 상기 적어도 하나의 문제 특성은 (i) 그리드 내의 차원들의 제1의 수, (ii) 상기 그리드의 적어도 하나의 축 내의 차원들의 제2의 수, 또는 (iii) 메시지 전달 인터페이스 프로세스 내의 상기 그리드의 포인트들의 제3의 수 중 적어도 하나를 포함하는, 방법.
  44. 제42항에 있어서,
    상기 적어도 하나의 문제 특성에 기초하여 최적의 서브그리드 레이아웃을 결정하는 단계; 및
    상기 최적의 서브그리드 레이아웃에 기초하여 상기 태스크들을 할당하는 단계
    를 더 포함하는, 방법.
  45. 제37항에 있어서, 상기 노드들 사이의 통신들의 수의 최소화에 기초하여 상기 태스크들을 할당하는 단계를 더 포함하는, 방법.
  46. 제37항에 있어서, 상기 태스크들은 메시지 전달 인터페이스 프로세스들인, 방법.
  47. 제37항에 있어서, 상기 컴퓨팅 노드들에 대한 컴퓨팅 토폴로지를 결정하는 단계를 더 포함하는, 방법.
  48. 제47항에 있어서, 상기 컴퓨팅 토폴로지의 상기 결정 후에 상기 제2 정보를 생성하는 단계를 더 포함하는, 방법.
  49. 제47항에 있어서,
    상기 컴퓨팅 토폴로지의 변경과 관련된 제3 정보를 결정하는 단계;
    상기 제3 정보에 기초하여 상기 코어들의 수를 분리함으로써 제4 정보를 생성하는 단계; 및
    상기 제3 정보 및 상기 제4 정보에 기초하여 상기 태스크들을 재할당하는 단계
    를 더 포함하는, 방법.
  50. 제37항에 있어서,
    상기 컴퓨팅 노드들을 폴링하는 단계; 및
    상기 폴링에 기초하여 상기 제1 정보를 생성하는 단계
    를 더 포함하는, 방법.
  51. 제37항에 있어서, 상기 제2 정보를 생성하며, 작업부하 관리자를 사용하여 상기 태스크들을 할당하는 단계를 더 포함하는, 방법.
  52. 제37항에 있어서,
    상기 컴퓨팅 노드들에 대한 상기 태스크들의 할당을 시뮬레이션하는 것을 포함하는 적어도 하나의 시뮬레이션을 수행하는 단계; 및
    상기 적어도 하나의 시뮬레이션에 기초하여 상기 태스크들을 할당하는 단계
    를 더 포함하는, 방법.
  53. 제37항에 있어서, 적어도 하나의 애플리케이션 통계에 기초하여 상기 적어도 하나의 시뮬레이션을 수행하는 단계를 더 포함하는, 방법.
  54. 제53항에 있어서, 상기 적어도 하나의 애플리케이션 통계는 적어도 하나의 이전 시뮬레이션으로부터의 통계들을 포함하는, 방법.
KR1020227000997A 2019-06-12 2020-06-05 멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당을 위한 시스템, 방법 및 컴퓨터 액세스가능 매체 KR20230091834A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962860480P 2019-06-12 2019-06-12
US62/860,480 2019-06-12
US201962947375P 2019-12-12 2019-12-12
US62/947,375 2019-12-12
PCT/US2020/036331 WO2020251850A1 (en) 2019-06-12 2020-06-05 System, method and computer-accessible medium for a domain decomposition aware processor assignment in multicore processing system(s)

Publications (1)

Publication Number Publication Date
KR20230091834A true KR20230091834A (ko) 2023-06-23

Family

ID=73782086

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227000997A KR20230091834A (ko) 2019-06-12 2020-06-05 멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당을 위한 시스템, 방법 및 컴퓨터 액세스가능 매체

Country Status (7)

Country Link
US (1) US12118388B2 (ko)
EP (1) EP3983893A4 (ko)
JP (1) JP2022537944A (ko)
KR (1) KR20230091834A (ko)
CN (1) CN114391137A (ko)
CA (1) CA3143231A1 (ko)
WO (1) WO2020251850A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254021B (zh) * 2021-04-16 2022-04-29 云南大学 一种编译器协助的强化学习多核任务分配算法
US20230053594A1 (en) * 2021-08-20 2023-02-23 Yokogawa Electric Corporation Distributive deployment of process automation software applications
WO2023175578A1 (en) * 2022-03-17 2023-09-21 New York University In Abu Dhabi Corporation Systems, methods and computer-accessible medium for an inter-process communication coupling configuration

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020049859A1 (en) 2000-08-25 2002-04-25 William Bruckert Clustered computer system and a method of forming and controlling the clustered computer system
US6725211B1 (en) * 2000-09-28 2004-04-20 International Business Machines Corporation Work load assessment heuristic for optimal task parallelism determination
US7395536B2 (en) * 2002-11-14 2008-07-01 Sun Microsystems, Inc. System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
JP4063651B2 (ja) 2002-12-12 2008-03-19 富士通株式会社 ジョブスケジューリング方法および装置
US7433931B2 (en) * 2004-11-17 2008-10-07 Raytheon Company Scheduling in a high-performance computing (HPC) system
US8244882B2 (en) * 2004-11-17 2012-08-14 Raytheon Company On-demand instantiation in a high-performance computing (HPC) system
US7395414B2 (en) 2005-02-11 2008-07-01 International Business Machines Corporation Dynamic recalculation of resource vector at issue queue for steering of dependent instructions
US7644130B2 (en) * 2005-12-30 2010-01-05 Intel Corporation Method and apparatus for transparent selection of alternate network interfaces in a message passing interface (“MPI”) implementation
US7461241B2 (en) 2006-07-31 2008-12-02 International Business Machines Corporation Concurrent physical processor reassignment method
US8122132B2 (en) 2008-12-16 2012-02-21 International Business Machines Corporation Techniques for dynamically assigning jobs to processors in a cluster based on broadcast information
US9665405B1 (en) * 2010-02-12 2017-05-30 Sas Institute Inc. Distributed systems and methods for state generation based on multi-dimensional data
BR112012032060A2 (pt) * 2010-06-29 2016-11-08 Exxonmobil Upstream Res Co método e sistema para modelos de simulação paralela.
WO2012078157A1 (en) * 2010-12-09 2012-06-14 Intel Corporation Method and apparatus for managing application state in a network interface controller in a high performance computing system
EP2608084B1 (en) 2011-12-22 2015-03-18 Airbus Operations S.L. Heterogeneous parallel systems for accelerating simulations based on discrete grid numerical methods
KR20130088512A (ko) * 2012-01-31 2013-08-08 한국전자통신연구원 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법
US9705754B2 (en) 2012-12-13 2017-07-11 Level 3 Communications, Llc Devices and methods supporting content delivery with rendezvous services
US10521520B2 (en) 2013-02-14 2019-12-31 Nocturnal Innovations LLC Highly scalable cluster engine for hosting simulations of objects interacting within a space
KR101684677B1 (ko) * 2013-12-26 2016-12-09 한국전자통신연구원 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법
JP6241300B2 (ja) * 2014-02-04 2017-12-06 富士通株式会社 ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
JP6380051B2 (ja) 2014-11-28 2018-08-29 富士通株式会社 有限要素演算プログラム、有限要素演算装置および有限要素演算方法
US9742867B1 (en) 2016-03-24 2017-08-22 Sas Institute Inc. Network data retrieval
KR102509986B1 (ko) * 2016-03-28 2023-03-14 삼성전자주식회사 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법
US10896064B2 (en) * 2017-03-27 2021-01-19 International Business Machines Corporation Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads
US10754706B1 (en) * 2018-04-16 2020-08-25 Microstrategy Incorporated Task scheduling for multiprocessor systems

Also Published As

Publication number Publication date
US20220253336A1 (en) 2022-08-11
US12118388B2 (en) 2024-10-15
EP3983893A1 (en) 2022-04-20
WO2020251850A1 (en) 2020-12-17
CN114391137A (zh) 2022-04-22
JP2022537944A (ja) 2022-08-31
CA3143231A1 (en) 2020-12-17
EP3983893A4 (en) 2023-03-08

Similar Documents

Publication Publication Date Title
KR20230091834A (ko) 멀티코어 처리 시스템(들)에서의 도메인 분해 인식 프로세서 할당을 위한 시스템, 방법 및 컴퓨터 액세스가능 매체
KR102103596B1 (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
US10379883B2 (en) Simulation of high performance computing (HPC) application environment using virtual nodes
US7543184B2 (en) System and method for distributing system tests in parallel computing environments
KR20170109600A (ko) 칩 컴퓨팅 시스템 상의 네트워크에서 프로세서들에 프로세스들의 매핑
Maenhaut et al. Resource allocation in the cloud: from simulation to experimental validation
GB2582782A (en) Graph conversion method
Pascual et al. Optimization-based mapping framework for parallel applications
Hadadian Nejad Yousefi et al. IMOS: improved meta-aligner and Minimap2 on spark
Yu et al. Flex tuner: A flexible container-based tuning system for cloud applications
EP3966691B1 (en) Dynamic distribution of container images
Jain Optimization of communication intensive applications on HPC networks
Milroy et al. A dynamic, hierarchical resource model for converged computing
Haggarty et al. Distributed response time analysis of GSPN models with MapReduce
Li et al. 3-D partitioning for large-scale graph processing
Souza et al. Controlling the parallel execution of workflows relying on a distributed database
JP6650850B2 (ja) 計算装置および計算方法
Korndörfer et al. Mapping matters: Application process mapping on 3-d processor topologies
Begaev et al. Software for Component-by-Component Benchmarking of a Computing Cluster Network
Chiu et al. Massage-Passing Interface Cluster Bulid upon System Kernel Environment
Kim Colocation-aware Resource Management for Distributed Parallel Applications in Consolidated Clusters
Benkert et al. Empirical Optimization of Collective Communications with ADCL
Pascual et al. Analyzing the performance of allocation strategies based on space-filling curves
Baek et al. Heterogeneous networks of workstations
髙橋 et al. Programmable Interconnect Control Adaptive to

Legal Events

Date Code Title Description
A201 Request for examination