KR20140071194A - 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 - Google Patents
집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 Download PDFInfo
- Publication number
- KR20140071194A KR20140071194A KR1020120139269A KR20120139269A KR20140071194A KR 20140071194 A KR20140071194 A KR 20140071194A KR 1020120139269 A KR1020120139269 A KR 1020120139269A KR 20120139269 A KR20120139269 A KR 20120139269A KR 20140071194 A KR20140071194 A KR 20140071194A
- Authority
- KR
- South Korea
- Prior art keywords
- communication
- processing node
- point
- processing
- order
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
Abstract
집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템에 관하여 개시한다. 집합 통신 수행 방법은 다수의 프로세싱 노드들을 포함하는 집합 통신 시스템에서의 집합 통신 수행 방법에 있어서, 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는지를 판단하는 단계, 상기 판단 결과 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는 경우에, 프로세싱 노드들의 상태에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하는 방식으로 프로세싱 노드들에 대한 통신 순서를 결정하는 단계 및, 상기 결정된 통신 순서에 기초하여 상기 커맨드 메시지에 대한 통신을 수행하는 단계를 포함한다.
Description
본 발명은 통신 시스템 및 통신 수행 방법에 관한 것으로서, 자세하게는 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템에 관한 것이다.
집합 통신은 프로세스들의 그룹을 내포하는 통신을 의미한다. 집합 통신에서의 집합 통신 함수는 점대점(point-to-point) 함수들로 변환되어 프로세싱 노드들 간의 점대점 통신 동작을 수행한다. 그리고, 집합 통신에서는 방송(broadcast), 확산(scatter), 취합(gather) 동작이 빈번하게 발생된다. 집합 통신에서의 통신 성능을 향상시키기 위하여 방송, 확산, 취합 동작에서 통신에 소요되는 시간을 단축시킬 필요가 있다.
본 발명의 목적은 집합 통신을 수행할 때 충돌 현상으로 인한 지연 시간을 줄이기 위한 집합 통신 수행 방법을 제공하는데 있다.
본 발명의 다른 목적은 집합 통신을 수행할 때 충돌 현상으로 인한 지연 시간을 줄이기 위한 집합 통신 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 집합 통신 수행 방법은 다수의 프로세싱 노드들을 포함하는 집합 통신 시스템에서의 집합 통신 수행 방법에 있어서, 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는지를 판단하는 단계, 상기 판단 결과 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는 경우에, 프로세싱 노드들의 상태에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하는 방식으로 프로세싱 노드들에 대한 통신 순서를 결정하는 단계 및, 상기 결정된 통신 순서에 기초하여 상기 커맨드 메시지에 대한 통신을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 방송 함수에 대한 커맨드 메시지가 생성되는 경우에 통신 순서를 결정하는 단계는 상태 기반 이항 트리 알고리즘에 의하여 통신 순서를 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 상태 기반 이항 트리 알고리즘은 상기 프로세싱 노드들의 상태 정보를 획득하는 단계, 상기 획득한 상태 정보에 기초하여 초기 설정된 이항 트리의 상위 스테이지에 위치하는 통신 중인 상태의 프로세싱 노드를 통신을 하고 있지 않는 상태의 프로세싱 노드로 변경하는 단계 및, 상기 변경된 이항 트리에 따라서 상기 방송 함수에 대한 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세싱 노드들의 상태 정보는 메시지 패싱 인터페이스 버스에 포함된 상태 레지스터로부터 획득할 수 있다.
본 발명의 실시 예에 따르면, 상기 확산 함수에 대한 커맨드 메시지가 생성되는 경우에 통신 순서를 결정하는 단계는 상태 기반 선형 알고리즘에 의하여 통신 순서를 결정하고, 상기 상태 기반 선형 알고리즘은 프로세싱 노드들의 상태 정보에 기초하여 루트 프로세싱 노드로부터 통신을 하고 있지 않는 상태의 프로세싱 노드로 우선적으로 데이터를 전송하도록 상기 생성된 커맨드 메시지에 대응되는 점대점 함수들의 선형적인 실행 순서를 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 취합 함수에 대한 커맨드 메시지가 생성되는 경우에 있어서 상기 통신 순서를 결정하는 단계는 마스크 기반 선형 알고리즘에 의하여 통신 순서를 결정하고, 상기 마스크 기반 선형 알고리즘은 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여하고 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보를 기입할 수 있다.
본 발명의 실시 예에 따르면, 상기 판단 결과 방송, 확산 및 취합 함수들 이외의 집합 통신 함수에 대한 커맨드 메시지가 생성되는 경우에 초기 설정된 메시지 패싱 인터페이스 라이브러리에 기초하여 변환된 점대점 함수들에 따라서 통신 순서를 결정할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 집합 통신 시스템은 프로세싱 노드들의 상태 정보를 저장하는 상태 레지스터를 포함하고, 통신 순서에 따라서 프로세싱 노드들 간에 선택적으로 전송로를 형성시키는 메시지 패싱 인터페이스(MPI) 버스 및, 방송 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 수신되는 경우에, 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 프로세싱 노드들에 대한 상기 통신 순서를 결정하는 메시지 패싱 인터페이스(MPI) 유닛을 포함한다.
본 발명의 실시 예에 따르면, 상기 MPI 버스는 크로스 바 구조로 전송로를 형성할 수 있다.
본 발명의 실시 예에 따르면, 상기 MPI 유닛은 상기 방송 또는 확산 함수들 중의 어느 하나의 함수에 대응되는 커맨드 메시지가 수신되는 경우에, 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 상기 수신된 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정하는 메시지 프로세싱 유닛 및, 상기 결정된 실행 순서에 따라서 상기 점대점 함수들을 순차적으로 저장하는 이슈 큐를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 MPI 유닛은 초기 설정된 이항 트리에 따른 전송 순서에 대한 정보를 저장하는 메모리 유닛을 더 포함하고, 상기 방송 함수에 대응되는 커맨드 메시지가 수신되는 경우에 상기 메시지 프로세싱 유닛은 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 상기 초기 설정된 이항 트리에 따른 전송 순서 정보에서 상위 순서에 랭크된 통신 중인 상태의 프로세싱 노드 정보를 하위 순서에 랭크된 통신을 하고 있지 않는 상태의 프로세싱 노드 정보로 변환하는 매핑 테이블을 생성시키고, 상기 매핑 테이블에 기초하여 전송 순서를 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 메시지 프로세싱 유닛은 상기 확산 함수에 대응되는 커맨드 메시지가 수신되는 경우에 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 루트 프로세싱 노드로부터 통신을 하고 있지 않는 상태의 프로세싱 노드로 우선적으로 데이터를 전송하도록 상기 수신된 커맨드 메시지에 대응되는 점대점 함수들의 선형적인 실행 순서를 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 메시지 프로세싱 유닛은 마스킹 정보를 저장하는 마스크 레지스터를 더 포함하고, 상기 취합 함수에 대응되는 커맨드 메시지가 수신되는 경우에 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여하고, 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보를 상기 마스크 레지스터에 기입할 수 있다.
본 발명의 실시 예에 따르면, 집합 통신에 관련된 함수를 처리하는 프로세서를 더 포함하고, 상기 프로세서는 방송, 확산 및 취합 함수 이외의 집합 통신 함수에 대한 메시지가 수신되는 경우에는 초기 설정된 알고리즘에 따라서 점대점 함수들로 변환시키고, 상기 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수가 수신되는 경우에는 수신된 함수에 대한 커맨드 메시지를 상기 MPI 유닛으로 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세서는 멀티 코어 프로세서를 포함할 수 있다.
본 발명에 의하면 집합 통신 시스템에서 프로세싱 노드들의 상태를 파악하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 방송 함수, 취합 함수 또는 확산 함수에 대한 집합 통신 처리 순서를 결정함으로써, 집합 통신의 전체 통신 시간을 최소화시킬 수 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 집합 통신 시스템을 개략적으로 나타내는 블록도이다.
도 2는 본 발명에서 제안하는 알고리즘에 따른 집합 통신 시스템의 운영 체계를 보여주는 도면이다.
도 3은 도 1에 도시된 MPI 버스의 구조를 보여주는 도면이다.
도 4(a) 및 4(b)는 이항 트리 알고리즘 및 상태 기반 이항 트리 알고리즘에 따른 방송 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 5(a) 및 5(b)는 선형 알고리즘 및 상태 기반 선형 알고리즘에 따른 확산 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 6(a) 및 6(b)는 선형 알고리즘 및 마스크 기반 선형 알고리즘에 따른 취합 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 7(a)는 도 4(a)에 도시된 이항 트리 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 7(b)는 도 4(b)에 도시된 상태 기반 이항 트리 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 8(a)는 도 5(a)에 도시된 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 8(b)는 도 5(b)에 도시된 상태 기반 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 9(a)는 도 6(a)에 도시된 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 9(b)는 도 6(b)에 도시된 마스크 기반 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 10은 도 1에 도시된 MPI 유닛의 주요 블록 구성을 예시적으로 보여주는 도면이다.
도 11(a)는 초기 설정된 이항 트리 알고리즘에 따른 전송 순서를 보여주고, 도 11(b)는 본 발명의 실시 예에 따른 상태 기반 이항 트리 알고리즘에 의하여 전송 순서를 변경하는 사례를 보여주는 도면이다.
도 12는 도 11(a)에 도시된 초기 설정된 이항 트리 알고리즘에 따라서 결정된 전송 순서에 의한 각 프로세싱 노드들에서 수행될 점대점 함수들을 보여준다.
도 13(a)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 방송 함수에 대한 커맨드 메시지를 처리하는 과정을 설명하기 위한 도면이다.
도 13(b)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 방송 함수에 대한 커맨드 메시지를 처리한 후의 각 프로세싱 노드들의 이슈 큐에 저장된 점대점 함수들을 보여준다.
도 14(a)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 확산 함수에 대한 커맨드 메시지를 처리하는 과정을 설명하기 위한 도면이다.
도 14(b)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 확산 함수에 대한 커맨드 메시지를 처리한 후의 각 프로세싱 노드들의 이슈 큐에 저장된 점대점 함수들을 보여준다.
도 15(a)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 취합 함수에 대한 커맨드 메시지를 처리하는 과정을 설명하기 위한 도면이다.
도 15(b)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 취합 함수에 대한 커맨드 메시지를 처리한 후의 각 프로세싱 노드들의 이슈 큐에 저장된 점대점 함수들을 보여준다.
도 16은 본 발명에서 제안하는 방송 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 17은 본 발명에서 제안하는 확산 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 18은 본 발명에서 제안하는 취합 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 19는 본 발명의 다른 실시 예에 따른 집합 통신 시스템을 개략적으로 나타내는 블록도이다.
도 20은 본 발명의 실시 예에 따른 집합 통신 수행 방법의 흐름도이다.
도 21은 도 20에 도시된 단계120(S120)에 대한 세부 흐름도이다.
도 22는 도 21에 도시된 단계120-1(S120-1)에 대한 세부 흐름도이다.
도 23은 도 21에 도시된 단계120-2(S120-2)에 대한 세부 흐름도이다.
도 24는 도 21에 도시된 단계120-3(S120-3)에 대한 세부 흐름도이다.
도 2는 본 발명에서 제안하는 알고리즘에 따른 집합 통신 시스템의 운영 체계를 보여주는 도면이다.
도 3은 도 1에 도시된 MPI 버스의 구조를 보여주는 도면이다.
도 4(a) 및 4(b)는 이항 트리 알고리즘 및 상태 기반 이항 트리 알고리즘에 따른 방송 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 5(a) 및 5(b)는 선형 알고리즘 및 상태 기반 선형 알고리즘에 따른 확산 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 6(a) 및 6(b)는 선형 알고리즘 및 마스크 기반 선형 알고리즘에 따른 취합 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 7(a)는 도 4(a)에 도시된 이항 트리 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 7(b)는 도 4(b)에 도시된 상태 기반 이항 트리 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 8(a)는 도 5(a)에 도시된 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 8(b)는 도 5(b)에 도시된 상태 기반 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 9(a)는 도 6(a)에 도시된 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 9(b)는 도 6(b)에 도시된 마스크 기반 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
도 10은 도 1에 도시된 MPI 유닛의 주요 블록 구성을 예시적으로 보여주는 도면이다.
도 11(a)는 초기 설정된 이항 트리 알고리즘에 따른 전송 순서를 보여주고, 도 11(b)는 본 발명의 실시 예에 따른 상태 기반 이항 트리 알고리즘에 의하여 전송 순서를 변경하는 사례를 보여주는 도면이다.
도 12는 도 11(a)에 도시된 초기 설정된 이항 트리 알고리즘에 따라서 결정된 전송 순서에 의한 각 프로세싱 노드들에서 수행될 점대점 함수들을 보여준다.
도 13(a)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 방송 함수에 대한 커맨드 메시지를 처리하는 과정을 설명하기 위한 도면이다.
도 13(b)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 방송 함수에 대한 커맨드 메시지를 처리한 후의 각 프로세싱 노드들의 이슈 큐에 저장된 점대점 함수들을 보여준다.
도 14(a)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 확산 함수에 대한 커맨드 메시지를 처리하는 과정을 설명하기 위한 도면이다.
도 14(b)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 확산 함수에 대한 커맨드 메시지를 처리한 후의 각 프로세싱 노드들의 이슈 큐에 저장된 점대점 함수들을 보여준다.
도 15(a)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 취합 함수에 대한 커맨드 메시지를 처리하는 과정을 설명하기 위한 도면이다.
도 15(b)는 본 발명의 실시 예에 따른 집합 통신 시스템에서 취합 함수에 대한 커맨드 메시지를 처리한 후의 각 프로세싱 노드들의 이슈 큐에 저장된 점대점 함수들을 보여준다.
도 16은 본 발명에서 제안하는 방송 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 17은 본 발명에서 제안하는 확산 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 18은 본 발명에서 제안하는 취합 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 19는 본 발명의 다른 실시 예에 따른 집합 통신 시스템을 개략적으로 나타내는 블록도이다.
도 20은 본 발명의 실시 예에 따른 집합 통신 수행 방법의 흐름도이다.
도 21은 도 20에 도시된 단계120(S120)에 대한 세부 흐름도이다.
도 22는 도 21에 도시된 단계120-1(S120-1)에 대한 세부 흐름도이다.
도 23은 도 21에 도시된 단계120-2(S120-2)에 대한 세부 흐름도이다.
도 24는 도 21에 도시된 단계120-3(S120-3)에 대한 세부 흐름도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 집합 통신 시스템을 개략적으로 나타내는 블록도이다.
도 1에 도시된 바와 같이, 본 발명의 실시 예에 따른 집합 통신 시스템은 복수의 프로세싱 노드들(100-0 ~ 100-N) 및 MPI(Message Passing Interface) 버스(200)를 구비한다. 여기에서, N은 2이상의 자연수이다.
MPI 버스(200)에는 상태 레지스터(210)가 포함되고, 상태 레지스터(210)에는 MPI 버스(200)에 접속된 프로세싱 노드들(100-0 ~ 100-N)에 대한 상태 정보들이 저장된다. 예로서, 각각의 프로세싱 노드들에 대하여 한 비트씩의 상태 정보들을 할당할 수 있다. 예로서, MPI 버스(200)는 통신 중인 프로세싱 노드에 대해서는 제1논리 값의 상태 정보를 상태 레지스터(210)에 기입하고, 통신을 하고 있지 않은 프로세싱 노드에 대해서는 제2논리 값의 상태 정보를 상태 레지스터(210)에 기입할 수 있다. 예로서, 제1논리 값을 '1'로 설정하고, 제2논리 값을 '0'으로 설정할 수 있다. 다른 예로서, 제1논리 값을 '0'으로 설정하고, 제2논리 값을 '1'로 설정할 수도 있다.
MPI 버스(200)는 도 3에 도시된 바와 같이 크로스바(crossbar) 구조로 설계될 수 있다. 도 3에는 8개의 프로세싱 노드들(P1~P7)을 포함하는 집합 통신 시스템에 대한 MPI 버스(200)가 예시적으로 도시되어 있다.
MPI 버스(200)는 프로세싱 노드들(100-0 ~ 100-N)로부터 수신되는 점대점 함수에 따라서 프로세싱 노드들을 입/출력 포트들을 연결시킨다. 즉, MPI 버스(200)는 프로세싱 노드들(100-0 ~ 100-N)에서 결정된 통신 순서에 따라서 점대점 통신을 수행하도록 프로세싱 노드들 간에 선택적으로 전송로를 형성시킨다.
설명의 편의를 위하여 복수의 프로세싱 노드들(100-0 ~ 100-N) 중에서 프로세싱 노드 0(100-0)의 구성에 대하여 설명하기로 한다. 물론, 다른 프로세싱 노드들(100-1 ~ 100-N)도 프로세싱 노드 0(100-0)과 동등한 구성을 갖는다.
프로세싱 노드 0(100-0)은 프로세서(110-0), 인스트럭션(Instruction) 메모리(IM; 120-0), 데이터 메모리(DM; 130-0) 및 MPI 유닛(140-0)을 구비한다.
인스트럭션 메모리(IM; 120-1)에는 집합 통신 시스템에서 집합 통신 함수들에 대한 점대점 통신을 수행하기 위한 인스트럭션들(instructions)이 저장된다. 또한, 인스트럭션 메모리(IM; 120-1)에는 메시지 패싱 인터페이스(MPI) 라이브러리(library)가 저장될 수 있다. 예로서, MPI 라이브러리에는 방송(Broadcast), 확산(Scatter) 및 취합(Gather) 함수 이외의 집합 통신 함수에 대한 메시지에 대하여 점대점 함수들로 변환시키는 프로그램 코드들이 포함될 수 있다. 그리고, MPI 라이브러리에는 방송, 확산 및 취합 함수들 중의 어느 하나의 함수에 대한 메시지에 대하여 이에 대응되는 커맨드 메시지를 생성시켜 MPI 유닛(140-0)으로 전송하는 프로그램 코드들이 포함될 수 있다. 즉, 방송, 확산 및 취합 함수들 중의 어느 하나의 함수가 수신되는 경우에 점대점 함수들로 변환시키지 않고, 수신된 함수에 대한 커맨드 메시지를 생성시켜 MPI 유닛(140-0)으로 보내는 프로그램 코드들이 MPI 라이브러리에 포함될 수 있다.
데이터 메모리(DM; 130-0)에는 집합 통신 시스템에서 점대점 통신을 통하여 수신되는 데이터 또는 전송할 데이터가 저장된다.
프로세서(110-0)는 인스트럭션 메모리(IM; 120-1)에 저장된 인스트럭션들 및 MPI 라이브러리를 이용하여 프로세싱 노드 0에서의 집합 통신에 관련된 함수를 처리하는 동작을 수행한다.
이에 따라서, 프로세서(110-0)는 방송, 확산 및 취합 함수 이외의 집합 통신 함수에 대한 메시지가 수신되는 경우에는 초기 설정된 알고리즘에 따라서 점대점 함수들로 변환시킨다. 그리고, 만일 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수가 수신되는 경우에는 수신된 함수에 대한 커맨드 메시지를 생성시켜 MPI 유닛(140-0)으로 보낸다.
MPI 유닛(140-0)은 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 수신되는 경우에, MPI 버스(200)의 상태 레지스터(210)에서 읽어낸 상태 정보에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 프로세싱 노드들에 대한 통신 순서를 결정할 수 있다.
도 2는 본 발명에서 제안하는 알고리즘에 따른 집합 통신 시스템의 운영 체계를 예시적으로 보여주는 도면이다.
도 2를 참조하면, 본 발명에서는 MPI 라이브러리 셀을 수정하여 방송, 확산 및 취합 함수에 대해서는 커널(Kernel) 레벨에서 프로세서(110-0)에 의하여 점대점 함수들로 변환시키지 않고, 트랜스액션(Transaction) 레벨에서 본 발명에서 제안하는 알고리즘을 이용하여 결정된 통신 순서에 따라서 MPI 유닛(140-0)에 의하여 점대점 함수들로 변환시킨다.
그러면, 프로세서(110-0)에서 방송, 확산 또는 취합 함수에 대한 커맨드 메시지가 생성되는 경우에, MPI 유닛(140-0)에서 프로세싱 노드들에 대한 통신 순서를 결정하는 동작에 대하여 설명하기로 한다.
도 4~6을 참조하여 방송 함수, 확산 함수, 취합 함수에 대한 커맨드 메시지를 처리하는 통신 순서를 결정하는 알고리즘에 대하여 설명하고자 한다.
우선, 예로서 8개의 프로세싱 노드들로 구성된 집합 통신 시스템에서 도 3에 도시된 바와 같이, 프로세싱 노드1(P1)과 프로세싱 노드2(P2)가 점대점 통신 중에 있고, 또한 프로세싱 노드3(P3)과 프로세싱 노드4(P4)가 점대점 통신 중에 있다고 가정하자. 이에 따라서, 프로세싱 노드1~4(P1~P4)의 상태는 "busy" 상태이고, 프로세싱 노드0, 5~7(P0, P5~P7)의 상태는 "free" 상태이다. 그리고, 프로세싱 노드0(P0)이 루트(root) 프로세싱 노드로 설정되었다고 가정하자.
도 4(a) 및 4(b)는 이항 트리 알고리즘 및 상태 기반 이항 트리 알고리즘에 따른 방송 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 4(a)를 참조하면, 오리지널 이항 트리 알고리즘(Binominal tree algorithm)에 따라서 다음과 같이 고정된 순서대로 데이터 전송이 이루어진다.
우선, 스테이지 1에서는 프로세싱 노드0(P0)에서 프로세싱 노드1(P1)로 데이터 전송이 이루어진다.
스테이지 2에서는 프로세싱 노드0(P0)에서 프로세싱 노드2(P2)로 데이터 전송이 이루어지고, 프로세싱 노드1(P1)에서 프로세싱 노드3(P3)으로 데이터 전송이 이루어진다.
스테이지 3에서는 프로세싱 노드0(P0)에서 프로세싱 노드4(P4)로 데이터 전송이 이루어지고, 프로세싱 노드1(P1)에서 프로세싱 노드5(P5)로 데이터 전송이 이루어지고, 프로세싱 노드2(P2)에서 프로세싱 노드6(P6)으로 데이터 전송이 이루어지고, 프로세싱 노드3(P3)에서 프로세싱 노드7(P7)로 데이터 전송이 이루어진다.
위에서 언급한 바와 같이, 상위 스테이지인 스테이지 1,2에 위치하는 프로세싱 노드1,2,3(P1,P2,P3)은 통신 중에 있으므로, 실행 중인 통신이 종료될 때까지 기다려야 한다.
도 4(b)를 참조하면, 본 발명에서 제안하는 상태 기반 이항 트리 알고리즘(Status-based binominal tree algorithm)에 따라서 초기 설정된 이항 트리의 상위 스테이지에 위치하는 통신 중인 상태의 프로세싱 노드를 통신을 하고 있지 않는 상태의 프로세싱 노드로 변경시킨다. 예로서, 오리지널 이항 트리의 상위 스테이지인 스테이지 1,2에 위치하는 "busy" 상태의 프로세싱 노드1,2,3(P1,P2,P3)을 "free" 상태의 프로세싱 노드5,6,7(P5,P6,P7)로 변경시킨다.
이에 따라서, 본 발명에서 제안하는 상태 기반 이항 트리 알고리즘에 따르면 다음과 같이 적응적으로 변경된 순서대로 데이터 전송이 이루어진다.
우선, 스테이지 1에서는 프로세싱 노드0(P0)에서 프로세싱 노드5(P5)로 데이터 전송이 이루어진다.
스테이지 2에서는 프로세싱 노드0(P0)에서 프로세싱 노드6(P6)으로 데이터 전송이 이루어지고, 프로세싱 노드5(P5)에서 프로세싱 노드7(P7)로 데이터 전송이 이루어진다.
스테이지 3에서는 프로세싱 노드0(P0)에서 프로세싱 노드1(P1)로 데이터 전송이 이루어지고, 프로세싱 노드5(P5)에서 프로세싱 노드2(P2)로 데이터 전송이 이루어지고, 프로세싱 노드6(P6)에서 프로세싱 노드3(P3)으로 데이터 전송이 이루어지고, 프로세싱 노드7(P7)에서 프로세싱 노드4(P4)로 데이터 전송이 이루어진다.
위에서 언급한 바와 같이, 상위 스테이지인 스테이지 1,2에 위치하는 프로세싱 노드5,6,7(P5,P6,P7)은 "free" 상태에 있으므로, 기다리지 않고 바로 통신을 수행할 수 있다.
도 7(a)는 도 4(a)에 도시된 이항 트리 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이고, 도 7(b)는 도 4(b)에 도시된 상태 기반 이항 트리 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
이항 트리 알고리즘이 적용된 도 7(a)를 참조하면, 스테이지 1에 위치하는 프로세싱 노드1(P1)이 프로세싱 노드2(P2)와 통신 중에 있으므로, 스테이지 1에서 수행될 프로세싱 노드0(P0)과 프로세싱 노드1(P1)의 점대점 통신은 프로세싱 노드1(P1)이 통신을 마칠 때까지 기다려야 한다. 도 7(a)에서는 프로세싱 노드1(P1)에서 통신이 종료될 때까지 3 사이클(cycle) 동안 대기 상태에 있는 것을 보여준다. 이에 따라서, 방송 함수에 대한 집합 통신에 총 9 사이클의 시간이 소요된다.
본 발명에서 제안하는 상태 기반 이항 트리 알고리즘이 적용된 도 7(b)를 참조하면, 상위 스테이지인 스테이지 1,2에 "free" 상태에 있는 프로세싱 노드들을 할당함으로써 대기 시간 없이 바로 상태 기반 이항 트리 알고리즘에서 결정된 스테이지1,2,3의 순서대로 점대점 통신을 수행할 수 있게 된다. 이에 따라서, 방송 함수에 대한 집합 통신에 총 6 사이클의 시간이 소요된다.
따라서, 도 7(a) 및 7(b)를 참조하면, 상태 기반 이항 트리 알고리즘을 적용하면 오리지널 이항 트리 알고리즘을 적용하는 경우에 비하여 방송 함수에 대한 집합 통신에 소요되는 시간이 3 사이클만큼 단축된다는 사실을 알 수 있다.
다음으로, 도 5(a) 및 5(b)는 선형 알고리즘 및 상태 기반 선형 알고리즘에 따른 확산 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 5(a)를 참조하면, 오리지널 선형 알고리즘(Linear algorithm)에 따라서 예로서 다음과 같이 초기 설정된 순서대로 데이터 전송이 이루어진다.
첫 번째로 프로세싱 노드0(P0)에서 프로세싱 노드1(P1)로 데이터 전송이 이루어진다. 첫 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 두 번째로 프로세싱 노드0(P0)에서 프로세싱 노드2(P2)로 데이터 전송이 이루어진다. 두 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 세 번째로 프로세싱 노드0(P0)에서 프로세싱 노드3(P3)으로 데이터 전송이 이루어진다. 세 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 네 번째로 프로세싱 노드0(P0)에서 프로세싱 노드4(P4)로 데이터 전송이 이루어진다. 네 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 다섯 번째로 프로세싱 노드0(P0)에서 프로세싱 노드5(P5)로 데이터 전송이 이루어진다. 다섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 여섯 번째로 프로세싱 노드0(P0)에서 프로세싱 노드6(P6)으로 데이터 전송이 이루어진다. 여섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 일곱 번째로 프로세싱 노드0(P0)에서 프로세싱 노드7(P7)로 데이터 전송이 이루어진다.
위에서 언급한 바와 같이, 상위 통신 순위에 랭크된 프로세싱 노드1,2,3,4(P1,P2,P3,P4)는 통신 중에 있으므로, 실행 중인 통신이 종료될 때까지 기다려야 한다. 즉, 첫 번째 점대점 통신 순서로 지정된 프로세싱 노드1(P1)이 통신 중에 있으므로, 프로세싱 노드1(P1)이 통신을 마칠 때까지 대기 상태를 유지해야 한다.
도 5(b)를 참조하면, 본 발명에서 제안하는 상태 기반 선형 알고리즘(Status-based linear algorithm)에 따라서 통신을 하고 있지 않는 상태의 프로세싱 노드에 상위 통신 순위를 지정하도록 다음과 같이 통신 순서를 적응적으로 변경한다.
첫 번째로 프로세싱 노드0(P0)에서 프로세싱 노드5(P5)로 데이터 전송이 이루어진다. 첫 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 두 번째로 프로세싱 노드0(P0)에서 프로세싱 노드6(P6)으로 데이터 전송이 이루어진다. 두 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 세 번째로 프로세싱 노드0(P0)에서 프로세싱 노드7(P7)로 데이터 전송이 이루어진다. 세 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 네 번째로 프로세싱 노드0(P0)에서 프로세싱 노드1(P1)로 데이터 전송이 이루어진다. 네 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 다섯 번째로 프로세싱 노드0(P0)에서 프로세싱 노드2(P2)로 데이터 전송이 이루어진다. 다섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 여섯 번째로 프로세싱 노드0(P0)에서 프로세싱 노드3(P3)으로 데이터 전송이 이루어진다. 여섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 일곱 번째로 프로세싱 노드0(P0)에서 프로세싱 노드4(P4)로 데이터 전송이 이루어진다.
위에서 언급한 바와 같이, 상위 통신 순위에 랭크된 프로세싱 노드5,6,7(P5,P6,P7)은 "free" 상태에 있으므로, 기다리지 않고 바로 통신을 수행할 수 있다.
도 8(a)는 도 5(a)에 도시된 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이고, 도 8(b)는 도 5(b)에 도시된 본 발명에서 제안하는 상태 기반 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
선형 알고리즘이 적용된 도 8(a)를 참조하면, 첫 번째 통신 순위에 랭크된 프로세싱 노드1(P1)이 프로세싱 노드2(P2)와 통신 중에 있으므로, 스테이지 1에서 수행될 프로세싱 노드0(P0)과 프로세싱 노드1(P1)의 점대점 통신은 프로세싱 노드1(P1)이 통신을 마칠 때까지 기다려야 한다. 도 8(a)에서는 프로세싱 노드1(P1)에서 통신이 종료될 때까지 3 사이클(cycle) 동안 대기 상태에 있는 것을 보여준다. 이에 따라서, 확산 함수에 대한 집합 통신에 총 10 사이클의 시간이 소요된다.
상태 기반 선형 알고리즘이 적용된 도 8(b)를 참조하면, 상위 통신 순위에 "free" 상태에 있는 프로세싱 노드들을 할당함으로써 대기 시간 없이 바로 상태 기반 선형 알고리즘에서 결정된 통신 순서대로 점대점 통신을 수행할 수 있게 된다. 이에 따라서, 확산 함수에 대한 집합 통신에 총 7 사이클의 시간이 소요된다.
따라서, 도 8(a) 및 8(b)를 참조하면, 본 발명에서 제안하는 상태 기반 선형 알고리즘을 적용하면 오리지널 선형 알고리즘을 적용하는 경우에 비하여 확산 함수에 대한 집합 통신에 소요되는 시간이 3 사이클만큼 단축된다는 사실을 알 수 있다.
다음으로, 도 6(a) 및 6(b)는 선형 알고리즘 및 마스크 기반 선형 알고리즘에 따른 취합 함수에 대한 점대점 함수들의 통신 순서를 결정하는 방법을 보여주는 도면이다.
도 6(a)를 참조하면, 선형 알고리즘(Linear algorithm)에 따르면 예로서 다음과 같이 초기 설정된 순서대로 데이터 전송이 이루어진다.
첫 번째로 프로세싱 노드1(P1)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 첫 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 두 번째로 프로세싱 노드2(P2)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 두 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 세 번째로 프로세싱 노드3(P3)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 세 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 네 번째로 프로세싱 노드4(P4)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 네 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 다섯 번째로 프로세싱 노드5(P5)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 다섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 여섯 번째로 프로세싱 노드6(P6)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 여섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 일곱 번째로 프로세싱 노드7(P7)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다.
위에서 언급한 바와 같이, 상위 통신 순위에 랭크된 프로세싱 노드1,2,3,4(P1,P2,P3,P4)는 통신 중에 있으므로, 실행 중인 통신이 종료될 때까지 기다려야 한다. 즉, 첫 번째 점대점 통신 순서로 지정된 프로세싱 노드1(P1)이 통신 중에 있으므로, 프로세싱 노드1(P1)이 통신을 마칠 때까지 대기 상태를 유지해야 한다.
도 6(b)를 참조하면, 본 발명에서 제안하는 마스크 기반 선형 알고리즘(Mask-based linear algorithm)에 따르면, 통신을 하고 있지 않는 상태의 프로세싱 노드에 상위 통신 순위를 지정하도록 다음과 같이 통신 순서를 적응적으로 변경한다. 즉, 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여하고 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보를 기입한다. 마스킹 정보를 확인하여 취합 함수에 대한 점대점 함수들의 통신 종료를 판단할 수 있다.
첫 번째로 프로세싱 노드5(P5)가 데이터 송신을 요구하면 프로세싱 노드5(P5)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 첫 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 두 번째로 프로세싱 노드6(P6)이 데이터 송신을 요구하면 프로세싱 노드6(P6)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 두 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 세 번째로 프로세싱 노드7(P7)이 데이터 송신을 요구하면 프로세싱 노드7(P7)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 세 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 네 번째로 프로세싱 노드1(P1)이 데이터 송신을 요구하면 프로세싱 노드1(P1)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 네 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 다섯 번째로 프로세싱 노드2(P2)가 데이터 송신을 요구하면 프로세싱 노드2(P2)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 다섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 여섯 번째로 프로세싱 노드3(P3)이 데이터 송신을 요구하면 프로세싱 노드3(P3)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다. 여섯 번째 점대점 통신에 의한 데이터 전송을 마친 후에, 일곱 번째로 프로세싱 노드4(P4)가 데이터 송신을 요구하면 프로세싱 노드4(P4)에서 프로세싱 노드0(P0)으로 데이터 전송이 이루어진다.
위에서 언급한 바와 같이, 상위 통신 순위에 랭크된 프로세싱 노드5,6,7(P5,P6,P7)은 "free" 상태에 있으므로, 기다리지 않고 바로 통신을 수행할 수 있다.
도 9(a)는 도 6(a)에 도시된 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이고, 도 9(b)는 도 6(b)에 도시된 마스크 기반 선형 알고리즘에 따라서 결정된 통신 순서에 의한 점대점 함수들의 실행 사이클을 보여주는 도면이다.
선형 알고리즘이 적용된 도 9(a)를 참조하면, 첫 번째 통신 순위에 랭크된 프로세싱 노드1(P1)이 프로세싱 노드2(P2)와 통신 중에 있으므로, 첫 번째 통신 순서에서 수행될 프로세싱 노드1(P1)과 프로세싱 노드0(P0)의 점대점 통신은 프로세싱 노드1(P1)이 통신을 마칠 때까지 기다려야 한다. 도 9(a)에서는 프로세싱 노드1(P1)에서 통신이 종료될 때까지 3 사이클(cycle) 동안 대기 상태에 있는 것을 보여준다. 이에 따라서, 취합 함수에 대한 집합 통신에 총 10 사이클의 시간이 소요된다.
마스크 기반 선형 알고리즘이 적용된 도 9(b)를 참조하면, 상위 통신 순위에 "free" 상태에 있는 프로세싱 노드들을 할당함으로써 대기 시간 없이 바로 마스크 기반 선형 알고리즘에서 결정된 통신 순서대로 점대점 통신을 수행할 수 있게 된다. 이에 따라서, 취합 함수에 대한 집합 통신에 총 7 사이클의 시간이 소요된다.
따라서, 도 9(a) 및 9(b)를 참조하면, 마스크 기반 선형 알고리즘을 적용하면 오리지널 선형 알고리즘을 적용하는 경우에 비하여 취합 함수에 대한 집합 통신에 소요되는 시간이 3 사이클만큼 단축된다는 사실을 알 수 있다.
도 10은 도 1에 도시된 MPI 유닛(140-0)의 주요 블록 구성을 예시적으로 보여주는 도면이다.
도 10에 도시된 바와 같이, MPI 유닛(140-0)은 메시지 프로세싱 유닛(Message Processing Unit; 141, 이하 MPU라 칭함), 이슈 큐(Issue Queue; 142) 및 메모리 유닛(143)을 포함한다.
예로서, 메모리 유닛(143)은 비휘발성 메모리로서 ROM(Read Only Memory)가 이용될 수 있다. 메모리 유닛(143)에는 초기 설정된 이항 트리에 따른 전송 순서에 대한 정보가 저장된다.
예로서, 8개의 프로세싱 노드들로 구성된 집합 통신 시스템에서는 도 11(a)에 도시된 바와 같은 초기 설정된 이항 트리 알고리즘에 따른 전송 순서 정보가 메모리 유닛(143)에 저장될 수 있다. 즉, 초기 설정된 이항 트리 알고리즘에 따라서 결정된 전송 순서별로 각 프로세싱 노드에 할당된 점대점 함수들이 메모리 유닛(143)에 저장될 수 있다. 예로서, 메모리 유닛(143)에는 도 12와 같이 전송 순서별로 각 프로세싱 노드에 할당된 점대점 함수들이 저장될 수 있다.
MPU(141)는 방송 또는 확산 함수들 중의 어느 하나의 함수에 대응되는 커맨드 메시지가 프로세서(110-0)로부터 수신되는 경우에, MPI 버스(200)의 상태 레지스터(210)에서 읽어낸 상태 정보에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 프로세서(110-0)로부터 수신된 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정한다.
이슈 큐(142)에는 MPU(141)에서 결정된 실행 순서에 따라서 커맨드 메시지에 대응되는 점대점 함수들이 순차적으로 저장된다.
MPI 유닛(140-0)은 이슈 큐(142)에 저장된 순서대로 점대점 함수들에 상응하는 통신용 메시지 또는 데이터를 MPI 버스(200)로 전송하거나 MPI 버스(200)로부터 전송받는다. 즉, 이슈 큐(142)에 저장된 순서대로 점대점 함수들에 점대점 통신이 이루어진다.
그러면, 도 11~15를 참조하여 집합 통신 시스템에서 방송 함수, 확산 함수, 취합 함수에 대한 커맨드 메시지를 처리하는 통신 순서를 결정하는 동작에 대하여 설명하고자 한다.
도 11(a)는 초기 설정된 이항 트리 알고리즘에 따른 전송 순서를 보여주고, 도 11(b)는 본 발명의 실시 예에 따른 상태 기반 이항 트리 알고리즘에 의하여 전송 순서를 변경하는 사례를 보여주는 도면이다.
도 11(a)에서는 루트 프로세싱 노드가 P0으로 설정되고, 도 11(b)에서는 루트 프로세싱 노드가 P7로 변경되는 사례를 보여준다.
도 12는 도 11(a)와 같이 설정된 이항 트리 알고리즘에 따라서 결정된 전송 순서에 의한 각 프로세싱 노드들에서 수행될 점대점 함수들을 보여준다.
우선, 도 13(a) 및 13(b)를 참조하여, 본 발명의 실시 예에 따른 집합 통신 시스템에서 방송 함수에 대한 커맨드 메시지를 처리하는 동작에 대하여 설명하기로 한다.
도 13(a)는 복수의 프로세싱 노드들(P0~P7) 중에서 예로서, 루트 프로세싱 노드7(P7)과 프로세싱 노드5(P5)에서의 방송 함수에 대한 커맨드 메시지를 처리하는 과정을 보여준다.
프로세싱 노드7(P7)의 MPI 유닛(140-7)에 포함된 ROM(143-7)과 프로세싱 노드5(P5)의 MPI 유닛(140-5)에 포함된 ROM(143-5)에는 각각 도 11(a)에 도시된 바와 같은 초기 설정된 이항 트리에 따른 전송 순서에 대한 정보가 저장되어 있다.
MPI 유닛들(140-7, 140-5)이 각각 프로세싱 노드7(P7) 및 프로세싱 노드5(P5)의 프로세서로부터 방송 함수에 대한 커맨드 메시지(MPI_Bcast)를 수신하면(①), 루트 프로세싱 노드7의 MPU(141-7)는 MPI 버스(200)로 프로세싱 노드들의 상태 정보를 요구한다(②).
그러면, MPI 버스(200)는 상태 레지스터(210)에 저장된 상태 정보를 읽어내어 프로세싱 노드들(P0 ~P7)로 전송한다(③). 상태 레지스터(210)에는 프로세싱 노드별로 각각 하나의 비트씩을 할당하여 상태 정보가 저장될 수 있다. 예로서, 도 13(a)에서는 'busy' 상태의 프로세싱 노드는 '1'로 표시하고, 'free' 상태의 프로세싱 노드는 '0'으로 표시하였다.
루트 프로세싱 노드7의 MPU(141-7) 및 프로세싱 노드5의 MPU(141-5)는 각각 MPI 버스(200)로부터 수신된 상태 정보에 기초하여 초기 설정된 이항 트리에 따른 전송 순서 정보에서 상위 순서에 랭크된 통신 중인 상태의 프로세싱 노드 정보를 하위 순서에 랭크된 통신을 하고 있지 않는 상태의 프로세싱 노드 정보로 변환하는 매핑 테이블을 생성시킨다(④).
MPI 버스(200)로부터 수신된 상태 정보에 따르면, 프로세싱 노드 0,5,6,7은 'free' 상태를 나타내고, 프로세싱 노드 1,2,3,4는 'busy' 상태를 나타낸다. 매핑 테이블에서 논리적 번호는 프로세싱 노드들의 번호를 초기 설정된 전송 순서로 나열하고, 물리적 번호는 프로세싱 노드들의 번호를 'free' 상태를 나타내는 프로세싱 노드들의 번호에 우선순위를 부여하는 방식으로 나열한다. 예로서, 물리적 번호에서 'free' 상태를 나타내는 프로세싱 노드들 중에서 루트 프로세싱 노드를 첫 번째로 배열할 수 있다. 이에 따라서, 매핑 테이블에서 논리적 번호는 0,1,2,3,4,5,6,7 순으로 배열되고, 논리적 번호는 7,0,5,6,1,2,3,4로 배열될 수 있다.
다음으로, MPU(141-7) 및 MPU(141-5)는 매핑 테이블을 이용하여 각각 ROM(143-7)과 ROM(143-5)로부터 물리적 번호에 대응되는 논리적 번호의 프로세싱 노드에 할당한 점대점 함수들을 읽어낸다(⑤, ⑥).
매핑 테이블을 참조하면, 물리적 번호 7에는 논리적 번호 0이 매핑되어 있다. 따라서, 프로세싱 노드 7의 MPU(141-7)는 ROM(143-7)으로부터 프로세싱 노드 0에 할당된 점대점 함수들을 읽어낸다. 도 12를 참조하면, 프로세싱 노드 0에 할당된 점대점 함수들은 'Send to 1', 'Send to 2', Send to 4' 이다.
같은 방식으로, 매핑 테이블을 참조하면 물리적 번호 5에는 논리적 번호 2가 매핑되어 있다. 따라서, 프로세싱 노드 5의 MPU(141-5)는 ROM(143-5)으로부터 프로세싱 노드 2에 할당된 점대점 함수들을 읽어낸다. 도 12를 참조하면, 프로세싱 노드 2에 할당된 점대점 함수들은 'Recv from 0', 'Send to 6' 이다.
다음으로, MPU(141-7) 및 MPU(141-5)는 각각 ROM(143-7)과 ROM(143-5)로부터 읽어낸 점대점 함수들의 논리적 번호를 매핑 테이블을 이용하여 물리적 번호로 변환시켜 이슈 큐(142-7) 및 이슈 큐(142-5)에 각각 저장한다(⑦).
매핑 테이블을 참조하면, 논리적 번호 1에는 물리적 번호 0이 매핑되어 있고, 논리적 번호 2에는 물리적 번호 5가 매핑되어 있고, 논리적 번호 4에는 물리적 번호 1이 매핑되어 있다. 이에 따라서, 'Send to 1'은 'Send to 0'으로 변환되고, 'Send to 2'는 'Send to 5'로 변환되고, 'Send to 4'는 'Send to 1'로 변환된다.
이에 따라서, 프로세싱 노드 7(P7)의 이슈 큐(142-7)에는 'Send to 0', 'Send to 5', Send to 1' 순으로 저장된다.
같은 방식으로, 논리적 번호 0에는 물리적 번호 7이 매핑되어 있고, 논리적 번호 6에는 물리적 번호 3이 매핑되어 있다. 이에 따라서, 'Recv from 0'은 'Recv from 7'로 변환되고, 'Send to 6'은 'Send to 3'으로 변환된다.
이에 따라서, 프로세싱 노드 5(P5)의 이슈 큐(142-5)에는 'Recv from 7', 'Send to 3' 순으로 저장된다.
동일한 방식으로 나머지 프로세싱 노드들 각각에서도 방송 함수에 대한 커맨드 메시지를 처리하면, 프로세싱 노드들(P0 ~ P7) 각각의 이슈 큐에는 도 13(b)와 같이 방송 함수에 대한 점대점 함수들이 저장된다.
다음으로, 도 14(a) 및 14(b)를 참조하여, 본 발명의 실시 예에 따른 집합 통신 시스템에서 확산 함수에 대한 커맨드 메시지를 처리하는 동작에 대하여 설명하기로 한다.
도 14(a)는 복수의 프로세싱 노드들(P0~P7) 중에서 예로서, 루트 프로세싱 노드7(P7)과 프로세싱 노드5(P5)에서의 확산 함수에 대한 커맨드 메시지를 처리하는 동작을 보여준다.
루트 프로세싱 노드 7에서는 MPI 유닛(140-7)이 프로세싱 노드 7의 프로세서로부터 확산 함수에 대한 커맨드 메시지(MPI_Scatter)를 수신하면(①), 루트 프로세싱 노드7의 MPU(141-7)는 MPI 버스(200)로 프로세싱 노드들의 상태 정보를 요구한다(②).
또한, 루트 프로세싱 노드가 아닌 프로세싱 노드들 중의 하나인 프로세싱 노드 5에서는 MPI 유닛(140-5)이 프로세싱 노드 5의 프로세서로부터 확산 함수에 대한 커맨드 메시지(MPI_Scatter)를 수신하면(①), MPI 유닛(140-5)은 루트 프로세싱 노드로부터 데이터를 수신하는 점대점 함수 'Recv from 7'을 이슈 큐(142-5)에 저장한다(②). 루트 프로세싱 노드가 아닌 다른 프로세싱 노드들로 프로세싱 노드 5에서와 같이, 프로세싱 노드들 각각의 이슈 큐에는 'Recv from 7'이 저장된다.
다음으로, MPI 버스(200)는 루트 프로세싱 노드 7의 요구에 따라서 상태 레지스터(210)에 저장된 상태 정보를 읽어내어 루트 프로세싱 노드7(P7)로 전송한다(③). 상태 레지스터(210)는 프로세싱 노드별로 각각 하나의 비트씩을 할당하여 상태 정보를 저장할 수 있다. 예로서, 도 13에서는 'busy' 상태의 프로세싱 노드는 '1'로 표시하고, 'free' 상태의 프로세싱 노드는 '0'으로 표시하였다.
루트 프로세싱 노드 7의 MPU(141-7)는 MPI 버스(200)로부터 수신된 상태 정보에 기초하여 'free' 상태에 있는 프로세싱 노드로 우선적으로 데이터를 전송하도록 프로세싱 노드들에 대한 통신 순서를 결정한다(④). 예로서, 초기 설정된 통신 순서는 프로세싱 노드 번호 0, 1, 2, 3, 4, 5, 6 순이다. 초기 설정된 통신 순서를 'free' 상태에 있는 프로세싱 노드들의 번호 0, 5, 6에 통신 순서의 우선순위를 부여하면, 프로세싱 노드 번호 0, 5, 6, 1, 2, 3, 4 순으로 통신 순서가 결정될 수 있다.
루트 프로세싱 노드 7의 MPU(141-7)는 'free' 상태에 있는 프로세싱 노드로 우선적으로 데이터를 전송하도록 결정된 프로세싱 노드들에 대한 통신 순서에 따라서 확산 커맨드 메시지에 대응되는 점대점 함수(MPI_Send)들을 이슈 큐(142-7)에 저장한다(⑤). 이에 따라서, 루트 프로세싱 노드 7의 이슈 큐(142-7)에는 'Send to 0', 'Send to 5', 'Send to 6', 'Send to 1', 'Send to 2', 'Send to 3', 'Send to 4' 순으로 저장된다.
위에서와 같이 확산 함수에 대한 커맨드 메시지를 처리하면, 프로세싱 노드들(P0 ~ P7) 각각의 이슈 큐에는 도 14(b)와 같이 방송 함수에 대한 점대점 함수들이 저장된다.
다음으로, 도 15(a) 및 15(b)를 참조하여, 본 발명의 실시 예에 따른 집합 통신 시스템에서 취합 함수에 대한 커맨드 메시지를 처리하는 동작에 대하여 설명하기로 한다.
도 15(a)는 복수의 프로세싱 노드들(P0~P7) 중에서 예로서, 루트 프로세싱 노드7(P7)과 프로세싱 노드5(P5)에서의 취합 함수에 대한 커맨드 메시지를 처리하는 동작을 보여준다.
루트 프로세싱 노드 7에서는 MPI 유닛(140-7)이 프로세싱 노드 7의 프로세서로부터 취합 함수에 대한 커맨드 메시지(MPI_Gather)를 수신하면(①), 루트 프로세싱 노드7의 MPU(141-7)는 마스크 레지스터(Mask reg)를 리세트(reset)시킨다(②).
또한, 루트 프로세싱 노드가 아닌 프로세싱 노드들 중의 하나인 프로세싱 노드 5에서는 MPI 유닛(140-5)이 프로세싱 노드 5의 프로세서로부터 취합 함수에 대한 커맨드 메시지(MPI_Gather)를 수신하면(①), MPI 유닛(140-5)은 루트 프로세싱 노드로 데이터를 보내는 점대점 함수 'Send to 7'을 이슈 큐(142-5)에 저장한다(②). 루트 프로세싱 노드가 아닌 다른 프로세싱 노드들로 프로세싱 노드 5에서와 같이, 프로세싱 노드들 각각의 이슈 큐에는 'Send to 7'이 저장된다.
프로세싱 노드들 중에서 프로세싱 노드 5(P5)가 가장 먼저 점대점 함수 'Send to 7'에 따른 통신 요구하는 정보를 MPI 버스(200)로 전송하면(③), MPI 버스(200)는 프로세싱 노드 5(P5)로부터 수신된 점대점 함수 'Send to 7'에 따른 통신 요구하는 정보를 루트 프로세싱 노드 7(P7)로 전달한다(④).
루트 프로세싱 노드 7의 MPI 유닛(140-5)은 프로세싱 노드 5(P5)로부터 데이터 송신 요구를 받으면, 마스크 레지스터(Mask reg)의 프로세싱 노드 5에 대한 비트를 마스킹 처리한 후에 프로세싱 노드 5(P5)로부터 데이터를 수신하는 점대점 함수 'Recv from 5'를 이슈 큐(142-7)에 저장한다(⑤).
이에 따라서, 루트 프로세싱 노드 7(P7)의 이슈 큐(142-7)에는 데이터 송신을 요구하는 프로세싱 노드의 순서대로 이에 상응하는 점대점 함수가 저장된다.
위에서와 같이 취합 함수에 대한 커맨드 메시지를 처리하면, 프로세싱 노드들(P0 ~ P7) 각각의 이슈 큐에는 도 15(b)와 같이 방송 함수에 대한 점대점 함수들이 저장된다.
도 16에는 본 발명에서 제안하는 방송 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여주고, 도 17은 본 발명에서 제안하는 확산 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여주고, 도 18은 본 발명에서 제안한 취합 함수 처리 알고리즘에 대한 의사 코드를 예시적으로 보여준다.
도 19는 본 발명의 다른 실시 예에 따른 집합 통신 시스템을 개략적으로 나타내는 블록도이다.
도 19에 도시된 바와 같이, 본 발명의 다른 실시 예에 따른 집합 통신 시스템은 복수의 프로세싱 노드들(100'-0 ~ 100'-N) 및 MPI(Message Passing Interface) 버스(200)를 구비한다. 여기에서, N은 2이상의 자연수이다.
복수의 프로세싱 노드들(100'-0 ~ 100'-N) 각각은 멀티 프로세싱 유닛으로 구성될 수 있다. 멀티 프로세싱 유닛은 2개 이상의 프로세싱 유닛들을 포함할 수 있다. 도 19는 멀티 프로세싱 유닛이 4개의 프로세싱 유닛들을 포함하는 구성을 예시적으로 보여준다. 멀티 프로세싱 유닛은 멀티 코어 프로세서라고도 칭할 수도 있다.
프로세싱 노드 0(100'-0)은 프로세서(110-0), 4개의 프로세싱 유닛들(111A-0, 111B-0, 111C-0, 111D-0), 커넥팅부(150-0), 캐시 버퍼(160-0) 및 MPI 유닛(140-0)을 구비한다.
4개의 프로세싱 유닛들(111A-0, 111B-0, 111C-0, 111D-0) 각각은 프로세서(110-0), 인스트럭션 메모리(IM; 120-0) 및 데이터 메모리(DM; 130-0)를 포함한다. 여기에서, 프로세서(110-0), 인스트럭션 메모리(IM; 120-0) 및 데이터 메모리(DM; 130-0)는 도 1에서 이미 설명하였으므로 중복된 설명은 피하기로 한다.
커넥팅부(150-0)는 4개의 프로세싱 유닛들(111A-0, 111B-0, 111C-0, 111D-0)들을 초기 설정된 규칙에 따라서 선택적으로 연결시킬 수 있다. 또한, 커넥팅부(150)는 4개의 프로세싱 유닛들(111A-0, 111B-0, 111C-0, 111D-0)들 중의 하나의 프로세싱 유닛을 초기 설정된 규칙에 따라서 MPI 유닛(140-0)에 연결시킬 수 있다.
캐시 버퍼(160-0)는 MPI 버스(200)를 통하여 전송되는 데이터를 일시적으로 저장하는 역할을 한다. 캐시 버퍼(160)에 저장된 데이터는 커넥팅부(150-0)를 통하여 4개의 프로세싱 유닛들(111A-0, 111B-0, 111C-0, 111D-0) 중의 하나의 프로세싱 유닛에 전달될 수 있다.
MPI 유닛(140-0)은 도 1에 도시된 MPI 유닛(140-0)과 동일한 구성 수단으로서 도 1에서 이미 설명하였으므로 중복된 설명은 피하기로 한다. MPI 버스(200)에 대해서도 도 1에서 이미 설명하였으므로 중복된 설명은 피하기로 한다.
다른 프로세싱 노드들(100'-1 ~ 100'-N)도 프로세싱 노드 0(100'-0)과 동등한 구성을 갖는다.
다음으로, 도 1 또는 도 19에 도시된 집합 통신 시스템에서의 본 발명의 실시 예에 따른 집합 통신 수행 방법에 대하여 도 20의 흐름도를 참조하여 설명하기로 한다.
집합 통신 시스템에서의 프로세싱 노드들 각각의 MPI 유닛은 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는지를 판단한다(S110). 즉, 프로세서에서 MPI_Bcast, MPI_Scatter 또는 MPI_Gather 중의 어느 하나의 커맨드 메시지가 생성되는지를 판단한다.
단계110(S110)의 판단 결과 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는 경우에, 집합 통신 시스템은 프로세싱 노드들의 상태에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하는 방식으로 프로세싱 노드들에 대한 통신 순서를 결정한다(S120). 예로서, 생성된 커맨드 메시지에 대응되는 알고리즘을 적용하여 프로세싱 노드들의 상태를 확인하여 'free" 상태에 있는 프로세싱 노드에 점대점 통신의 우선권을 부여하여 집합 통신 함수에 대한 통신 순서를 결정할 수 있다.
집합 통신 시스템은 단계120(S120)에서 결정된 통신 순서에 기초하여 집합 통신 함수에 대한 점대점 통신을 수행한다(S130).
단계110(S110)의 판단 결과 방송, 확산 및 취합 함수들 이외의 집합 통신 함수에 대한 커맨드 메시지가 생성되는 경우에, 집합 통신 시스템은 초기 설정된 메시지 패싱 인터페이스 라이브러리에 기초하여 변환된 점대점 함수들에 따라서 통신 순서를 결정한다(S140).
도 20에서 언급된 단계120(S120)에 대한 동작을 도 21을 참조하여 상세히 설명하기로 한다. 도 21은 도 20에 도시된 단계120(S120)에 대한 세부 흐름도이다.
단계110(S110)의 판단 결과 방송 함수에 대한 커맨드 메시지(MPI_Bcast)가 생성되면, 집합 통신 시스템은 상태 기반 이항 트리 알고리즘(Status-based binominal tree algorithm)을 적용하여 프로세싱 노드들에 대한 통신 순서를 결정한다(S120-1). 예로서, 상태 기반 이항 트리 알고리즘은 프로세싱 노드들의 상태에 기초하여 초기 설정된 이항 트리의 상위 스테이지에 위치하는 통신 중인 상태의 프로세싱 노드를 통신을 하고 있지 않는 상태의 프로세싱 노드로 변경하는 방식으로 통신 순서를 결정할 수 있다.
단계110(S110)의 판단 결과 확산 함수에 대한 커맨드 메시지(MPI_Scatter)가 생성되면, 집합 통신 시스템은 상태 기반 선형 알고리즘(Status-based linear algorithm)을 적용하여 프로세싱 노드들에 대한 통신 순서를 결정한다(S120-2). 예로서, 상태 기반 선형 알고리즘은 프로세싱 노드들의 상태에 기초하여 루트 프로세싱 노드로부터 통신을 하고 있지 않는 상태의 프로세싱 노드로 우선적으로 데이터를 전송하도록 상기 생성된 커맨드 메시지에 대응되는 점대점 함수들의 선형적인 실행 순서를 결정할 수 있다.
단계110(S110)의 판단 결과 취합 함수에 대한 커맨드 메시지(MPI_Gather)가 생성되면, 집합 통신 시스템은 마스크 기반 선형 알고리즘(Mask-based linear algorithm)을 적용하여 프로세싱 노드들에 대한 통신 순서를 결정한다(S120-3). 예로서, 마스크 기반 선형 알고리즘은 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여하고 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보를 기입하는 방식으로 통신 순서를 결정할 수 있다.
도 21에서 언급된 단계120-1(S120-1)에 대한 동작을 도 22를 참조하여 상세히 설명하기로 한다. 도 22는 도 21에 도시된 단계120-1(S120-1)에 대한 세부 흐름도이다.
집합 통신 시스템의 MPI 유닛은 프로세싱 노드들의 상태 정보를 획득한다(S120-1A). 예로서, 프로세싱 노드들의 상태 정보는 MPI 버스에 포함된 상태 레지스터에 저장될 수 있다. MPI 유닛은 MPI 버스에 상태 정보를 요구하고, 상태 정보 요구에 따라서 상태 레지스터로부터 읽어낸 상태 정보를 MPI 버스로부터 전송받을 수 있다.
다음으로, MPI 유닛은 획득한 상태 정보에 기초하여 초기 설정된 이항 트리의 상위 스테이지에 위치하는 통신 중인 상태의 프로세싱 노드를 통신을 하고 있지 않는 상태의 프로세싱 노드로 변경한다(S120-1B). 예로서, 상태 레지스터에서 읽어낸 상태 정보에 기초하여 초기 설정된 이항 트리에 따른 전송 순서 정보에서 상위 순서에 랭크된 통신 중인 상태의 프로세싱 노드 정보를 하위 순서에 랭크된 통신을 하고 있지 않는 상태의 프로세싱 노드 정보로 변환하는 매핑 테이블을 생성시킬 수 있다. 이와 같이 생성된 매핑 테이블을 이용하여 초기 설정된 이항 트리에 따른 전송 순서 정보에서 상위 순서에 랭크된 통신 중인 상태의 프로세싱 노드 정보를 하위 순서에 랭크된 통신을 하고 있지 않는 상태의 프로세싱 노드 정보로 변환할 수 있다. 예로서, 도 4(a)와 같은 초기 설정된 이항 트리 알고리즘에 따른 통신 순서를 도 4(b)와 같은 상태 기반 이항 트리로 변형시킬 수 있다.
다음으로, MPI 유닛은 변경된 이항 트리에 따라서 방송 함수에 대한 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정한다(S120-1C). 예로서, 도 11(a)에서 변형된 도 11(b)의 상태 기반 이항 트리에 따라서 방송 함수에 대한 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정할 수 있다.
도 21에서 언급된 단계120-2(S120-2)에 대한 동작을 도 23을 참조하여 상세히 설명하기로 한다. 도 23은 도 21에 도시된 단계120-2(S120-2)에 대한 세부 흐름도이다.
집합 통신 시스템의 MPI 유닛은 프로세싱 노드들의 상태 정보를 획득한다(S120-2A). 예로서, MPI 유닛은 MPI 버스에 포함된 상태 레지스터로부터 읽어낸 프로세싱 노드들의 상태 정보를 전송받을 수 있다.
MPI 유닛은 획득한 상태 정보에 기초하여 루트 프로세싱 노드로부터 'free' 상태의 프로세싱 노드로 우선적으로 데이터를 전송하도록 확산 함수에 대한 커맨드 메시지에 대응되는 점대점 함수들의 선형적인 실행 순서를 결정한다(S120-2B). 예로서, 초기 설정된 선형 알고리즘에 따라서 설정된 도 5(a)와 같은 통신 순서는 상태 기반 선형 알고리즘에 따라서 도 5(b)와 같은 통신 순서로 변형시킬 수 있다.
도 21에서 언급된 단계120-3(S120-3)에 대한 동작을 도 24를 참조하여 상세히 설명하기로 한다. 도 24는 도 21에 도시된 단계120-3(S120-3)에 대한 세부 흐름도이다.
집합 통신 시스템의 MPI 유닛은 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여한다(S120-3A). 프로세싱 노드들의 상태에 기초하여 'free' 상태에 있는 프로세싱 노드들 중에서 데이터 송신을 요구하는 프로세싱 노드에 통신 순서의 우선권을 부여할 수 있다. 예로서, 초기 설정된 선형 알고리즘에 따라서 설정된 도 6(a)와 같은 통신 순서는 마스크 기반 선형 알고리즘에 따라서 도 6(b)와 같은 통신 순서로 변형시킬 수 있다.
그리고, MPI 유닛은 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 처리를 수행한다(S120-3B). 예로서, '0'으로 리세트된 마스크 레지스터에서 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보 '1'을 기입하는 방식으로 마스킹 처리를 할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100-0 ~ 100-N : 프로세싱 노드 1 ~N 110-0 ~ 110-N : 프로세서
120-0 ~ 120-N : 인스트럭션 메모리 130-0 ~ 130-N : 데이터 메모리
140-0 ~ 140-N : MPI 유닛 200 : MPI 버스
210 : 상태 레지스터 141 : MPU
142 : 이슈 큐 143 : ROM
111A-0, 111B-0, 111C-0, 111D-0 : 프로세싱 유닛
150-0 ~ 105-N : 커넥팅부 160-0 ~ 160-N : 캐시 버퍼
120-0 ~ 120-N : 인스트럭션 메모리 130-0 ~ 130-N : 데이터 메모리
140-0 ~ 140-N : MPI 유닛 200 : MPI 버스
210 : 상태 레지스터 141 : MPU
142 : 이슈 큐 143 : ROM
111A-0, 111B-0, 111C-0, 111D-0 : 프로세싱 유닛
150-0 ~ 105-N : 커넥팅부 160-0 ~ 160-N : 캐시 버퍼
Claims (10)
- 다수의 프로세싱 노드들을 포함하는 집합 통신 시스템에서의 집합 통신 수행 방법에 있어서,
방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는지를 판단하는 단계;
상기 판단 결과 방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 프로세서에서 생성되는 경우에, 프로세싱 노드들의 상태에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하는 방식으로 프로세싱 노드들에 대한 통신 순서를 결정하는 단계; 및
상기 결정된 통신 순서에 기초하여 상기 커맨드 메시지에 대한 통신을 수행하는 단계를 포함함을 특징으로 하는 집합 통신 수행 방법. - 제1항에 있어서, 상기 방송 함수에 대한 커맨드 메시지가 생성되는 경우에 통신 순서를 결정하는 단계는 상태 기반 이항 트리 알고리즘에 의하여 통신 순서를 결정하는 것을 특징으로 하는 집합 통신 수행 방법.
- 제2항에 있어서, 상기 상태 기반 이항 트리 알고리즘은
상기 프로세싱 노드들의 상태 정보를 획득하는 단계;
상기 획득한 상태 정보에 기초하여 초기 설정된 이항 트리의 상위 스테이지에 위치하는 통신 중인 상태의 프로세싱 노드를 통신을 하고 있지 않는 상태의 프로세싱 노드로 변경하는 단계; 및
상기 변경된 이항 트리에 따라서 상기 방송 함수에 대한 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정하는 단계를 포함함을 특징으로 하는 집합 통신 수행 방법. - 제1항에 있어서, 상기 확산 함수에 대한 커맨드 메시지가 생성되는 경우에 통신 순서를 결정하는 단계는 상태 기반 선형 알고리즘에 의하여 통신 순서를 결정하고, 상기 상태 기반 선형 알고리즘은 프로세싱 노드들의 상태 정보에 기초하여 루트 프로세싱 노드로부터 통신을 하고 있지 않는 상태의 프로세싱 노드로 우선적으로 데이터를 전송하도록 상기 생성된 커맨드 메시지에 대응되는 점대점 함수들의 선형적인 실행 순서를 결정하는 것을 특징으로 하는 집합 통신 수행 방법.
- 제1항에 있어서, 상기 취합 함수에 대한 커맨드 메시지가 생성되는 경우에 있어서 상기 통신 순서를 결정하는 단계는 마스크 기반 선형 알고리즘에 의하여 통신 순서를 결정하고, 상기 마스크 기반 선형 알고리즘은 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여하고 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보를 기입하는 것을 특징으로 하는 집합 통신 수행 방법.
- 프로세싱 노드들의 상태 정보를 저장하는 상태 레지스터를 포함하고, 통신 순서에 따라서 프로세싱 노드들 간에 선택적으로 전송로를 형성시키는 메시지 패싱 인터페이스(MPI) 버스; 및
방송, 확산 또는 취합 함수들 중의 어느 하나의 함수에 대한 커맨드 메시지가 수신되는 경우에, 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 프로세싱 노드들에 대한 상기 통신 순서를 결정하는 메시지 패싱 인터페이스(MPI) 유닛을 포함함을 특징으로 하는 집합 통신 시스템. - 제6항에 있어서, 상기 MPI 유닛은
상기 방송 또는 확산 함수들 중의 어느 하나의 함수에 대응되는 커맨드 메시지가 수신되는 경우에, 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 통신을 하고 있지 않는 프로세싱 노드에 통신 우선권을 부여하여 상기 수신된 커맨드 메시지에 대응되는 점대점 함수들의 실행 순서를 결정하는 메시지 프로세싱 유닛; 및
상기 결정된 실행 순서에 따라서 상기 점대점 함수들을 순차적으로 저장하는 이슈 큐를 포함함을 특징으로 하는 집합 통신 시스템. - 제7항에 있어서, 상기 MPI 유닛은 초기 설정된 이항 트리에 따른 전송 순서에 대한 정보를 저장하는 메모리 유닛을 더 포함하고, 상기 방송 함수에 대응되는 커맨드 메시지가 수신되는 경우에 상기 메시지 프로세싱 유닛은 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 상기 초기 설정된 이항 트리에 따른 전송 순서 정보에서 상위 순서에 랭크된 통신 중인 상태의 프로세싱 노드 정보를 하위 순서에 랭크된 통신을 하고 있지 않는 상태의 프로세싱 노드 정보로 변환하는 매핑 테이블을 생성시키고, 상기 매핑 테이블에 기초하여 전송 순서를 결정하는 것을 특징으로 하는 집합 통신 시스템.
- 제7항에 있어서, 상기 메시지 프로세싱 유닛은 상기 확산 함수에 대응되는 커맨드 메시지가 수신되는 경우에 상기 상태 레지스터에서 읽어낸 상태 정보에 기초하여 루트 프로세싱 노드로부터 통신을 하고 있지 않는 상태의 프로세싱 노드로 우선적으로 데이터를 전송하도록 상기 수신된 커맨드 메시지에 대응되는 점대점 함수들의 선형적인 실행 순서를 결정하는 것을 특징으로 하는 집합 통신 시스템.
- 제7항에 있어서, 상기 메시지 프로세싱 유닛은 마스킹 정보를 저장하는 마스크 레지스터를 더 포함하고, 상기 취합 함수에 대응되는 커맨드 메시지가 수신되는 경우에 데이터 송신을 요구하는 프로세싱 노드로부터 우선적으로 루트 프로세싱 노드에 데이터를 전송하도록 통신 순서를 부여하고, 통신 순서가 부여된 프로세싱 노드에 대한 마스킹 정보를 상기 마스크 레지스터에 기입하는 것을 특징으로 하는 집합 통신 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120139269A KR101994929B1 (ko) | 2012-12-03 | 2012-12-03 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
US13/778,804 US9292458B2 (en) | 2012-12-03 | 2013-02-27 | Method of performing collective communication according to status-based determination of a transmission order between processing nodes and collective communication system using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120139269A KR101994929B1 (ko) | 2012-12-03 | 2012-12-03 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140071194A true KR20140071194A (ko) | 2014-06-11 |
KR101994929B1 KR101994929B1 (ko) | 2019-07-01 |
Family
ID=50826644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120139269A KR101994929B1 (ko) | 2012-12-03 | 2012-12-03 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9292458B2 (ko) |
KR (1) | KR101994929B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104119A (zh) * | 2018-10-25 | 2020-05-05 | 祥明大学校产学协力团 | 用于存储器中心型计算机的mpi程序转换方法及装置 |
KR20200047254A (ko) * | 2018-10-25 | 2020-05-07 | 상명대학교산학협력단 | 메모리 중심 컴퓨터를 위한 mpi 프로그램 변환 방법 및 장치 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203992B2 (en) * | 2016-05-12 | 2019-02-12 | Futurewei Technologies, Inc. | Worker node rebuild for parallel processing system |
JP7193733B2 (ja) * | 2019-04-16 | 2022-12-21 | 富士通株式会社 | 通信制御プログラム、通信制御方法および情報処理装置 |
JP7193734B2 (ja) * | 2019-04-16 | 2022-12-21 | 富士通株式会社 | 通信制御プログラム、通信制御方法および情報処理装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958513B2 (en) * | 2005-11-17 | 2011-06-07 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
WO2012144802A2 (ko) * | 2011-04-18 | 2012-10-26 | 이수재 | 이종물질 수용장치 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1040223A (ja) * | 1996-06-17 | 1998-02-13 | Internatl Business Mach Corp <Ibm> | 分散並列システムにおける集合通信認識の最適化方法 |
US6012121A (en) | 1997-04-08 | 2000-01-04 | International Business Machines Corporation | Apparatus for flexible control of interrupts in multiprocessor systems |
US6226706B1 (en) | 1997-12-29 | 2001-05-01 | Samsung Electronics Co., Ltd. | Rotation bus interface coupling processor buses to memory buses for interprocessor communication via exclusive memory access |
JPH11259441A (ja) * | 1998-03-13 | 1999-09-24 | Hitachi Ltd | 並列計算機における全対全通信方法 |
US6782537B1 (en) | 1999-09-23 | 2004-08-24 | International Business Machines Corporation | Establishing a communicator across multiple processes in a multithreaded computing environment |
US7539989B2 (en) * | 2004-10-12 | 2009-05-26 | International Business Machines Corporation | Facilitating intra-node data transfer in collective communications |
JP2006309512A (ja) | 2005-04-28 | 2006-11-09 | Nec Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 |
US20110078410A1 (en) * | 2005-08-01 | 2011-03-31 | International Business Machines Corporation | Efficient pipelining of rdma for communications |
US7600095B2 (en) * | 2007-04-19 | 2009-10-06 | International Business Machines Corporation | Executing scatter operation to parallel computer nodes by repeatedly broadcasting content of send buffer partition corresponding to each node upon bitwise OR operation |
US8161480B2 (en) * | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
US8108876B2 (en) | 2007-08-28 | 2012-01-31 | International Business Machines Corporation | Modifying an operation of one or more processors executing message passing interface tasks |
US8312464B2 (en) | 2007-08-28 | 2012-11-13 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks by modifying tasks |
US8234652B2 (en) | 2007-08-28 | 2012-07-31 | International Business Machines Corporation | Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks |
US7856348B2 (en) | 2007-11-15 | 2010-12-21 | Intel Corporation | System and method for generation of synthetic parallel application kernels using tracing information |
US8161127B2 (en) | 2009-02-23 | 2012-04-17 | International Business Machines Corporation | Process mapping in parallel computing |
US8407376B2 (en) * | 2009-07-10 | 2013-03-26 | International Business Machines Corporation | Recording a communication pattern and replaying messages in a parallel computing system |
US8381230B2 (en) | 2010-04-21 | 2013-02-19 | International Business Machines Corporation | Message passing with queues and channels |
-
2012
- 2012-12-03 KR KR1020120139269A patent/KR101994929B1/ko active IP Right Grant
-
2013
- 2013-02-27 US US13/778,804 patent/US9292458B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958513B2 (en) * | 2005-11-17 | 2011-06-07 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
WO2012144802A2 (ko) * | 2011-04-18 | 2012-10-26 | 이수재 | 이종물질 수용장치 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104119A (zh) * | 2018-10-25 | 2020-05-05 | 祥明大学校产学协力团 | 用于存储器中心型计算机的mpi程序转换方法及装置 |
KR20200047254A (ko) * | 2018-10-25 | 2020-05-07 | 상명대학교산학협력단 | 메모리 중심 컴퓨터를 위한 mpi 프로그램 변환 방법 및 장치 |
US10963323B2 (en) | 2018-10-25 | 2021-03-30 | Sangyung University Industry-Academy Cooperation Foundation | Method and apparatus for transformation of MPI programs for memory centric computers |
Also Published As
Publication number | Publication date |
---|---|
US20140156890A1 (en) | 2014-06-05 |
KR101994929B1 (ko) | 2019-07-01 |
US9292458B2 (en) | 2016-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5280135B2 (ja) | データ転送装置 | |
KR101652490B1 (ko) | 자동 noc 토폴로지 생성 | |
KR101994929B1 (ko) | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 | |
CN101477512B (zh) | 一种处理器系统及其访存方法 | |
TW201543218A (zh) | 具有多節點連接的多核網路處理器互連之晶片元件與方法 | |
US11726938B2 (en) | Communications for field programmable gate array device | |
CN106250348A (zh) | 一种基于gpu访存特性的异构多核架构缓存管理方法 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN104765701A (zh) | 数据访问方法及设备 | |
CN112817774A (zh) | 用于片上网络中的事务广播的系统和方法 | |
JP4687925B2 (ja) | 優先調停システム及び優先調停方法 | |
WO2022199357A1 (zh) | 数据处理方法及装置、电子设备、计算机可读存储介质 | |
CN115563038A (zh) | 基于dma控制器的数据处理系统、方法和数据处理设备 | |
JP6146306B2 (ja) | I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法 | |
JPH11110362A (ja) | 計算機間データ通信方法 | |
US8069273B2 (en) | Processing module | |
CN113778937A (zh) | 用于执行片上网络(NoC)中的事务聚合的系统和方法 | |
KR102053360B1 (ko) | 시스템 인터커넥트, 이를 포함하는 시스템온칩, 그리고 이의 구동 방법 | |
CN118474018B (zh) | 基于Torus网络结构的路由方法、Torus网络结构、基于Torus网络结构的路由装置、计算机设备和计算机可读存储介质 | |
CN118474017B (zh) | 基于Torus网络结构的路由方法、Torus网络结构、基于Torus网络结构的路由装置、计算机设备和计算机可读存储介质 | |
CN114490465B (zh) | 用于直接存储器访问的数据传输方法和装置 | |
CN212541322U (zh) | 一种主从设备互联系统 | |
RU2638781C2 (ru) | Способ организации прямого доступа в память при передаче информации между физическими объектами | |
CN101631067B (zh) | 分组交换方法、装置和系统 | |
CN103346908B (zh) | 一种面向高性能计算的通讯仲裁方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |