KR20010050426A - 멀티 스레드 컴퓨터 환경에서 멀티 프로세스간의커뮤니케이터 설정 - Google Patents

멀티 스레드 컴퓨터 환경에서 멀티 프로세스간의커뮤니케이터 설정 Download PDF

Info

Publication number
KR20010050426A
KR20010050426A KR1020000053806A KR20000053806A KR20010050426A KR 20010050426 A KR20010050426 A KR 20010050426A KR 1020000053806 A KR1020000053806 A KR 1020000053806A KR 20000053806 A KR20000053806 A KR 20000053806A KR 20010050426 A KR20010050426 A KR 20010050426A
Authority
KR
South Korea
Prior art keywords
identifier
communicator
thread
candidate
participating
Prior art date
Application number
KR1020000053806A
Other languages
English (en)
Other versions
KR100390611B1 (ko
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 KR20010050426A publication Critical patent/KR20010050426A/ko
Application granted granted Critical
Publication of KR100390611B1 publication Critical patent/KR100390611B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

멀티 스레드(multithread) 멀티 프로세싱(multiprocessing) 컴퓨터 환경에서 분산 동의(distributed consensus)를 달성하기 위하여 결정적이고, 교착이 생기지 않는 기술이 제공된다. 멀티 스레드 컴퓨터 환경에서, 스레드의 멀티 그룹이 동시에 커뮤니케이터를 설정하려고 함에도 불구하고, 멀티 프로세스에 걸쳐 커뮤니케이터(communicator)가 설정된다. 상기 기술은, 멀티 프로세스의 참여하는 스레드의 그룹에 대한 커뮤니케이터용 후보 식별자(candidate identifier)를 설정하기 위한 멀티 프로세스 간의 통신단계; 및 멀티 프로세스의 참여하는 각각의 스레드에서 후보 식별자가 그의 프로세스에 대해 요구될 수 있는지를 확인하기 위한 멀티 프로세스간의 통신단계, 및 만일, 그렇다면, 후보 식별자를 새로운 식별자로 요청하여, 상기 커뮤니케이터를 설정하는 단계를 포함한다. 일례로서, 상기 기술은 메시지 전달 인터페이스(MPI, Message Passing Interface) 라이브러리내의 서브루틴(subroutine) 호출을 통하여 구현될 수 있다.

Description

멀티 스레드 컴퓨터 환경에서 멀티 프로세스간의 커뮤니케이터 설정{ESTABLISHING A COMMUNICATOR ACROSS MULTIPLE PROCESSES IN A MULTITHREADED COMPUTING ENVIRONMENT}
본 발명은 컴퓨터 시스템내의 공유 자원을 관리하는 능력에 관한 것이다. 보다 구체적으로, 예를 들면, 메시지 전달 인터페이스(Message Passing Interface, MPI) 라이브러리(library)내에서의 구현을 위한 스레드-안전 분산 동의 기술 (thread-safe distributed consensus technique)에 관한 것이다.
본 발명의 배경을 더 잘 이해할 수 있도록 하기 위해, 특정 용어에 대한 설명을 먼저 제공한다. 대칭적 멀티 프로세서(Symmetric Multi-Processor, SMP)는 본 기술분야에서 잘 알려진 용어로서, 컴퓨터 시스템에서 하드웨어의 한 측면을 말한다. 좀 더 구체적으로, 프로세서 플레이너(processor planar) 자체의 물리적 배치 (physical layout) 및 디자인에 관한 것이다. 이러한 멀티 프로세서 유닛은, 그 특성상 광역 메모리(global memory)를 공유함과 동시에, 상기 SMP 시스템의 입/출력에 동일한 액세스를 가진다.
현대적 복합 컴퓨터 시스템과 연관된 일반적인 또 다른 용어는 "스레드(thread)"이다. "스레드"라는 용어는 일반적으로 응용 소프트웨어 및 컴퓨터에서 실행되는 운영 시스템의 커널을 통한 간단한 실행 경로만을 나타낸다. 본 기술분야에서 이해되고 있응 것과 같이, 단일 프로세스 이미지당 허용되는 이러한 스레드는 멀티인 것이 일반적이다.
현재는 스레드 표준이 POSIX 표준에 포함되어 있다. POSIX 표준하에서 기본적인 스레드 관리는, 예를 들어, K. Robbins and S. Robbins의 Practical UNIX Programming - A Guide to Concurency, Communication and Multi-Threading, Prentice Hall PTR (1996)에 설명되어 있다.
본 발명의 실시예를 설명하는데 사용되는 또 다른 개념은 "로크(locks)"이다. 현대적 컴퓨팅 시스템은 일반적으로, 시스템의 정확한 동작에 완전성(integrity)이 절대적으로 중요한, 공유 라이브러리와 같은 공유 데이터 구조 또는 코드의 중요 섹션을 가지고 있다. 로크란, 일반적으로, 소프트웨어(또는 하드웨어)에서 사용되는 장치로서, 공유 데이터 구조 및/또는 코드의 중요 섹션에 대한 액세스를 "직렬화(serialize)"한다.
알고 있어야 할 다른 용어는 멀티스레드-안전(multithread-safe)인 코드의 개념이다. 만약, 동일한 자원 또는 루틴에 대해 경쟁하는 멀티 실행 스레드가 모든 스레드에 대해 데이터 안정성이 보장되도록 직렬화된다면, 코드는 스레드/MP-안전으로 간주된다. 이것을 달성하는 하나의 방법은 전술한 로크에 의한 것이다.
배경지식을 좀 더 깊이 하기 위하여, 메시지 전달 인터페이스(MPI) 표준은 다음과 같은 개념을 정의한다: 병렬 작업의 프로세스들은 아래의 도메인내의 메시지의 안정성을 보장하는 통신 도메인 (communication domain) (여기서는 이를 "커뮤니케이터"라고도 부름)내에서 메시지를 교환한다. 하나의 도메인에서 발급된 메시지는 다른 도메인에서 발급된 메시지와 간섭하지 않는다. 병렬 작업이 일단 시작되면, 프로세스의 서브셋(subset)들은, 필요할 때 개별적인 통신 도메인을 형성하기 위해 협력한다.
출원자들은 멀티 스레드들이 동시에 통신 도메인을 획득하려고 하는 것을 특징으로 하는 멀티스레드 환경에서 문제가 생긴다는 것을 인식한다. 이 문제를 다루지 않으면, 교착(deadlock)이 생길 수 있다. 그러므로, 멀티 스레드 프로세싱 시스템에서 분산된 동의를 얻기 위한 결정적이고, 교착이 생기지 않는 기술이 필요하다. 본 발명은 이러한 필요성을 해결하기 위한 기술을 제공한다.
상술한 객체, 본 발명의 장점 및 특징 이외의 다른 것들은 첨부된 도면과 함께 본 발명의 소정의 바람직한 실시예에 대한 다음의 상세한 설명으로부터 보다 쉽게 이해될 수 있을 것이다.
도 1은 본 발명에 따라 통신 도메인 동의 능력(communication domain consensus capabilities)을 포함하는 스레드 컴퓨터 환경에 대한 일 실시예.
도 2는 본 발명의 원리에 따라 멀티 통신 도메인이 멀티 프로세스의 멀티 스레드간에 설정된 것을 특징으로 하는, 멀티 스레드를 포함하는 멀티 프로세스에 대한 개략적인 도면.
도 3a 및 3b는 본 발명의 원리에 따라 통신 도메인 동의 기술의 일 실시예를 도시한 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
102 : 컴퓨팅 유닛
104 : 패킷 스위치 네트워크
110 : MPI 라이브러리(MPI Library)
112 : 어댑터(adapter)
간략히 요약하자면, 한 측면에서, 멀티 스레드들이 동시에 커뮤니케이터를 설정하려고 시도하는 멀티 스레드 컴퓨터 환경의 멀티 프로세스간에 커뮤니케이터를 설정하기 위한 방법이 여기에 제시된다. 상기 방법은: 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹을 위한 커뮤니케이터의 후보 식별자를 설정하기 위한 상기 멀티 프로세스간의 통신하는 단계; 및 멀티 프로세스의 각각 참여하는 스레드에서 상기 후보 식별자가 자신의 프로세스에서 요구될 수 있는지의 여부를 확인하기 위한 상기 멀티 프로세스간의 통신하는 단계, 및 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로 요청함으로써 상기 커뮤니케이터를 설정하는 단계를 포함한다.
다른 한 측면에서, 멀티 스레드들이 동시에 커뮤니케이터를 설정하려고 시도하는 멀티 스레드 컴퓨터 환경내의 멀티 프로세스간에 커뮤니케이터를 설정하기 위해서 시스템이 제공된다. 상기 시스템은 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹을 위해 커뮤니케이터의 후보 식별자를 설정하기 위한 멀티 프로세스간에 통신을 하기 위한 수단; 및 멀티 프로세스의 각가의 참여하는 스레드에서 상기 후보 식별자가 자신의 프로세스에서 요구될 수 있는지의 여부를 확인하기 위한 상기 멀티 프로세스간의 통신, 및 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로 요청함으로써 상기 커뮤니케이터를 설정하기 위한 수단을 포함한다.
추가적인 측면에서, 본 발명은 기계에 의해 판독가능하고, 멀티 스레드들이 동시에 커뮤니케이터를 설정하려고 시도하는 멀티 스레드 컴퓨터 환경내의 멀티 프로세스간에 커뮤니케이터를 설정하기 위한 방법을 실행하기 위하여 상기 기계에 의해 실행가능한 적어도 하나의 지시 프로그램을 현실적으로 구현하는 적어도 하나의 프로그램 저장 디바이스를 포함한다. 상기 방법은 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹을 위해 커뮤니케이터의 후보 식별자를 설정하기 위한 멀티 프로세스간의 통신하는 단계; 및 멀티 프로세스의 각각의 참여하는 스레드에서 상기 후보 식별자가 자신의 프로세스에서 요구될 수 있는지의 여부를 확인하기 위한 상기 멀티 프로세스간의 통신하는 단계, 및 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로 요청함으로써 상기 커뮤니케이터를 설정하는 단계를 포함한다.
다시 말하자면, 여기에는 멀티 스레드 멀티 프로세스 컴퓨터 환경에서 분산 동의를 달성하기 위한 기술이 제시된다. 상기 기술은 결정적인데, 이는 상기 스레드들이 재시도의 정해진 숫자내에서, 그리고 예측 가능한 순서로 커뮤니케이터를 생성하는 데 성공할 것이기 때문이다. 이것은, 커뮤니케이터를 생성하는데 실패한 스레드들이 재시도전에 단지 임의의 시간동안 대기하는, 소위 "무작위(randomized) " 알고리즘에 비해 이점이 있다고 여겨진다. 또한, 여기서 제시되는 상기 기술은 스레드사이에 교착을 회피하는 것을 보장한다. 이것은 교착 상황을 탐지하여 그 후에 상기 교착을 풀기위해 행동을 취하는 다른 알고리즘들에 비해 이점이 있다. 교착 탐지는 일반적으로 어떤 스레드도 진행되지 않는 동안에 소정의 시간의 주기가 지났는지를 인지하는 것과 관련있다. 동시에 커뮤니케이터를 설정하려고 시도하는 스레드의 다수의 그룹들이 존재하는 것에도 불구하고, 스레드가 새로운 통신 도메인에 대한 분산 동의를 획득하기 위해 강제로 재시도되는 횟수에 상위 한계가 있기 때문에, 여기서 제시된 분산 동의 능력은 효율적이다.
본 발명의 능력을 사용 및 포함하는 스레드 컴퓨터 환경의 한 실시예를 도 1을 참조로 하여 아래에 설명하도록 한다.
도시된 바와 같이, 컴퓨터 환경(100)은 연결부(104)를 통해 서로 연결되는 복수의 컴퓨팅 노드(102)들을 포함한다. 일례로서, 각 컴퓨팅 노드는 국제 비지니스 기계 법인(International Business Machines Corporation)에서 제공하는 RS/6000 SP 시스템의 노드로 구성될 수 있고, 또한 연결부(104)는 마찬가지로 국제 비지니스 기계 법인에 의해 제공되는 SP 스위치 또는 고성능 스위치(High Performance Switch, HPS)와 같은 패킷 스위치 네트워크(packet switch network)이 될 수 있다. 다시 한번, 도 1은 단지 예시로서 제시된 것임을 주목하기 바란다. 본원에 개시된 기술은 도 1에 도시되어 있는 멀티 프로세서 환경이외에도 단일 기계에서 동작하는 단일 스레드 또는 멀티 스레드 프로그램의 임의의 세트에 적용될 수 있다.
환경(100) 내에서, 패킷 스위치 네트워크(104)를 통해 소스 컴퓨팅 노드(송신기)로부터 수신기 컴퓨팅 노드(수신기)로 메시지 패킷이 전달된다. 예를 들어, 컴퓨팅 유닛 N의 사용자 작업(106)은 컴퓨팅 유닛 1(수신기)의 사용자 작업(106)으로 메시지를 보낼 수 있다. 어댑터(112)는 컴퓨팅 유닛(102)을 스위치(104)로 연결시킨다. 스위치(104)의 일례가 출판번호 GC23-3897-02(1996)의 "AIX 관리 지침을 위한 IBM 병렬 시스템 지원 프로그램"에 자세히 설명되어 있다.
보다 더 상세히 설명하자면, 컴퓨팅 유닛과 이와 연관된 어댑터(112)간의 통신은, 예를 들어, 통신 개방(open communication), 통신 폐쇄(close communication), 루트 인에이블(enable route), 루트 디스에이블(disable route), 상태 리턴(return status), 및 어댑터 리셋(reset adapter)과 같은 함수를 포함하는 인터페이스에 의해 설명된다. 일 실시예에서, 상기 인터페이스는 메시지 전달 인터페이스(MPI)(110) - 본원에서는 MPI 라이브러리로서 나타냄 - 을 포함한다.
상기 어댑터로의 액세스는 각 컴퓨팅 유닛(102)내의 커널 확장/디바이스 드라이버(108)에 의해 전달된다. 확장(108)은 운영 시스템(예를 들어, 국제 비지니스 기계 법인에 의해 제공되는 AIX 운영 시스템)자체의 권한을 가지고 있는 함수의 세트를 포함한다. 상기 커널 확장은 사용자 작업(106)(또는 프로그램)이 어댑터(112)를 사용할 수 있도록 허가하고, 필요하다면 사용자 작업에 인터럽트를 거는 능력을 가진다. 사용자 작업(106)은 MPI 라이브러리(110)을 통하여 어댑터(112)와 통신한다. 상기 MPI 라이브러리는, 예를 들어, 국제 비지니스 기계 법인의 출판물, 제목 "AIX를 위한 IBM병렬 환경: MPI프로그래밍 및 서브루틴 참고서" 버전 2, 4판 (1998년 10월)에 더 자세히 설명되어 있는데 그 전체를 본원에 참고로 첨부한다.
국제 비지니스 기계 법인에 의한 MPI 라이브러리 구현은 다양한 추가 출판물들에 자세히 설명되어 있다. 예를 들어, IBM 시스템 저널의 기사, 제목 "IBM SP2의 병렬 환경에서의 통신 소프트웨어(The Communication Software In Parallel Environment Of The IBM SP2", 34권 2호, 페이지 205-215 (1995)를 참고하라. 추가 정보는 Prentice Hall Inc 에 의해 1990년 출판된 W. Richard Stevens의 "유닉스 네트워크 프로그래밍(UNIX Network Programming)"이라는 제목의 문헌에서 입수할 수 있다. 이러한 두개의 참고문헌 모두 본원에 전체가 첨부되어 있다.
언급한 바와 같이, 본원에서는 컴퓨팅 환경이 스레드 컴퓨터 환경을 포함하여, 그 결과 상기 사용자 작업이 멀티 스레드를 포함할 수 있고, 상기 라이브러리는 스레드 MPI인 것을 가정한다. 스레드 컴퓨터 환경은 오늘날 산업계에서 잘 알려져 있다. 스레드 MPI 라이브러리는 국제 비지니스 기계 법인의 "AIX를 위한 IBM 병렬 환경(IBM Parallel Environment for AIX)", 버전 2, 4판, IBM 제품번호 5765-543 (1998년 10월)로부터 구할 수 있다. 상기 스레드 MPI는 AIX시스템에서 동작하는 라이센스 있는 프로그램 제품을 포함한다.
본 발명의 상세한 일 실시예를 설명하기 전에, 다음과 같은 용어정의를 배경지식으로 제공한다.
"병렬 작업(parallel job)"이란 프로세스의 집합 상에서 동작하는 작업의 집합을 말한다. 상기 작업들은 문제를 함께 풀기 위하여 협동하고 데이터를 교환한다.
"작업(task)"또는 "프로세스(process)"는 실행 프로그램(일련의 명령어)의 예이고, 어드레스 공간 및 하나 이상의 제어 흐름으로 구성된다. 어드레스 공간은 작업이 참조하거나 액세스하는 메모리 위치의 세트이다.
"스레드(thread)"란 작업내의 제어 흐름이다. 요즘은 대부분의 시스템들이 하나의 작업 내에 여러개의 제어 흐름(flow of control)을 지원한다. 상기 스레드들은 동시에 실행될 수 있다.
"MPI 커뮤니케이터(MPI Communicator)"는 통신 작업의 그룹으로 구성된 논리적 엔티티(logical entity)이다. 일례에서, 커뮤니케이터는 문맥 ID(context ID)라고 불리는 식별자를 가지고 구현될 수 있다.
"문맥 ID" 또는 "문맥 식별자"는 특정 MPI 커뮤니케이터를 포함하는 작업간에서는 동일하고, 그 커뮤니케이터에 포함된 다른 작업 상의 다른 임의의 커뮤니케이터와는 구분되는 숫자이다.
"통신 도메인(communication domain)"은 작업들이 커뮤니케이터 교환 메시지를 포함하는 문맥이다. 도메인내에서 송신된 어떤 메시지도 도메인 밖의 (즉, 다른 커뮤니케이터로) 작업으로 전달되지 않는다는 점에서, 편협적인 특징을 가지고 있다. 통신 도메인 및 커뮤니케이터는 여기서 서로 혼용해서 쓰는 용어이다.
절감(reduce) 또는 절감 연산(reduce operation)이란 값의 집합에 대해 실행되는 (예를 들어 SUM, BITWISE AND) 연산으로, 병렬 작업에서 통신 작업의 집합의 각 멤버에 의해 하나의 값이 주어진다. 상기 연산의 결과는 단일 프로세스(절감 연산)에서 또는 모든 관련있는 프로세스(전체 절감 연산(all reduce operation))로 리턴된다.
통신 도메인의 구분을 관리하기 위하여, MPI 라이브러리의 구현은 각 통신 도메인을 상기 도메인 내의 작업 프로세스에 의해 동의된, 고유의 "문맥 ID"와 연관시킨다. 새로운 통신 도메인을 생성하기 위한 MPI 라이브러리 루틴이 병렬 작업의 프로레스의 서브셋(즉, 스레드)에 의해 호출될 수 있다. 상기 라이브러리 루틴은 도메인내의 모든 프로세스에 걸쳐 고유하고, 상기 서브셋내의 모든 프로세스에서 사용 가능한 공통 문맥 ID를 요구 및 식별함으로써 상기 새로운 도메인을 생성해야한다. 소정의 스레드의 그룹들이 새로운 통신 도메인을 생성하기 위한 호출을 동시에 할 수 있다. 상기 스레드들중 일부는 동일한 프로세스 내일 수도 있고, 다른 프로세스일 수도 있다.
도 2는 세개의 프로세스 (200, 202, 204)(프로세스(1), 프로세스(2), 프로세스(3))에서 스레드(1)가 커뮤니케이터 A를 형성하기 위해 MPI 라이브러리를 호출하고, 프로세스(1)(2)에서 스레드(2)가 커뮤니케이터 B를 형성하기 위해 MPI 라이브러리를 호출하고, 프로세스(2)(3)에서 스레드(3)가 커뮤니케이터 C를 형성하기 위해 MPI 라이브러리를 호출하는 시나리오를 도시한 것이다. 임의의 주어진 프로세스에서, 임의의 순서로 상기 호출이 발생한다. MPI 시멘틱(semantic)은 모든 스레드가 진행되고, 각 라이브러리 호출이 최종적으로 리턴될 것을 요구한다.
상기 문제는 스레드의 멀티 그룹이 존재하는 상황에서 각각의 새로운 통신 도메인에 대한 고유한 문맥 ID를 선택하는 것이다. 이 때, 스레드는 사용 가능한 ID중 하나를 획득하려고 동시에 시도한다. 문맥 ID 리스트와 같은 광역 데이터에 대한 액세스는 멀티스레드 라이브러리 내에서 직렬화되어야 한다. 그러나, 어떤 스레드도, 프로세스가 공통 문맥 ID를 식별하기 위해 필요한 통신 페이즈(phase)동안에는 상기 작업이 교착되기 때문에, 로크를 유지할 수 없다.
따라서, 일반적으로 말하면, 멀티 스레드가 동시에 커뮤니케이터를 설정하려고 하는 멀티 스레드 컴퓨터 환경에서 멀티 프로세스에 간의 커뮤니케이터를 설정하려고 할 때 교착을 피하기 위한 방법이 본원에서 제시된다. 커뮤니케이터를 설정하려고 시도하는 스레드들이 상기 관련있는 스레드들을 포함하는 프로세스에 걸쳐 고유한 값(문맥 ID)에 동의했을 때, 커뮤니케이터가 설정된다고 생각할 수 있다.
상기 방법은 두개의 페이즈가 있다. 첫번째 페이즈에서는, 후보 문맥 ID(여기서는 후보 식별자라고도 칭함)가 커뮤니케이터를 생성하려고 하는 스레드 사이에서 설정된다. 두번째 페이즈에서는, 각각의 관련있는 스레드가, 각 프로세스에서 후보 문맥 ID를 요청할 수 있는지를 확인하고, 만일 그렇다면, 문맥 ID를 요청하고, 다른 관련있는 스레드들에게 상기 연산의 결과를 보고한다. 교착을 회피하기 위하여, 커뮤니케이터를 설정하려고 하는 프로세스들의 스레드는, 상기 프로세스내의 스레드가 문맥을 요청하기 위한 권한을 갖는 것을 제어하는 각각의 프로세스에서의 우선순위 큐(priority queue)에 놓이게 된다. 이러한 스레드들은, 일례로, 스레드가 새로운 커뮤니케이터를 요구하는 현재 문맥 식별자에 기초하여 우선순위가 정해진다. 임의의 스레드가 두번째 페이즈에서 장애를 보고하면, 상기 방법은 새로운 후보 문맥 ID를 선택하는 첫번째 페이즈에서 다시 시작한다.
보다 더 구체적으로, 본 발명에 따라, 상기 MPI 라이브러리는 병렬 작업의 각각의 프로세스에서 자유 문맥 ID 리스트 - 스칼라임 - 를 유지한다(본원에서는 "광역 문맥 리스트"라고 칭한다). 이 문맥 ID 리스트는 모든 프로세스에 대해 포괄적이며, 그것에 대한 스레드의 액세스는 로크에 의해 직렬화된다. MPI 작업이 초기화될 때, 모든 관여하는 프로세스들은 단일 스레드이며, 예를 들면, 가장 작은 문맥 ID가 할당된 단일 통신 도메인에 속하게 된다. 초기화이후에, 새로운 통신 도메인을 생성하기 위하여 상기 라이브러리를 호출하는 임의의 스레드 세트중의 각각의 스레드는 현재 도메인의 문맥내에서 이러한 작업을 한다. 본 발명의 한 측면에서, 이러한 현재 도메인의 문맥 식별자는, 아래에서 추가로 설명되는 것과 같이, 새로운 문맥 ID의 할당에 우선순위를 부여하는 데 사용된다.
새로운 통신 도메인에 대한 요구가 발생하는 문맥 ID는, 상기 프로세스에 포괄적이고, 로크하에서 액세스되는 정렬 리스트(상기 "우선순위 리스트")로 된다. 가장 작은 문맥 ID하에서 요구를 생성하는 스레드가 상기 우선순위 리스트에 첫번째일 것이고, 따라서, 상기 프로세스에서 상기 광역 문맥 리스트를 갱신하도록 허가되는 스레드이다.
최종 문맥 ID(여기서는 새로운 문맥 ID라고도 칭함)에 대해 동의는 최소한 2개 라운드의 통신이 필요하다. 제1 통신 라운드는 후보 문맥 ID(후보 식별자)를 생성하고, 현재 도메인의 모든 프로세스가 서브루틴 호출에 참여하는것을 보장한다(즉, 상기 호출은 어떤 프로세스에서 지연되거나 막힌다). 일단 모든 프로세스가 참여하고 있다고 확인되면, 각각의 스레드는 자신의 현재 문맥 ID를 프로세스의 우선순위 리스트(우선순위 큐라고도 칭한다)에 삽입한다. 임의의 주어진 프로세스에서, 후보 문맥 ID는 다른 스레드에 의해 요청될 수 있고, 제1 통신 라운드동안에 로크가 해제되어, 다음 단계는 후보 문맥 ID가 모든 참여하는 프로세스에서 요구될 수 있는지를 확인하고, 이 경우 동의가 이루어질 수 있다. 만일 후보 식별자가 여전히 사용 가능하고 상기 스레드가 우선순위 리스트의 처음이면(즉, 우선순위를 가지면), 상기 스레드는 광역 문맥 리스트로부터 상기 후보 식별자를 갱신(즉, 제거)하고, 따라서 상기 후보 식별자를 새로운 식별자로 "요구(claiming)"한다. 만일 스레드가 우선순위 리스트의 처음에 있지 않으면, 상기 스레드는 로크를 해제하고, 상태 변수를 기다린다. 제2 통신 라운드가 진행되어, 만일 후보 식별자가 소정의 프로세스에서 요구될 수 없으면, 그 후, 그 프로세스의 광역 문맥 식별자 리스트를 갱신하는 임의의 스레드가 상기 갱신을 취소한다(즉, 상기 이전에 제거된 후보 식별자를 다시 상기 리스트로 추가한다). 만일 모든 프로세스가 후보 식별자를 요구했으면, 그 후, 성공한 스레드는 자신의 현재 문맥 식별자를 우선순위 리스트에서 제거하고 임의의 대기중인 스레드들을 호출한다.
우선순위 큐에서 높은 우선순위를 가지지 못하여 기다리고 있는 스레드는, 후보 식별자가 아직 사용 가능한지를 광역 문맥 식별자 리스트가 확인하는 시점에서 프로세싱을 재개한다. 참여하고 있는 스레드가 각자의 프로세스에서 후보 식별자를 요구하지 못하여 동의에 실패한 스레드는 제1 통신라운드에서 새로운 후보 식별자를 선택하도록 계속 진행된다.
도 3a 및 도 3b는 본 발명의 원리에 따라, 멀티스레드 컴퓨터 환경에서 멀티 프로세스간의 커뮤니케이터를 설정설정하기 위한 결정적인 접근법의 보다 자세한 실시예를 도시한다. 이 같은 제어 순서도 (도 3a와 도 3b)는 계산 도메인 내의 모든 프로세스에서 수행되어야 한다는 것을 주의하라. 로컬 context_list는 로컬 프로세스에서 사용 가능한 자유 문맥 식별자의 리스트이다. find_candidate_context(temp_list)는 모든 프로세스에서 사용 가능한 문맥 ID를 찾는 함수이다. update_results(value)함수는, 만일 value가 모든 프로세스에 대해 참이면 TRUE를 리턴하고, 그렇지 않으면 FALSE를 리턴한다. 동시에 새로운 문맥 식별자를 획득하려고 하는 두개의 스레드가 있으면, 하나의 스레드는 대기 상태로 끝난다.
도 3a를 참조로 하면, 프로세싱은 새로운 커뮤니케이터를 위한 호출이 이루어지는 것으로부터 현재 커뮤니케이터의 문맥 식별자인 current_context(300)을 입력으로 받는다. 그 다음에는, 로크를 획득하고, new_context_commit 플래그가 FALSE로 설정되며, current_context 식별자가 get_context 큐(310)(즉, 우선순위큐)에 추가된다.
그리고 나서, new_context_commit 플래그가 TRUE인지를 조회하여(320), 만일 그렇다면, 새로운 문맥 식별자로서 상기 후보 식별자를 리턴하여, 커뮤니케이터를 설정하고 프로세싱(330)을 마친다. new_context_commit 플래그가 참이 아니라면, 그 후, 유효한 문맥 ID의 리스트(temp_context_list)가 설정되고, 로크가 해제되고, 새로운 문맥 식별자를 찾는다(find_candidate_context(temp_list)). 이 다음에 로크를 다시 획득하며, try_to_commit 플래그를 TRUE로 설정한다(340). find_candidate_context(temp_list)는 이 특정 커뮤니케이터상의 모든 프로세스에 대해 유효한 새로운 문맥 식별자를 찾는 전체절감(allreduce)연산을 구현하는 서브루틴이다. 그 다음, try_to_commit 플래그가 TRUE인지를 조회하여(350), 만일 그렇지 않다면, new_context_commit 플래그가 TRUE인지 여부를 조회하는 곳(320)으로 리턴한다. 만약 그렇지 않으면, new_context(즉, 후보 식별자)가 로컬 문맥 리스트(프로세스에서 사용 가능한 문맥 리스트)에 있는지 조회한다(360). 만일 아니라면, 로크가 해제되고, update_results 루틴은 FALSE값을 리턴하고, 상기 로크는 다시 획득되고, try_to_commit 플래그는 FALSE로 설정된다(370). 그리고 나서, 프로세싱은, 도시된 바와 같이, 조회단계(350)로 리턴한다.
도 3b를 참조로 하면, 만일 new_context가 로컬 문맥 리스트에 있으면, 그 후, 스레드가 우선순위 큐에서 우선순위를 가지고 있는지, 즉, get_context큐에 있는지 프로세싱이 조회한다(400). 만일 아니면, 로크가 해제되고, 스레드는 문맥 조건을 기다리며, 그 후에, 로크가 재획득(440)된다. 문맥 조건을 대기는 큐에서 높은 우선순위를 가지는 스레드로부터의 신호를 기다리는 것이다. 그리고 나서, 프로세싱은, try_to_commit 플래그가 TRUE인지 확인하는 단계(350)로 리턴한다 (도 3a).
만일 스레드가 get_context 큐에서 우선순위를 가지면, 프로세싱은 상기 프로세스의 사용 가능한 문맥 식별자 리스트를 갱신하며(즉, 후보 문맥 ID를 리스트에서 제거한다), 로크를 해제하고, update_result TRUE 신호를 참여하는 다른 스레드들에게 보내며, 로크를 다시 요구하고, try_to_commit 플래그를 FALSE로 설정한다(410). 그 다음, update_results가 모든 프로세스에 대해 참인지 조회한다(420). 이러한 조회는 후보 문맥 식별자를 제거함으로써, 모든 프로세스가 성공적으로 자신의 로컬 문맥 식별자 큐를 갱신하였는지를 판단한다. 만일 그렇지 않다면, 자신의 로컬 문맥 식별자 리스트를 갱신한 각각의 프로세스는 로컬 문맥 리스트로의 변화를 취소하고(430), true_to_commit 플래그가 TRUE인지 조회하는 단계(350)(도 3a)로 리턴한다. 모든 프로세스가 사용 가능한 문맥 식별자 리스트를 갱신하였으면, 그 후, current_context는 우선순위 큐에서 제거되고(즉, get_context_queue), 문맥 조건이 신호로 전달되며, new_context_commit 플래그가 TRUE로 설정된다(450). 문맥 조건에 대한 신호는 우선순위 큐에서 대기하는 스레드들을 호출한다(440). try_to_commit 플래그가 TRUE인지 조회하는 단계(350)로 넘어가, 상술한 바와 같이 진행한다
추가 설명으로서, 본 발명의 원리에 따른 프로세싱의 일 실시예의 의사코드(pseudocode)를 아래에 제시된다.
상기 의사코드에서, mpi_allreduce(X)는 호출에 참여하는 프로세스에 의해 제공되는 X값의 세트에 대한 절감연산(reduction operation, 예를 들면, SUM, BITWISE)을 수행하고, 그 결과를 세트의 모든 프로세스에 분배하는 라이브러리 루틴이다. 이는 아래 알고리즘의 통신 단계를 수행하는 데 사용되는 실존하는 라이브러리 함수이다.
본 발명은, 예를 들어, 컴퓨터 사용가능한 미디어를 갖는 제조업의 물건(즉, 하나 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 상기 미디어는 그 내부에, 예를 들어, 본 발명의 능력을 제공하고 이용하기 위한 컴퓨터 판독 가능한 프로그램 코드를 구현할 수 있다. 상기 제조 물건은 컴퓨터 시스템의 일부로 포함시켜도 되고 또는 독자적으로 팔아도 된다.
또한, 본 발명의 능력을 실행하기 위해, 기계에서 실행 가능한 명령어의 적어도 하나의 프로그램을 실질적으로 구현하는, 기계가 판독 가능한 적어도 하나의 프로그램 저장 장치가 제공될 수 있다.
여기서 도시한 순서도는 일 실시예로 제공된 것이다. 본 발명의 사상에 벗어남이 없이, 이러한 도면이나 본원에 설명된 단계들(또는 동작)을 변형시킬 수 있다. 예를 들어, 특정한 경우, 각 단계가 다른 순서로 실행되거나, 다른 단계가 추가되거나, 제거되거나, 수정될 수 있다. 이러한 모든 변형은 첨부된 청구범위에서 열거된 것과 같이 본 발명의 일부분을 구성하는것으로 간주한다.
본 발명은 특정한 바람직한 실시예에 따라 본원에서 자세히 설명되었지만, 본 기술분야에 숙련된 사람이라면, 여기에 변형이나 변화를 가할 수 있을 것이다. 따라서, 첨부된 청구범위는 본 발명의 진정한 사상 및 범주내에 해당되는 이러한 모든 변형 및 변화를 모두 포함하도록 되어 있다.
본원에 따르면, 멀티 스레드 멀티 프로세스 컴퓨터 환경에서 분산 동의를 달성하기 위한 기술이 제시된다. 상기 기술은 결정적인데, 이는 상기 스레드들이 재시도의 정해진 숫자내에서, 그리고 예측 가능한 순서로 커뮤니케이터를 생성하는 데 성공할 것이기 때문이다. 이것은, 커뮤니케이터를 생성하는데 실패한 스레드들이 재시도전에 단지 임의의 시간동안 대기하는, 소위 "무작위(randomized) " 알고리즘에 비해 이점이 있다고 여겨진다. 또한, 여기서 제시되는 상기 기술은 스레드사이에 교착을 회피하는 것을 보장한다. 이것은 교착 상황을 탐지하여 그 후에 상기 교착을 풀기위해 행동을 취하는 다른 알고리즘들에 비해 이점이 있다. 교착 탐지는 일반적으로 어떤 스레드도 진행되지 않는 동안에 소정의 시간의 주기가 지났는지를 인지하는 것과 관련있다. 동시에 커뮤니케이터를 설정하려고 시도하는 스레드의 다수의 그룹들이 존재하는 것에도 불구하고, 스레드가 새로운 통신 도메인에 대한 분산 동의를 획득하기 위해 강제로 재시도되는 횟수에 상위 한계가 있기 때문에, 여기서 제시된 분산 동의 능력은 효율적이다.

Claims (31)

  1. 멀티 스레드(multiple-threads)가 커뮤니케이터(communicator)를 설정하기 위해 동시에 시도하는 멀티 스레드 컴퓨터 환경에서 멀티 프로세스에 걸쳐 커뮤니케이터를 설정하기 위한 방법에 있어서,
    (i) 상기 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹에 대한 상기 커뮤니케이터용 후보 식별자(candidate identifier)를 설정하기 위하여 상기 멀티 프로세스에 걸쳐 통신하는 단계; 및
    (ii) 상기 멀티 프로세스에 걸쳐 통신하여, 상기 멀티 프로세스의 참여하는 각각의 스레드에서 상기 후보 식별자가 그의 프로세스에서요구될 수 있는지를 확인하고, 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로서 요구하여, 상기 커뮤니케이터를 설정하는 단계
    를 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  2. 제1항에 있어서,
    상기 참여하는 스레드의 존재하는 식별자에 기초하여, 각각의 참여하는 스레드를 그의 프로세스에서 우선순위 큐(priority queue)에 위치시키는 단계; 및
    커뮤니케이터를 설정하기 위해 시도하는, 참여하는 스레드의 서로 다른 그룹들의 멀티 스레드사이의 교착(deadlock)을 회피하기 위하여, 상기 통신단계 (ii)동안에, 상기 우선순위 큐를 사용하는 단계를 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  3. 제2항에 있어서,
    각각의 참여하는 스레드에서 상기 확인은, 가장 높게 정의된 우선순위를 가진 스레드가 그 프로세스에서 상기 후보 식별자를 요구하도록 허가하는 단계를 더 포함하고,
    가장 높게 정의된 우선순위를 갖는 상기 스레드는 상기 우선순위 큐로부터 확인되는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  4. 제1항에 있어서,
    상기 통신단계 (ii)는, 각각의 참여하는 스레드에서 상기 확인의 결과를 참여하는 스레드의 상기 그룹의 다른 참여하는 스레드에 보고하는 단계를 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  5. 제1항에 있어서,
    상기 통신단계 (i)는, 상기 커뮤니케이터에 대한 상기 후보 식별자를 설정하기 위하여, 상기 멀티 프로세스의 각각의 프로세스에서 로컬 후보 식별자 리스트 (local candidate identifier list)를 확인하는 단계를 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  6. 제1항에 있어서,
    상기 통신단계 (ii)가 상기 커뮤니케이터를 설정하는데 실패하는 경우, 새로운 후보 식별자를 설정하기 위하여 상기 통신단계 (i)을 반복하는 단계, 및
    상기 새로운 후보 식별자를 위해 상기 통신단계 (ii)를 반복하는 단계를 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  7. 제1항에 있어서,
    상기 통신단계 (i) 및 상기 통신단계 (ii)는 MPI 라이브러리내의 서브루틴 호출에 의해 구현되고,
    상기 후보 식별자는 후보 문맥 식별자(candidate context identifier)를 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  8. 제1항에 있어서,
    상기 통신단계 (i)은, 상기 멀티 프로세스의 모든 프로세스가 상기 커뮤니케이터를 설정하는데 참여한다는 것을 보장하고,
    상기 통신단계 (ii)는, 각각의 참여하는 스레드에 대해, 상기 스레드의 현재 식별자를 상기 스레드의 프로세스에 광역인 우선순위 큐내에 삽입하는 단계를 포함하며,
    상기 통신단계 (ii)는, 상기 우선순위 큐에서 리스트된 것과 같이 가장 높은 우선 순위 조건의 커뮤니케이터로 현재 식별자를 요청하는 스레드가 상기 새로운 식별자로서 그의 후보 식별자를 요구하도록 허용되게 하는 허용단계를 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  9. 제1항에 있어서,
    상기 통신단계 (ii)는, 상기 참여하는 스레드가 그의 프로세스에서 유지되는 우선순위 큐에서 우선순위를 가질경우, 상기 후보 식별자를 요구하는 단계; 및
    만일 그렇다면, 상기 프로세스에서 유지되는 후보 식별자의 로컬 식별자 리스트로부터 상기 후보 식별자를 제거함으로써 상기 후보 식별자를 상기 새로운 식별자로서 요구하는 단계를 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  10. 제9항에 있어서,
    상기 후보 식별자가 상기 멀티 프로세스중의 하나의 프로세스에서 요구될 수 없을 경우, 상기 통신단계 (ii)는 그 프로세스의 로컬 식별자 리스트의 그 후에 참여하는 스레드에 의해 임의의 갱신을 취소하는 단계를 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 방법.
  11. 멀티 스레드가 커뮤니케이터를 설정하기 위해 동시에 시도하는 멀티 스레드 컴퓨터 환경에서 멀티 프로세스에 걸쳐 커뮤니케이터를 설정하기 위한 시스템에 있어서,
    (i) 상기 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹에 대한 상기 커뮤니케이터용 후보 식별자를 설정하기 위하여 상기 멀티 프로세스에 걸쳐 통신하기 위한 수단; 및,
    (ii) 상기 멀티 프로세스에 걸쳐 통신하여, 상기 멀티 프로세스의 참여하는 각각의 스레드에서 상기 후보 식별자가 그의 프로세스에서 요구될 수 있는지를 확인하고, 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로서 요구하여, 상기 커뮤니케이터를 설정하기 위한 수단
    을 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  12. 제11항에 있어서,
    상기 참여하는 스레드의 존재하는 식별자에 기초하여, 각각의 참여하는 스레드를 그의 프로세스에서 우선순위 큐에 위치시키기 위한 수단; 및
    커뮤니케이터를 설정하기 위하여 시도하는, 참여하는 스레드의 서로 다른 그룹의 멀티 스레드사이에 교착을 회피하기 위하여, 상기 통신수단 (ii)의 동작중에 상기 우선순위 큐를 사용하기 위한 수단을 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  13. 제12항에 있어서,
    각각의 참여하는 스레드에서 상기 확인은 가장 높게 정의된 우선순위를 갖는 스레드가 그의 프로세스에서 상기 후보 식별자를 요구하도록 허용하기 위한 수단을 더 포함하고,
    가장 높게 정의된 우선순위를 갖는 상기 스레드는 상기 우선순위 큐로부터 확인되는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  14. 제11항에 있어서,
    상기 통신수단 (ii)은, 각각의 참여하는 스레드에서 상기 확인의 결과를 참여하는 스레드의 상기 그룹의 다른 참여하는 스레드에 보고하기 위한 수단을 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  15. 제11항에 있어서,
    상기 통신수단 (i)은, 상기 커뮤니케이터에 대한 상기 후보 식별자를 설정하기 위하여, 상기 멀티 프로세스의 각각의 프로세스에서 로컬 후보 식별자 리스트를 확인하기 위한 수단을 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  16. 제11항에 있어서,
    상기 통신수단 (ii)이 상기 커뮤니케이터를 설정하는데 실패하는 경우, 새로운 후보 식별자를 설정하기 위하여 상기 통신수단 (i)의 동작을 반복하기 위한 수단, 및
    상기 새로운 후보 식별자를 위해 상기 통신수단 (ii)의 동작을 반복하기 위한 수단을 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  17. 제11항에 있어서,
    상기 통신수단 (i) 및 상기 통신수단 (ii)은 MPI 라이브러리내의 서브루틴 호출에 의해 구현되고,
    상기 후보 식별자는 후보 문맥 식별자(candidate context identifier)를 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  18. 제11항에 있어서,
    상기 통신수단 (i)은, 상기 멀티 프로세스의 모든 프로세스가 상기 커뮤니케이터를 설정하는데 참여한다는 것을 보장하고,
    상기 통신수단 (ii)은, 각각의 참여하는 스레드에 대해, 상기 스레드의 현재 식별자를 상기 스레드의 프로세스에 광역인 우선순위 큐내에 삽입하기 위한 수단을 포함하며,
    상기 통신수단 (ii)은, 상기 우선순위 큐에서 리스트된 것과 같이 가장 높은 우선 순위 조건의 커뮤니케이터로 현재 식별자를 요청하는 스레드가 상기 새로운 식별자로서 그의 후보 식별자를 요구하도록 허용되는 것을 허용하기 위한 수단을 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  19. 제11항에 있어서,
    상기 통신수단 (ii)은, 상기 참여하는 스레드가 그의 프로세스에서 유지되는 우선순위 큐에서 우선순위를 가질경우, 상기 후보 식별자를 요구하고, 만일 그렇다면, 상기 프로세스에서 유지되는 후보 식별자의 로컬 식별자 리스트로부터 상기 후보 식별자를 제거함으로써 상기 후보 식별자를 상기 새로운 식별자로서 요구하기 위한 수단을 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  20. 제19항에 있어서,
    상기 후보 식별자가 상기 멀티 프로세스중의 하나의 프로세스에서 요구될 수 없을 경우, 상기 통신수단 (ii)은, 그 프로세스의 로컬 식별자 리스트의 그 후에 참여하는 스레드에 의해 임의의 갱신을 취소하기 위한 수단을 더 포함하는 것을 특징으로 하는 커뮤니케이터 설정 시스템.
  21. 멀티 프로세스, 멀티 스레드 컴퓨터 환경에 있어서,
    멀티 스레드가 커뮤니케이터를 설정하기 위하여 동시에 시도하는 것에도 불구하고, 그의 멀티 프로세스에 걸쳐 커뮤니케이터의 설정을 허용하게 되는 적어도 하나의 컴퓨터 유닛
    을 포함하고,
    상기 설정은 교착없이 진행되고,
    상기 적어도 하나의 컴퓨터 유닛은:
    (i) 상기 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹에 대한 상기 커뮤니케이터용 후보 식별자를 설정하기 위하여 상기 멀티 프로세스에 걸쳐 통신하게 되고,
    (ii) 상기 후보 식별자가 그의 프로세스에서 요구될 수 있는지를 상기 멀티 프로세스의 참여하는 각각의 스레드에서 확인하기 위하여 상기 멀티 프로세스에 걸쳐 통신하게 되고, 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로서 요구하여, 상기 커뮤니케이터를 설정하게 되는
    것을 특징으로 하는 멀티 프로세스, 멀티 스레드 컴퓨터 환경.
  22. 멀티 스레드가 커뮤니케이터를 설정하기 위하여 동시에 시도하는 멀티 스레드 컴퓨터 환경에서, 멀티 프로세스에 걸쳐 커뮤니케이터를 설정하기 위한 방법을 실행하기 위하여, 기계에 의해 실행가능한 명령어들로 이루어진 적어도 하나의 프로그램을 실질적으로 구현하는, 기계에 의해 판독가능한 적어도 하나의 프로그램 저장 디바이스에 있어서,
    상기 방법은,
    (i) 상기 멀티 프로세스상에 걸쳐 참여하는 스레드의 그룹에 대한 상기 커뮤니케이터용 후보 식별자를 설정하기 위하여 상기 멀티 프로세스에 걸쳐 통신하는 단계; 및,
    (ii) 상기 멀티 프로세스에 걸쳐 통신하여, 상기 멀티 프로세스의 참여하는 각각의 스레드에서 상기 후보 식별자가 그의 프로세스에서 요구될 수 있는지를 확인하고, 만일 그렇다면, 상기 후보 식별자를 새로운 식별자로서 요구하여, 상기 커뮤니케이터를 설정하는 단계
    를 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  23. 제22항에 있어서,
    상기 참여하는 스레드의 존재하는 식별자에 기초하여, 각각의 참여하는 스레드를 그의 프로세스에서 우선순위 큐에 위치시키는 단계; 및
    상기 통신단계 (ii)동안에, 커뮤니케이터를 설정하기 위하여 시도하는, 참여하는 스레드의 서로 다른 그룹의 멀티 스레드사이에 교착을 회피하기 위하여 상기 우선순위 큐를 사용하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  24. 제23항에 있어서,
    각각의 참여하는 스레드에서 상기 확인은 가장 높게 정의된 우선순위를 갖는 스레드가 그 프로세스에서 상기 후보 식별자를 요구하도록 허용하는 단계를 더 포함하고,
    가장 높게 정의된 우선순위를 갖는 상기 스레드는 상기 우선순위 큐로부터 확인되는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  25. 제22항에 있어서,
    상기 통신단계 (ii)는, 각각의 참여하는 스레드에서 상기 확인의 결과를 참여하는 스레드의 상기 그룹의 다른 참여하는 스레드에 보고하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  26. 제22항에 있어서,
    상기 통신단계 (i)는, 상기 커뮤니케이터에 대한 상기 후보 식별자를 설정하기 위하여, 상기 멀티 프로세스의 각각의 프로세스에서 로컬 후보 식별자 리스트를 확인하는 단계를 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  27. 제22항에 있어서,
    상기 통신단계 (ii)가 상기 커뮤니케이터를 설정하는데 실패하는 경우, 상기 방법은, 새로운 후보 식별자를 설정하기 위하여 상기 통신 단계 (i)을 반복하는 단계, 및
    상기 새로운 후보 식별자를 위해 상기 통신단계 (ii)를 반복하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  28. 제22항에 있어서,
    상기 통신단계 (i) 및 상기 통신단계 (ii)는 MPI 라이브러리내의 서브루틴 호출에 의해 구현되고,
    상기 후보 식별자는 후보 문맥 식별자를 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  29. 제22항에 있어서,
    상기 통신단계 (i)은, 상기 멀티 프로세스의 모든 프로세스가 상기 커뮤니케이터를 설정하는데 참여한다는 것을 보장하고,
    상기 통신단계 (ii)는, 각각의 참여하는 스레드에 대해, 상기 스레드의 현재 식별자를 상기 스레드의 프로세스에 광역인 우선순위 큐내에 삽입하는 단계를 포함하며,
    상기 통신단계 (ii)는, 상기 우선순위 큐에서 리스트된 것과 같이, 가장 높은 우선 순위 조건의 커뮤니케이터로 현재 식별자를 요청하는 스레드가 상기 새로운 식별자로서 그의 후보 식별자를 요구하도록 허용되게 하는 허용단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  30. 제22항에 있어서,
    상기 통신단계 (ii)는, 상기 참여하는 스레드가 그의 프로세스에서 유지되는 우선순위 큐에서 우선순위를 가질경우, 상기 후보 식별자를 요구하고, 만일 그렇다면, 상기 프로세스에서 유지되는 후보 식별자의 로컬 식별자 리스트로부터 상기 후보 식별자를 제거함으로써 상기 후보 식별자를 상기 새로운 식별자로서 요구하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
  31. 제30항에 있어서,
    상기 후보 식별자가 상기 멀티 프로세스중의 하나의 프로세스에서 요구될 수 없을 경우, 상기 통신단계 (ii)는 그 프로세스의 로컬 식별자 리스트의 그 후에 참여하는 스레드에 의해 임의의 갱신을 취소하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 프로그램 저장 디바이스.
KR10-2000-0053806A 1999-09-23 2000-09-09 멀티스레드화 컴퓨터 환경에서 복수의 프로세스간의 커뮤니케이터 설정 KR100390611B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/404,381 1999-09-23
US09/404,381 US6782537B1 (en) 1999-09-23 1999-09-23 Establishing a communicator across multiple processes in a multithreaded computing environment
US9/404,381 1999-09-23

Publications (2)

Publication Number Publication Date
KR20010050426A true KR20010050426A (ko) 2001-06-15
KR100390611B1 KR100390611B1 (ko) 2003-07-07

Family

ID=23599373

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0053806A KR100390611B1 (ko) 1999-09-23 2000-09-09 멀티스레드화 컴퓨터 환경에서 복수의 프로세스간의 커뮤니케이터 설정

Country Status (4)

Country Link
US (1) US6782537B1 (ko)
JP (1) JP3697148B2 (ko)
KR (1) KR100390611B1 (ko)
CN (1) CN1133925C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022080652A1 (ko) * 2020-10-12 2022-04-21 삼성전자 주식회사 저널 파일을 관리하는 전자 장치 및 이의 동작 방법

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4054572B2 (ja) * 2001-12-17 2008-02-27 キヤノン株式会社 アプリケーション実行システム
WO2003083614A2 (en) * 2002-03-25 2003-10-09 Eternal Systems, Inc. Transparent consistent active replication of multithreaded application programs
CN1324478C (zh) * 2003-12-19 2007-07-04 华为技术有限公司 一种多线程处理器线程死锁检测的方法及其系统
US20050149991A1 (en) * 2004-01-06 2005-07-07 Hallberg Bryan S. Method and apparatus for finding applications and relating icons loaded on a television
US7774783B2 (en) * 2004-12-23 2010-08-10 Microsoft Corporation Method and apparatus for detecting deadlocks
US7895596B2 (en) * 2005-09-13 2011-02-22 Hewlett-Packard Development Company, L.P. Processor assignment in multi-processor systems
US8170041B1 (en) * 2005-09-14 2012-05-01 Sandia Corporation Message passing with parallel queue traversal
WO2007038445A2 (en) * 2005-09-26 2007-04-05 Advanced Cluster Systems, Llc Clustered computer system
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
US8924590B2 (en) * 2006-02-14 2014-12-30 Hewlett-Packard Development Company, L.P. System and method for communicating in a networked system
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
CN101216780B (zh) * 2007-01-05 2011-04-06 中兴通讯股份有限公司 在对称多处理体系下实现多实例线程通信的方法及装置
US20080250412A1 (en) * 2007-04-06 2008-10-09 Elizabeth An-Li Clark Cooperative process-wide synchronization
US7966624B2 (en) * 2007-08-22 2011-06-21 Intel Corporation Using message passing interface (MPI) profiling interface for emulating different MPI implementations
CN101127685B (zh) * 2007-09-20 2011-05-25 中兴通讯股份有限公司 一种进程间通讯装置及其进程间通讯方法
US9087311B2 (en) * 2008-05-07 2015-07-21 International Business Machines Corporation Method, system and program product for grouping related program sequences
US8255451B2 (en) * 2008-09-17 2012-08-28 Microsoft Corporation Technologies for detecting erroneous resumptions in a continuation based runtime
US9268608B2 (en) 2009-02-26 2016-02-23 Oracle International Corporation Automatic administration of UNIX commands
CN101571814B (zh) * 2009-06-01 2011-08-24 中国科学院计算技术研究所 基于消息传递接口的设备的通信行为信息提取方法及系统
US8539456B2 (en) * 2009-06-30 2013-09-17 Intel Corporation Automatic conversion of MPI source code programs into MPI thread-based programs
US20140157279A1 (en) * 2011-07-29 2014-06-05 Nec Corporation Information processing apparatus, information processing system, information processing method and control program storage medium
US9275369B2 (en) 2011-08-24 2016-03-01 Oracle International Corporation Demystifying obfuscated information transfer for performing automated system administration
FR2984557B1 (fr) * 2011-12-20 2014-07-25 IFP Energies Nouvelles Systeme et procede de prediction des emissions de polluants d'un vehicule avec calculs simultanes de la cinetique chimique et des emissions
CN103257887B (zh) * 2012-02-16 2016-06-08 宇龙计算机通信科技(深圳)有限公司 终端和进程控制方法
KR101994929B1 (ko) 2012-12-03 2019-07-01 삼성전자주식회사 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템
CN103019843B (zh) * 2012-12-05 2016-05-11 北京奇虎科技有限公司 Mpi函数调用方法和装置
CN103019844B (zh) * 2012-12-05 2016-05-04 北京奇虎科技有限公司 一种支持多线程调用mpi函数的方法和装置
CN103164359B (zh) * 2013-01-29 2017-04-05 北京雪迪龙科技股份有限公司 一种管道通信方法和装置
US9626261B2 (en) * 2013-11-27 2017-04-18 Futurewei Technologies, Inc. Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud
US9164792B2 (en) * 2014-01-06 2015-10-20 International Business Machines Corporation Executing a gather operation on a parallel computer that includes a plurality of compute nodes
CN103744643B (zh) * 2014-01-10 2016-09-21 浪潮(北京)电子信息产业有限公司 一种多线程程序下多节点并行架构的方法及装置
KR102246362B1 (ko) 2014-10-24 2021-04-28 삼성전자주식회사 무선 그리드 컴퓨팅 방법 및 장치
CN106155846B (zh) * 2015-04-15 2019-06-28 伊姆西公司 对块对象执行批量故障回复的方法和装置
CN106371912B (zh) * 2015-07-21 2019-11-26 阿里巴巴集团控股有限公司 一种流式计算系统的资源调度方法和装置
CN105912385A (zh) * 2016-04-12 2016-08-31 北京橙鑫数据科技有限公司 基于安卓系统的应用程序对数据库的操作方法和装置
CN106095602B (zh) * 2016-06-22 2019-07-26 东软集团股份有限公司 控制进程运行的方法及装置
US11036563B2 (en) * 2019-03-19 2021-06-15 International Business Machines Corporation Deadlock resolution between distributed processes using process and group information
CN111343239B (zh) * 2020-02-10 2022-11-04 中国银联股份有限公司 通信请求处理方法、通信方法、通信请求处理装置以及交易系统
US20200358721A1 (en) * 2020-07-30 2020-11-12 Intel Corporation Buffer allocation for parallel processing of data

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4584639A (en) 1983-12-23 1986-04-22 Key Logic, Inc. Computer security system
US5210874A (en) 1988-03-22 1993-05-11 Digital Equipment Corporation Cross-domain call system in a capability based digital data processing system
US5410691A (en) 1990-05-07 1995-04-25 Next Computer, Inc. Method and apparatus for providing a network configuration database
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5280614A (en) 1990-08-21 1994-01-18 International Business Machines Corporation Apparatus and method for controlling access to data using domains
JP2561759B2 (ja) * 1991-03-29 1996-12-11 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサシステムおよびそのメッセージ送受信制御装置
US5261053A (en) * 1991-08-19 1993-11-09 Sequent Computer Systems, Inc. Cache affinity scheduler
US5390310A (en) 1991-09-30 1995-02-14 Apple Computer, Inc. Memory management unit having cross-domain control
US5428803A (en) * 1992-07-10 1995-06-27 Cray Research, Inc. Method and apparatus for a unified parallel processing architecture
US5485626A (en) * 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
US5481706A (en) 1993-11-01 1996-01-02 International Business Machines Corporation System and method for creating thread-safe shared libraries
US5668993A (en) * 1994-02-28 1997-09-16 Teleflex Information Systems, Inc. Multithreaded batch processing system
US5864683A (en) 1994-10-12 1999-01-26 Secure Computing Corporartion System for providing secure internetwork by connecting type enforcing secure computers to external network for limiting access to data based on user and process access rights
CA2136154C (en) 1994-11-18 1999-08-24 Jay William Benayon User control of multiple memory heaps
JPH08235141A (ja) * 1995-02-28 1996-09-13 Kofu Nippon Denki Kk 情報処理システム
US6487580B1 (en) * 1995-09-25 2002-11-26 International Business Machines Corporation Method and system for managing concurrently executable computer processes
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US6535929B1 (en) * 1996-07-02 2003-03-18 Sun Microsystems, Inc. Universal communication mechanism for applications running in a multitasking environment
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
JP3697831B2 (ja) * 1997-04-18 2005-09-21 株式会社日立製作所 コンピュータシステム
US6209064B1 (en) * 1998-01-07 2001-03-27 Fujitsu Limited Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system
US6529932B1 (en) * 1998-04-01 2003-03-04 Microsoft Corporation Method and system for distributed transaction processing with asynchronous message delivery
US6647423B2 (en) * 1998-06-16 2003-11-11 Intel Corporation Direct message transfer between distributed processes
US6415332B1 (en) * 1998-08-19 2002-07-02 International Business Machines Corporation Method for handling of asynchronous message packet in a multi-node threaded computing environment
US6412018B1 (en) * 1998-08-19 2002-06-25 International Business Machines Corporation System for handling asynchronous message packet in a multi-node threaded computing environment
US6601089B1 (en) * 1999-06-21 2003-07-29 Sun Microsystems, Inc. System and method for allocating buffers for message passing in a shared-memory computer system
US6718398B1 (en) * 1999-06-21 2004-04-06 Sun Microsystems, Inc. Robust communications connection system and method for shared memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022080652A1 (ko) * 2020-10-12 2022-04-21 삼성전자 주식회사 저널 파일을 관리하는 전자 장치 및 이의 동작 방법

Also Published As

Publication number Publication date
JP3697148B2 (ja) 2005-09-21
JP2001142726A (ja) 2001-05-25
KR100390611B1 (ko) 2003-07-07
US6782537B1 (en) 2004-08-24
CN1133925C (zh) 2004-01-07
CN1289962A (zh) 2001-04-04

Similar Documents

Publication Publication Date Title
KR100390611B1 (ko) 멀티스레드화 컴퓨터 환경에서 복수의 프로세스간의 커뮤니케이터 설정
US6105049A (en) Resource lock/unlock capability in multithreaded computer environment
US6112222A (en) Method for resource lock/unlock capability in multithreaded computer environment
US7080375B2 (en) Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
US8112751B2 (en) Executing tasks through multiple processors that process different portions of a replicable task
US6237019B1 (en) Method and apparatus for performing a semaphore operation
Manassiev et al. Exploiting distributed version concurrency in a transactional memory cluster
US5761670A (en) System and method for space efficient object locking using global and local locks
US7131120B2 (en) Inter Java virtual machine (JVM) resource locking mechanism
JPH03161859A (ja) リクエスト管理方法及びアクセス制御システム
US20060070076A1 (en) Detecting lock acquisition hierarchy violations in multithreaded programs
JPH02195453A (ja) ファイルアクセス制御方式
JPH05274241A (ja) オブジェクトの等価性を判定させる方法及びそのための装置
KR20050088366A (ko) 다중 시스템 클러스터에서의 리소스 경합을 관리하는 방법및 장치
KR20070108329A (ko) 하드웨어 공유 시스템 및 방법
US6105050A (en) System for resource lock/unlock capability in multithreaded computer environment
Devulapalli et al. Distributed queue-based locking using advanced network features
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
US7844781B2 (en) Method, apparatus, and computer program product for accessing process local storage of another process
US7237241B2 (en) Methods and systems for managing access to shared resources using control flow
Falt et al. Towards Efficient Locality Aware Parallel Data Stream Processing.
Irving et al. CUDA-DTM: distributed transactional memory for GPU clusters
Al-Hussaini et al. A new multi-resource deadlock detection algorithm using directed graph requests in distributed database systems
Yelick et al. Parallel data structures for symbolic computation
Wang et al. Distributed concurrency control with local wait-depth control policy

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20060522

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee