KR20120123722A - 분산형 마르코프 체인 몬테 카를로 - Google Patents

분산형 마르코프 체인 몬테 카를로 Download PDF

Info

Publication number
KR20120123722A
KR20120123722A KR1020127025390A KR20127025390A KR20120123722A KR 20120123722 A KR20120123722 A KR 20120123722A KR 1020127025390 A KR1020127025390 A KR 1020127025390A KR 20127025390 A KR20127025390 A KR 20127025390A KR 20120123722 A KR20120123722 A KR 20120123722A
Authority
KR
South Korea
Prior art keywords
chain
swap
core
proposal
monte carlo
Prior art date
Application number
KR1020127025390A
Other languages
English (en)
Other versions
KR101387973B1 (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 KR20120123722A publication Critical patent/KR20120123722A/ko
Application granted granted Critical
Publication of KR101387973B1 publication Critical patent/KR101387973B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Housing For Livestock And Birds (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Micro-Organisms Or Cultivation Processes Thereof (AREA)
  • Complex Calculations (AREA)

Abstract

분산형 마르코프 체인 몬테 카를로에 대한 구현예 및 기술이 일반적으로 개시된다.

Description

분산형 마르코프 체인 몬테 카를로{DISTRIBUTED-TYPE MARKOV CHAIN MONTE CARLO}
여기에서 달리 언급하지 않는다면, 본 섹션에서 기술된 접근법은 본 출원에서 청구항의 선행기술이 아니며 본 섹션에 포함함으로써 선행기술로 인정되는 것이 아니다.
마르코프 체인 몬테 카를로 절차(Markov chain Monte Carlo procedure)는 공학, 물리학, 천문학, 생물학, 금융, 암호학, 통계학, 사회 과학, 의학 등을 포함하는 많은 분야에서 활용될 수 있다. 마르코프 체인 몬테 카를로 애플리케이션(application)은 보통 상당한 양의 처리 능력(processing power)을 이용할 수 있다. 결과적으로, 마르코프 체인 몬테 카를로 애플리케이션은 고성능 컴퓨팅 시스템 상에서 운영될 수 있다.
일부 예시적인 방법, 장치, 및 시스템은 분산형(distributed-type) 마르코프 체인 몬테 카를로에 관련된다. 그러한 방법은, 스왑 제안 코어(swap proposal core)를 통하여, 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하는 단계를 포함할 수 있다. 스왑 제안 중 하나 이상은 스왑 제안 코어로부터 제1 체인 코어(chain core)를 통하여 수신될 수 있다. 복수의 랜덤 수(random number)가 제1 체인 코어를 통하여 생성될 수 있다. 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복(current iteration)은 복수의 랜덤 수에 적어도 부분적으로 기초하여 제1 체인 코어를 통하여 처리될 수 있다. 제1 체인 코어는 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여, 제2 체인 코어와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다릴 수 있다. 랜덤 수의 생성은 제2 체인 코어가 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 기다리는 동안 중단(interruption) 없이 제1 체인 코어를 통하여 진행할 수 있다.
일부 예시는 복수의 프로세서 코어를 포함하는 멀티 코어 프로세서(multicore processor)를 포함할 수 있으며, 멀티 코어 프로세서는 스왑 제안 코어 및 제1 체인 코어를 포함할 수 있다. 스왑 제안 코어는 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성될 수 있다. 제1 체인 코어는 스왑 제안 코어로부터 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 복수의 랜덤 수에 적어도 부분적으로 기초하여 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다리도록 구성될 수 있다. 제2 체인 코어는 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복을 처리하도록 구성될 수 있다. 제1 체인 코어는 제2 체인 코어가 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 기다리는 동안 중단 없이 랜덤 수의 생성을 계속하도록 더 구성될 수 있다.
일부 예시는 복수의 프로세서 코어를 포함하는 컴퓨팅 장치를 포함할 수 있고, 컴퓨팅 장치는 멀티 코어 프로세서, 메모리 버스, 메모리 버스를 통하여 멀티 코어 프로세서와 통신하도록 구성된 시스템 메모리를 포함할 수 있다. 멀티 코어 프로세서는 스왑 제안 코어 및 제1 체인 코어를 포함할 수 있다. 스왑 제안 코어는 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성될 수 있다. 제1 체인 코어는 스왑 제안 코어로부터 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 복수의 랜덤 수에 적어도 부분적으로 기초하여 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다리도록 구성될 수 있다. 제2 체인 코어는 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복을 처리하도록 구성될 수 있다. 제1 체인 코어는 제2 체인 코어가 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 기다리는 동안 중단 없이 랜덤 수의 생성을 계속하도록 더 구성될 수 있다.
전술한 요약은 예시적인 것일 뿐이고, 어떤 방식으로든 제한을 의도한 것은 아니다. 상술한 예시적인 태양, 실시예 및 특징들에 더하여, 추가의 태양, 실시예 및 특징들은 도면과 이하의 상세한 설명을 참조함으로써 분명하게 될 것이다.
본 대상은 명세서의 결론 부분에서 특히 주목되고 명백히 청구된다. 본 개시의 전술한 특징들 및 기타 특징들은, 첨부 도면을 참조하여 이하의 설명 및 첨부된 청구항으로부터 충분히 분명해질 것이다. 이 도면들은 본 개시에 따르는 단지 몇 가지의 실시예만을 도시한 것이고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안된다는 것을 이해하고, 본 개시가 첨부된 도면의 사용을 통하여, 더 구체적이고 상세하게 기술될 것이다.
도 1은 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성된 멀티 코어 프로세서를 포함하는 예시적인 컴퓨팅 장치의 도시이고;
도 2는 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성된 멀티 코어 프로세서의 동작을 위한 예시적인 프로세스(process)의 도시이고;
도 3은 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성된 멀티 코어 프로세서의 동작을 위한 예시적인 프로세스의 도시이고;
도 4는 예시적인 컴퓨터 프로그램 제품의 도시이고;
도 5는 예시적인 컴퓨팅 장치를 도시하는 블록도이고, 모두 본 개시의 적어도 일부 실시예에 따라 배열된다.
이하의 개시는 청구된 대상의 완전한 이해를 제공하기 위하여 특정 세부 사항에 따른 다양한 예시를 제시한다. 그러나, 청구된 대상이 여기에서 개시된 특정 세부 사항 중 일부 또는 그 이상 없이 실행될 수 있다는 것이 당업자에게 이해될 것이다. 추가적으로, 일부 환경에서, 잘 알려진 방법, 절차, 시스템, 구성 및/또는 회로는 청구된 대상을 불필요하게 모호하게 하는 것을 피하기 위하여 상세하게 설명하지 않는다. 이하의 상세한 설명에서, 여기의 일부를 구성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 부호는, 문맥에서 다른 지시가 없다면, 일반적으로 유사한 구성요소를 식별한다. 상세한 설명, 도면, 및 청구항에서 기술된 예시적인 실시예들은 제한하는 것으로 의미되지 않는다. 여기에 제시된 대상의 범위와 사상을 벗어나지 않고, 다른 실시예가 이용될 수 있고, 다른 변형이 이루어질 수 있다. 여기에서 일반적으로 기술되고 도면에서 도시된 바와 같은 본 개시의 태양은 다양한 다른 구성으로 배열, 대체, 조합 및 설계될 수 있음과, 이 모두가 여기에서 명확히 고려됨과 본 개시의 일부가 됨이 이해될 것이다.
본 개시는, 그 중에서도 특히, 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 것에 관련된 방법, 장치, 시스템에 관련된다.
이하에서 더 상세히 기술될 바와 같이, 분산형 마르코프 체인 몬테 카를로 절차의 개선된 구현이 멀티 코어 프로세서에 대하여 제공될 수 있다. 여기에서 사용된 "분산형 마르코프 체인 몬테 카를로"라는 용어는 실행의 다수의 병렬 스레드(thread)를 지원하는 임의의 수의 마르코프 체인 몬테 카를로 절차를 지칭할 수 있다. 예컨대, 분산형 마르코프 체인 몬테 카를로 절차는 메트로폴리스 결합형 마르코프 체인 몬테 카를로 절차(Metropolis-coupled-type Markov chain Monte Carlo procedure), (예컨대, 2008년 4월, 병렬 및 분산 처리에 관한 IEEE 국제 심포지움(International Symposium on Parallel and Distributed Processing 2008(IPDPS 2008)), J.M.R. Byrd, S. Jarvis, A. Bhalerao의 "SMP 아키텍쳐 상에서의 멀티 스레딩에 의한 MCMC 프로그램의 실행 시간 감소(Reducing the runtime of MCMC programs by multithreading on SMP architectures)"와 같은) 추측 이동형 마르코프 체인 몬테 카를로 절차(speculative-move-type Markov chain Monte Carlo procedure), (예컨대, J.Comp.Graph.Stats, vol. 15, no. 1, 2006, A. Brockwell의 "프리페치에 의한 병렬 마르코프 체인 몬테 카를로 시뮬레이션(Parallel Markov chain Monte Carlo simulation by pre-fetching)"과 같은) 프리페치형 마르코프 체인 몬테 카를로 절차 등을 포함할 수 있다.
분산형 마르코프 체인 몬테 카를로 절차는 다수 체인의 연산을 실행할 수 있다. 다양한 체인은 주기적으로 다른 체인과 상태(state)를 스왑하는 것을 고려할 수 있다. 체인 중 적어도 하나는, 목표 분산을 제공할 수 있는, "콜드(cold)" 체인일 수 있다. 상태를 스왑하는 것의 이용은 복잡한 검색 공간을 커버(covering)할 기회를 향상시킬 수 있다. 일부 동기화가 상태 스왑이 동일한 반복의 체인 사이에서 일어나는 것을 보장한다고 가정하면, 체인은 병렬로 실행될 수 있다. 여기에서 다루어지는 하나의 도전(challenge)은, 이러한 동기화가 유지하도록 돕는, 분산형 마르코프 체인 몬테 카를로 절차의 시맨틱(semantic)을 유지하면서 가능한 한 많은 이용 가능한 코어를 사용하기 위한 것이다.
이하에서 더 상세히 설명되는 바와 같이, 다양한 체인이 동시에 동기화 되도록 요구되지 않을 수 있도록 방법, 장치 및 시스템이 동작할 수 있다. 일부 예시에서 전용 "스왑" 코어는 스왑 제안 생성 스레드 및 스왑 제안 분산 스레드의, 두 개의 스레드를 호스팅(hosting)할 수 있다. 그러한 스왑 제안 코어는 스왑 제안을 생성하고, 그러한 스왑 제안 정보를 목표된 체인으로 분산하도록 구성될 수 있다. 따라서, 체인은 거의 독립적으로 운영될 수 있고, 특정 체인은 스왑이 주어진 반복에서 이에 대하여 제안되면 멈춰질 수 있다.
또한, 일부 마르코프 체인 몬테 카를로 절차로, 적어도 두 개 및 때로는 모든 코어가 유휴(idle)하여, 체인 연산을 멈추는 한편, 정보가 단일 스왑이 일어나야 하는지를 결정하기를 기다리거나 상태 데이터 그 자체를 교환하는 것이 종료하기를 기다릴 수 있다. 이하에서 더 상세히 설명할 바와 같이, 대기 체인(waiting chain)이 있는 코어라도 유휴될 필요가 없도록 방법, 장치, 시스템이 동작할 수 있다. 대신에, 체인이 대기하면, 그 체인의 코어는 장래 사용을 위한 랜덤 비트 생성을 위하여 사용될 수 있다. 일부 예시에서, 개별적인 "체인" 코어는 랜덤 수 생성 스레드 및 체인 스레드의 두 스레드를 호스팅할 수 있다. 랜덤 수 생성 스레드 및 체인 스레드가 분리됨에 따라, 체인 코어는 랜덤 수 생성 스레드를 계속해서 처리할 수 있고 체인 스레드의 동작을 대기할 필요가 없을 수 있다. 유사하게, 스왑 제안 생성 스레드 및 스왑 제안 분산 스레드가 분리됨에 따라, 스왑 제안 코어는 스왑 제안 생성 스레드를 계속해서 처리할 수 있고 스왑 제안 분산 스레드의 동작을 대기할 필요가 없을 수 있다.
도 1은 본 개시의 적어도 일부 실시예에 따라 배열된 멀티 코어 프로세서(100)를 포함하는 예시적인 컴퓨팅 장치의 도시이다. 멀티 코어 프로세서(100)는 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성될 수 있다. 도시된 예시에서, 멀티 코어 프로세서(100)는 프로세싱 코어 어레이(processing core array)를 가지는 단일 집적 회로를 포함할 수 있다. 기타 예시에서, 멀티 코어 프로세서(100)는 별도의 집적 칩 상에 프로세서 코어를 포함할 수 있다. 멀티 코어 프로세서(100)에 더하여 또는 멀티 코어 프로세서(100)를 대신하여, 분산 컴퓨팅 환경 시스템(도시되지 않음)이 멀티 코어 프로세서(100)에 대하여 여기에서 기술된 기능의 전부 또는 일부를 수행하도록 활용될 수 있다. 예컨대, 그러한 분산 컴퓨팅 환경 시스템(도시되지 않음)은 네트워크를 통하여 함께 동작적으로(operatively) 결합될 수 있는, (예컨대, 데스크탑 컴퓨터, 랩탑 컴퓨터, 워크스테이션, 서버 장치, 저장 유닛 등과 같은) 복수의 컴퓨팅 장치를 포함할 수 있다.
멀티 코어 프로세서(100)는 수개(N)의 프로세싱 코어(104(1)-104(N))를 포함할 수 있다. 임의 적절한 수의 프로세싱 코어(104)가 제공될 수 있다. 예를 들어, 멀티 코어 프로세서(100)는 네(4) 개의 프로세싱 코어, 수십 개의 프로세싱 코어(104) 및 수백 개 또는 그 이상의 프로세싱 코어(104)라도 가질 수 있다. 일부 멀티 코어 프로세서(100)는 프로세싱 코어(104)의 각각이 단일 유형의 코어 설계를 사용하도록 동질적(homogenous)일 수 있다. 다른 멀티 코어 프로세서(100)는, 프로세싱 코어(104) 중 하나 이상이 다른 프로세싱 코어(104) 중 하나 이상과 상이할 수 있고, 개별의 프로세싱 코어(104) 또는 프로세싱 코어(104)의 부분집합(subset)이 멀티 코어 프로세서(100)에서 상이한 역할을 위하여 설계될 수 있도록, 이질적(heterogeneous)일 수 있다.
프로세싱 코어(104)는 비공유(non-shared) L1 캐시(cache)와 공유 또는 비공유 중 하나인 L2 캐시(들) 및 공유 시스템 메모리를 포함할 수 있다. 개별적인 프로세싱 코어(104)는 하나 이상의 하드웨어 스레드를 지원할 수 있다. 프로세싱 코어(104)는 마르코프 체인 몬테 카를로 절차를 처리하도록 독점적으로 활용되지 않을 수 있다.
도 1은 멀티 코어 프로세서의 예시적인 개략도이며 도시된 구성요소의 물리적 위치를 도시하지는 않는다. 여기에서 기술된 멀티 코어 프로세서(100)는 예시적인 것이며 그 예시 및 수정이 가능함이 인식된다. 예를 들어, 하드웨어 크기 및 복잡도 대 성능, 열 에너지 및 열 방산, 프로세서 속도, 전체적인 처리량 등의 고려에 따라 설계 선택이 이루어질 수 있다.
도시된 예시에서, 멀티 코어 프로세서(100)는 서로 통신하도록 구성된 복수의 체인 코어(108, 110, 112)와 스왑 제안 코어(106)를 포함하는 복수의 프로세서 코어(104)를 포함할 수 있다. 임의 적절한 수의 체인 코어(108, 110, 112)가 제공될 수 있다.
일부 예시에서, 스왑 제안 코어(106)는 스왑 제안 생성 스레드(114) 및 스왑 제안 분산 스레드(116)의 두 개의 스레드를 호스팅할 수 있다. 그러한 스왑 제안 코어(106)는 스왑 제안을 생성하고, 그러한 스왑 제안 정보를 체인 코어(108, 110, 112)와 연관된 목표 체인으로 분산하도록 구성될 수 있다. 스왑 제안 생성 스레드(114) 및 스왑 제안 분산 스레드(116)가 분리됨에 따라, 스왑 제안 코어(106)는 스왑 제안 생성 스레드(114)를 계속해서 처리할 수 있고, 스왑 제안 분산 스레드(116)의 동작을 기다릴 필요가 없을 수 있다.
여기에서 사용된 바와 같이, "스왑 제안"이란 용어는 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부, 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부, 및 분산형 마르코프 체인 몬테 카를로 절차의 특정 반복과 관련된 정보를 지칭할 수 있다. 예컨대, 스왑 제안 스레드(114)는 일부 특정 간격(interval)에서 두 개의 체인 사이에서 스왑 제안을 생성할 수 있다. 이러한 스왑 제안 데이터는 일련의 스왑 제안 트리플(triple){<i, j, k>1, …}로 표현될 수 있으며, 이는 반복 i에서 제1 체인 j의 상태가 제2 체인 k의 상태와 스왑될 수 있음을 나타낸다.
그러한 스왑 제안 데이터 시퀀스(sequence)를 생성하기 위하여, 스왑 제안 코어(106)는 랜덤 비트(random bit)를 생성할 수 있다. 예를 들어, 스왑 제안 생성 스레드(114)는 (인터 체인(inter-chain)) 상태 스왑을 결정하는데 이용하기 위하여 랜덤 비트를 생성할 수 있다. 하드웨어 랜덤 비트 생성기 또는 의사 랜덤, 소프트웨어 구현 비트 생성기(pseudo-random, software-implemented bit generator) 중 하나가 랜덤 비트 생성에 사용될 수 있다.
일부 예시에서 개별적인 체인 코어(108, 110, 112)는 각각 랜덤 수 생성 스레드(118) 및 체인 스레드(120)의 두 개의 스레드를 호스팅할 수 있다. 랜덤 수 생성 스레드(118) 및 체인 스레드(120)를 수반하는 프로세스는 (예컨대, 프로세서 친화성(processor affinity) 또는 유사한 명령을 통하여) 그 지정된 체인 코어(108, 110, 112)에 고정(pin)될 수 있다. 그러한 고정은 체인 스레드(120)가 공간을 검색할 때 캐시 집약성(locality)을 보존하도록 도울 수 있다.
랜덤 수 생성 스레드(118) 및 체인 스레드(120)가 분리됨에 따라, 체인 코어(108)는 랜덤 수 생성 스레드(118)를 계속해서 처리할 수 있고 체인 스레드의 동작을 기다릴 필요가 없을 수 있다. 랜덤 수 생성 스레드(118)는 (인트라-체인(intra-chain)) 상태 전환(transition)을 결정함에 있어서 이용하기 위하여 랜덤 비트를 생성할 수 있다. 하드웨어 랜덤 비트 생성기 또는 의사 랜덤, 소프트웨어 구현 비트 생성기 중 하나가 랜덤 비트 생성을 위하여 사용될 수 있다.
스왑 제안 코어(106)는 스왑 제안 생성 큐(queue)(122)를 포함할 수 있다. 스왑 제안 생성 큐(122)는 스왑 제안 생성 스레드(114)를 통하여 생성되는 스왑 제안 중 하나 이상을 저장하도록 구성될 수 있다. 스왑 제안 생성 큐(122)는 코어 특정 버퍼(core-specific buffer) 등으로서 구현될 수 있다. 스왑 제안 코어(106)는 스왑 제안 중 하나 이상을 스왑 제안 분산 스레드(116)를 통하여 스왑 제안 생성 큐(122)로부터 체인 코어(108, 110, 112)로 분산하도록 구성될 수 있다.
결과적인 스왑 제안은 그들이 생성된 이후에 언제라도 사용될 수 있으므로, 스왑 제안 코어(106)는 임의의 시각에 스왑 제안을 생성하는 것을 시작할 수 있으며, 연속적으로 또는 거의 연속적으로 스왑 제안 생성 큐(122)를 계속해서 덧붙일(populate) 수 있다. 스왑 제안 코어(106)는 또한 체인 스레드(120)를 호스팅하는, 체인 코어(108, 110, 112)로 스왑 제안을 분산하도록 스왑 제안 분산 스레드(116)를 처리할 수 있다. 예컨대, 체인 스레드(120)로부터의 요청에 대하여, 스왑 제안 분산 스레드(116)는 하나 이상의 스왑 제안을 그 체인 스레드(120)로 분산할 수 있다. 스왑 제안 분산 스레드(116)는 스왑 제안 생성 큐(122)로부터의 스왑 제안의 큐잉 해제기(dequeuer)로서 동작할 수 있다.
제1 체인 코어(108)는 스왑 제안 분산 큐(124)를 포함할 수 있다. 스왑 제안 분산 큐(124)는 제1 체인 코어(108)를 통하여 수신된 스왑 제안 중 하나 이상을 저장하도록 구성될 수 있다. 스왑 제안 분산 큐(124)는 코어 특정 버퍼 등으로 구현될 수 있다. 개별 체인 코어(108)와 연관된 개별 체인 스레드(120)는 스왑 제안 코어(106)로부터 가장 가까운 스왑 제안(예컨대, 현재 반복에 대하여 가장 가까운 스왑 제안)을 획득할 수 있다. 예를 들어, 체인 스레드(120)와 연관된 스왑 제안 분산 큐(124)는 제1 체인 코어(108)와 연관된 스왑 제안의 큐를 가질 수 있다. 다른 체인 코어(110 및 112)와 연관된 체인 스레드는 각각의 스왑 제안 분산 큐가 채워진 것을 유지할 책임이 있을 수 있다. 예컨대, 제2 스왑 제안 분산 큐(126)는 제2 체인 코어(110)와 연관될 수 있다. 제2 스왑 제안 분산 큐(126)는 제2 체인 코어(126)를 통하여 수신된 스왑 제안 중 하나 이상을 저장하도록 구성될 수 있다.
제1 체인 코어(108)는 랜덤 비트 큐(128)를 포함할 수 있다. 랜덤 비트 큐(128)는 랜덤 수 생성 스레드(118)를 통하여 생성된 랜덤 수 중 하나 이상을 저장하도록 구성될 수 있다. 랜덤 비트 큐(128)는 코어 특정 버퍼 등으로 구현될 수 있다. 마찬가지로, 제2 랜덤 비트 큐(130)는 제2 체인 코어(110)와 연관될 수 있다. 랜덤 비트 큐(130)는 제2 체인 코어(110)와 연관된 랜덤 수 생성 스레드를 통하여 생성된 랜덤 수 중 하나 이상을 저장하도록 구성될 수 있다.
랜덤 수는 그들이 생성된 이후에 언제라도 사용될 수 있으므로, 랜덤 수 생성 스레드(118)는, 임의의 스케줄에서 자유롭게 실행되어, 임의의 스케줄에서 랜덤 비트 큐(128)를 채울 수 있다. 따라서, 개별 체인 코어(108)는 보통 연관된 랜덤 비트 큐(128)에 접근할 수 있고, 연관된 체인 스레드(120)는 랜덤 수를 그 랜덤 비트 큐(128)로부터 제거할 수 있다.
동작에서, 체인 스레드(120)가 다음에 제안된 스왑 반복에 도달하기 전에, 연관된 체인 코어(108)는 체인 스레드(120)(및 랜덤 수 생성 스레드(118))를 자유롭게 처리할 수 있다. 체인 코어(108)가 특정 반복(예컨대, 수신된 스왑 제안과 연관된 반복)에 도달하면, 체인 스레드(120)는 제안된 스왑 체인 스레드(예컨대, 제2 체인 코어(110)와 연관된 체인 스레드)가 스왑이 일어나야 하는지 결정하는데 충분한 정보를 공유하기를 기다리고 필요하다면 상태를 스왑하는 것을 기다릴 수 있다. 잠재적인 스왑에 관한 통신은 지점 대 지점 간 통신(point-to-point communication)(예컨대, 체인 스레드 대 체인 스레드)일 수 있다. 랜덤 수 생성 스레드(118)에 의하여 생성되고 랜덤 비트 큐(128)에 저장된 랜덤 수는 스왑이 일어나야 하는지를 결정하는 동안 소비될 수 있다. 일부 예시에서, 체인 스레드(120)는 잠재적인 스왑에 대하여 제안되는 다른 체인 스레드를 기다리는 동안 하나 이상의 추가적인 스왑 제안을 요청할 수 있다. 한편, 체인 코어(108)는 랜덤 수 생성 스레드(118)를 처리하는 것을 계속할 수 있다. 잠재적인 스왑을 현재 고려하는 체인 코어(예컨대, 제1 체인 코어(108) 및 제2 체인 코어(110))를 제외하고, 나머지 체인 코어(예컨대, 체인 코어(112))는 랜덤 수 생성 스레드 및 체인 스레드 둘 다를 계속하기에 자유로울 수 있다. 특정 스왑 제안의 평가 도중이나 이후에, 잠재적인 스왑을 현재 고려하는 체인 코어(예컨대, 제1 체인 코어(108) 및 제2 체인 코어(110))는 (예컨대, 각각의 스왑 제안 분산 큐(124 및 126)가 빈 경우에) 스왑 제안 코어(106)로부터 추가적인 스왑 제안을 수신할 수 있다. 스왑이 완료된 이후에, 체인 코어(108 및 110)는 연관된 체인 스레드(120)를 처리하는 것을 재개할 수 있다. 전술한 노력의 분산 및 지점간 동기화로, 높은 체인 코어 활용이 비교적 작은 인터 코어 통신(inter-core communication)으로 달성될 수 있다.
도 2는 본 개시의 적어도 일부 실시예에 따라 배열된, 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 동안에 코어의 사용을 유지하기 위한 멀티 코어 프로세서의 동작을 위한 예시적인 프로세스(200)의 도시이다. 도시된 예시에서, 프로세스(200) 및 여기에서 기술된 기타 프로세스들은 하드웨어, 소프트웨어, 및/또는 펌웨어 중 하나 이상에 의하여 수행될 수 있는, 프로세싱 단계, 함수 연산(functional operation), 이벤트(event) 및/또는 행위 등으로 기술될 수 있는 다양한 기능 블록(functional block) 또는 동작(action)을 제시한다. 본 개시에 비추어 당업자는 도 2에서 도시된 기능 블록에 대한 많은 대안이 다양한 구현예에서 실시될 수 있는 것을 인식할 것이다. 예컨대, 도 2에서 도시된 프로세스(200)가 특정 순서의 블록 또는 동작을 포함하지만, 이러한 블록 또는 동작이 제시되는 순서는 임의의 특정 순서로 청구된 대상을 반드시 제한하는 것은 아니다. 마찬가지로, 청구된 대상의 범위에서 벗어나지 않고, 도 2에 도시되지 않은 중간 동작(intervening action) 및/또는 도 2에 도시되지 않은 추가적인 동작이 사용될 수 있고/거나 도 2에서 도시되는 동작의 일부가 제거될 수 있다. 프로세스(200)는 동작(202, 204, 206, 208, 및/또는 210) 중 하나 이상을 포함할 수 있다.
도시된 바와 같이, 프로세스(200)는 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 중에 코어의 사용을 유지하기 위한 멀티 코어 프로세서의 동작에 대하여 구현될 수 있다. 프로세싱은 "스왑 제안을 생성"하는 동작(202)에서 시작할 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안이 스왑 제안 코어(106)(도 1 참조)를 통하여 생성될 수 있다. 예컨대, 스왑 제안 코어(106)(도 1 참조)와 연관된 스왑 제안 스레드(114)(도 1 참조)가 그러한 스왑 제안을 생성할 수 있다.
프로세싱은 동작(202)에서 "스왑 제안을 수신"하는 동작(204)으로 계속될 수 있고, 여기서 스왑 제안 중 하나 이상이 스왑 제안 코어(106)(도 1 참조)로부터, 체인 코어(108, 110, 112)(도 1 참조) 중 하나 이상을 통하여, 수신될 수 있다. 예를 들어, 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)로부터 분산되어 체인 코어(108, 110, 112) 중 하나 이상에 의해 수신될 수 있다.
동작(206)은 동작(202-204)의 이후에, 도중에, 및/또는 이전에 일어날 수 있다. "랜덤 수 생성"하는 동작(206)에서, 랜덤 수는 체인 코어(108, 110, 112)(도 1 참조)중 하나 이상을 통하여 생성될 수 있다. 예컨대, 체인 코어(108)(도 1 참조)와 연관된 랜덤 수 생성 스레드(118)(도 1 참조)가 그러한 랜덤 수를 생성할 수 있다.
프로세싱은 동작(206)에서, "체인을 처리"하는 동작(208)으로 계속될 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차의 체인부의 현재 반복이 체인 코어(108, 110, 112)(도 1 참조) 중 하나 이상을 통하여 처리될 수 있다. 그러한 체인부는, 동작(206)에서 생성된 랜덤 수에 적어도 부분적으로 기초하여 처리될 수 있다. 예를 들어, 체인 코어(108)(도 1 참조)와 연관된 체인 스레드(120)(도 1 참조)가 그러한 체인부를 처리할 수 있다.
프로세싱은 동작(208)에서 "대기"하는 동작(210)으로 계속될 수 있고, 여기서 체인 스레드(120)(도 1 참조)는 제2 체인 코어(예컨대, 도 1의 체인 코어(110))와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기할 수 있다. 그러한 대기는 스왑 제안 중 하나 이상에 적어도 부분적으로 기초할 수 있다. 예를 들어, 주어진 스왑 제안은 분산형 마르코프 체인 몬테 카를로 절차의 특정 반복에 관련된 정보 및 상태 정보의 스왑을 위해 제안되는 체인부(예컨대, 체인 코어(108)와 연관된 체인부 및 체인 코어(110)와 연관된 체인부)(도 1 참조)의 특정 페어(pair)와 관련된 정보를 포함할 수 있다.
동작에서, 프로세스(200)는 동작(210)에서 체인 코어(108)의 대기 중에 중단 없이 체인 코어(108)를 통하여 랜덤 수를 생성하도록 진행할 수 있다. 마찬가지로, 프로세스(200)는 동작(210)에서 체인 코어(108)의 대기 중에 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 추가적으로, 프로세스(200)는 동작(204)에서 스왑 제안 분산 스레드(116)의 분산 중에 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 또한, 프로세스(200)는 분산형 마르코프 체인 몬테 카를로 절차의 통계적인 성능을 보존할 수 있다. 예컨대, 프로세스(200)를 활용하지 않은 결과에 비해, 프로세스(200)의 사용으로 인해, 분산형 마르코프 체인 몬테 카를로 절차의 결과에 대하여 통계적 조정이 이루어질 필요가 없을 수 있다.
도 3은 본 개시의 적어도 일부 실시예에 따라 배열된, 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 중에 코어의 사용을 유지하기 위한 멀티 코어 프로세서의 동작을 위한 예시적인 프로세스(300)의 도시이다. 도시된 예시에서, 프로세스(300) 및 여기에서 기술된 기타의 프로세스는 하드웨어, 소프트웨어, 및/또는 펌웨어 중 하나 이상에 의해서 수행될 수 있는, 프로세싱 단계, 함수 연산, 이벤트 및/또는 행위 등으로 기술될 수 있는 다양한 기능 블록이나 동작을 제시한다. 본 개시에 비추어 당업자는 도 3에서 도시된 기능 블록에 대한 많은 대안이 다양한 구현예에서 실시될 수 있음을 인식할 것이다. 예컨대, 도 3에서 도시된 프로세스(300)가 특정 순서의 블록이나 동작을 포함하지만, 이러한 블록 또는 동작이 제시된 순서는 청구된 대상을 임의의 특정 순서로 반드시 제한하는 것은 아니다. 마찬가지로, 청구된 대상의 범위에서 벗어남이 없이, 도 3에서 도시되지 않은 중간 동작 및/또는 도 3에서 도시되지 않은 추가적인 동작이 사용될 수 있고/거나 도 3에 도시된 동작의 일부가 제거될 수 있다. 프로세스(300)는 동작(302, 304, 306, 308, 310, 312, 314, 316, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340 및/또는 342) 중 하나 이상을 포함할 수 있다.
도시된 바와 같이, 프로세스(300)는 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 동안 코어의 사용을 유지하기 위한 멀티 코어 프로세서의 동작에 대하여 구현될 수 있다. 프로세싱은 "스왑 제안을 생성 및/또는 저장"하는 동작(302)에서 시작할 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안은 스왑 제안 코어(106)를 통하여 생성될 수 있다. 예컨대, 스왑 제안 코어(106)와 연관된 스왑 제안 생성 스레드(114)가 그러한 스왑 제안을 생성할 수 있다. 추가적으로, 그러한 스왑 제안은 저장될 수 있다. 예컨대, 그러한 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)에 저장될 수 있다.
프로세싱은 동작(302)에서 "스왑 제안을 분산"하는 동작(304)으로 계속될 수 있고, 여기서 스왑 제안 중 하나 이상은 스왑 제안 코어(106)를 통하여 체인 코어(108, 110 및/또는 112) 중 하나 이상으로 분산될 수 있다. 예컨대, 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)로부터 분산될 수 있다.
프로세싱은 동작(304)에서 "스왑 제안을 저장"하는 동작(306)으로 계속될 수 있고, 여기서 그러한 분산된 스왑 제안은 체인 코어(108)에 의하여 수신될 수 있고 이후의 사용을 위하여 잠재적으로 저장될 수 있다. 예컨대, 그러한 분산된 스왑 제안은 스왑 제안 분산 큐(124)(도 1 참조)를 통하여 저장될 수 있다. 일부 예시에서, 유사한 동작(308 및 310)이 각각 체인 코어(110 및 112)를 통하여 일어날 수 있다.
동작(312 내지 316)은 동작(302 내지 306)의 이후에, 도중에, 및/또는 이전에 일어날 수 있다. "랜덤 수를 생성 및/또는 저장"하는 동작(312)에서, 랜덤 수가 체인 코어(108)를 통하여 생성될 수 있고, 이후의 사용을 위해 랜덤 비트 큐(128)(도 1 참조)를 통하여 저장될 수 있다. 예를 들어, 체인 코어(108)와 연관된 랜덤 수 생성 스레드(118)가 그러한 랜덤 수를 생성 및/또는 저장할 수 있다. 일부 예시에서, 유사한 동작(314 및 316)이 각각 랜덤 수 생성 스레드(318, 319)를 통하여 일어날 수 있다.
프로세싱은 동작(306)에서 "체인을 처리"하는 동작(322)으로 계속될 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차의 체인부의 현재 반복이 체인 코어(108)를 통하여 진행될 수 있다. 그러한 체인부는 랜덤 비트 큐(128)(도 1 참조)에 저장된 랜덤 수에 적어도 부분적으로 기초하여 처리될 수 있다. 예를 들어, 체인 코어(108)와 연관된 체인 스레드(120)가 그러한 체인부를 처리할 수 있다. 일부 예시에서, 유사한 동작(324 및 326)이 각각 체인 스레드(320 및 321)를 통하여 일어날 수 있다.
프로세싱은 동작(322)에서 "대기"하는 동작(328)으로 계속할 수 있고, 여기서 체인 스레드(120)는 제2 체인 코어(예컨대 체인 코어(110))와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다릴 수 있다. 그러한 대기는 스왑 제안 중 하나 이상에 적어도 부분적으로 기초할 수 있다. 예를 들어, 주어진 스왑 제안은 분산형 마르코프 체인 몬테 카를로 절차의 특정 반복에 관련된 정보 및 상태 정보의 스왑을 위해 제안되는 체인부(예컨대, 체인 코어(108)와 연관된 체인부 및 체인 코어(110)와 연관된 체인부)의 특정 페어에 관련된 정보를 포함할 수 있다.
프로세싱은 동작(328)에서 "정보를 교환"하는 동작(330)으로 계속될 수 있고, 여기서 체인 스레드(120)는 스왑이 일어나야 하는지를 결정하기에 충분한 다른 체인 스레드(예컨대, 체인 스레드(320))와 정보를 교환할 수 있다.
동작(332 내지 336)은 동작(328 내지 330)의 이후에, 도중에 및/또는 이전에 일어날 수 있다. "스왑 제안을 요청"하는 동작(332)에서, 체인 스레드(120)는 하나 이상의 추가적인 스왑 제안을 요청할 수 있다. 예컨대, 체인 스레드(120)는 잠재적인 스왑에 대해 제안된 다른 체인 스레드(예컨대, 체인 스레드(320))를 대기하는 동안 하나 이상의 추가적인 스왑 제안을 요청할 수 있다. 일부 예시에서, 유사한 동작(334)이 체인 스레드(320)를 통하여 일어날 수 있다. 프로세싱은 동작(332 또는 334)에서 "스왑 제안을 분산"하는 동작(336)으로 계속될 수 있고, 여기서 하나 이상의 추가적인 스왑 제안은 요청에 따라 스왑 제안 코어(106)를 통하여 체인 코어(108, 110, 및/또는 112) 중 하나 이상으로 분산될 수 있다. 예컨대, 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)로부터 분산될 수 있고, 체인 코어(108)에 의하여 수신될 수 있으며, 이후의 사용을 위하여 스왑 제안 분산 큐(124)(도 1 참조)에 잠재적으로 저장될 수 있다.
프로세싱은 동작(330)에서 "상태를 스왑할지 결정"하는 동작(338)으로 계속될 수 있고, 여기서 상태를 스왑할지 스왑하지 않을지의 결정이 일어날 수 있다. 예를 들어, 제1 체인 코어(108) 및/또는 제2 체인 코어(110)는 스왑 제안 분산 큐(124)(도 1 참조)에 저장된 스왑 제안 중 하나 이상에 적어도 부분적으로 기초한 제안된 스왑의 대상일 수 있다. 제안된 스왑의 대상이 되는 체인 코어(예컨대, 제1 체인 코어(108) 및/또는 제2 체인 코어(110)) 중 하나는 동작(330)의 교환 정보에 적어도 부분적으로 기초하여 스왑할지를 결정할 수 있다.
프로세싱은 동작(338)에서 "체인을 처리"하는 동작(340)으로 계속될 수 있고, 여기서 제1 체인부의 후속의 반복이 체인 코어(108)를 통하여 처리될 수 있다. 예컨대, 상태가 스왑된 경우에, 제1 체인부의 후속의 반복은 랜덤 비트 큐(128)(도 1 참조)에 저장된 랜덤 수 및 제2 체인으로부터 스왑된 상태에 적어도 부분적으로 기초하여 처리될 수 있다. 예컨대, 체인 코어(108)와 연관된 체인 스레드(120)가 제2 체인 코어(110)와 연관된 제2 체인 스레드(320)로부터 스왑된 상태에 적어도 부분적으로 기초하여 그러한 체인부를 처리할 수 있다. 일부 예시에서, 유사한 동작(342)이 체인 스레드(320)를 통하여 일어날 수 있다.
동작에서, 프로세스(300)는 동작(328)에서 체인 코어(108)의 대기 중에 중단 없이 체인 코어(108)를 통하여 랜덤 수를 생성하도록 진행할 수 있다. 마찬가지로, 프로세스(300)는 동작(328)에서 체인 코어(108)의 대기 중에 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 추가적으로, 프로세스(300)는 동작(304 및 336)에서 스왑 제안 분산 스레드(116)의 분산 동안 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 또한, 프로세스(300)는 분산형 마르코프 체인 몬테 카를로 절차의 통계적인 성능을 보존할 수 있다. 예컨대, 프로세스(300)를 활용하지 않는 결과에 비해, 프로세스(300)의 사용으로 인하여 분산형 마르코프 체인 몬테 카를로 절차의 결과에 대하여 통계적인 조정이 이루어질 필요가 없을 수 있다.
도 4는 본 개시의 적어도 일부 실시예에 따라 배열된 예시적인 컴퓨터 프로그램 제품(400)을 도시한다. 컴퓨터 프로그램 제품(400)은 신호 베어링 매체(402)를 포함할 수 있다. 신호 베어링 매체(402)는 하나 이상의 프로세서에 의하여 실행되면, 도 1, 도 2 및/또는 도 3에 대하여 전술한 기능을 제공하도록 컴퓨팅 장치를 동작 가능하게 할 수 있는, 멀티 코어 프로세스의 다수의 충돌 도메인 네트워크(multiple collision domain network) 사이에서의 통신을 용이하게 하도록 하나 이상의 머신 판독가능 명령(machine-readable instruction)(404)을 포함할 수 있다. 따라서, 예를 들어, 도 1의 시스템을 참조하면, 멀티 코어 프로세서(100)는 매체(402)에 의하여 운반되는 명령(404)에 응답하여 도 2 및/또는 도 3에서 도시된 동작 중 하나 이상을 수행할 수 있다.
일부 구현예에서, 신호 베어링 매체(402)는 하드 디스크 드라이브, 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD), 디지털 테이프, 메모리 등과 같은 컴퓨터 판독가능 매체(406)를 포함할 수 있으나, 이에 제한되지 않는다. 일부 구현예에서, 신호 베어링 매체(402)는 메모리, 판독/기록(R/W) CD, R/W DVD 등과 같은 기록가능 매체(408)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(402)는 디지털 및/또는 아날로그 통신 매체(예컨대, 섬유 광 케이블, 도파관(waveguide), 유선 통신 링크, 무선 통신 링크 등)와 같은 통신 매체(410)를 포함할 수 있으나, 이에 제한되지는 않는다.
도 5는 본 개시의 적어도 일부 실시예에 따라 배열된 예시적인 컴퓨팅 장치(500)를 도시하는 블록도이다. 일 예시적인 기초적인 구성(501)에서, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510) 및 시스템 메모리(520)를 포함할 수 있다. 메모리 버스(530)는 프로세서(510) 및 시스템 메모리(520) 사이에서 통신하기 위해 사용될 수 있다.
요구되는 구성에 따라, 프로세서(510)는 마이크로 프로세서(μP), 마이크로 컨트롤러(μC), 디지털 신호 프로세서(DSP), 또는 그들의 임의의 조합을 포함하는 임의의 유형이 될 수 있으나, 이에 제한되지는 않는다. 프로세서(510)는 레벨 1 캐시(511), 레벨 2 캐시(512)와 같은 하나 이상의 레벨(level)의 캐시(cache), 프로세서 코어(513), 및 레지스터(514)를 포함할 수 있다. 프로세서 코어(513)는 산술 논리 연산장치(arithmetic logic unit; ALU), 부동 소수점 장치(floating point unit; FPU), 디지털 신호 프로세싱 코어(DSP Core), 또는 그들의 임의의 조합을 포함할 수 있다. 메모리 컨트롤러(515)는 또한 프로세서(510)와 함께 사용될 수 있고, 또는 일부 구현예에서 메모리 컨트롤러(515)는 프로세서(510)의 내적인 일부일 수 있다.
요구되는 구성에 따라, 시스템 메모리(520)는 (RAM과 같은) 휘발성 메모리, (ROM, 플래시 메모리 등과 같은) 비휘발성 메모리, 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 시스템 메모리(520)는 운영 체제(521), 하나 이상의 응용 프로그램(application)(522), 및 프로그램 데이터(524)를 포함할 수 있다. 응용 프로그램(522)은 도 2의 프로세스(200) 및/또는 도 3의 프로세스(300)에 대하여 기술한 기능적인 블록 및/또는 동작을 포함하는 여기에 기술된 바와 같은 기능 및/또는 동작을 수행하도록 배열될 수 있는 코어 사용 관리 알고리즘(cores usage maintenance algorithm)(523)을 포함할 수 있다. 프로그램 데이터(524)는 코어 사용 관리 알고리즘(523)과 함께 사용하기 위한 스왑 제안 데이터(525)를 포함할 수 있다. 일부 예시적인 실시예에서, 응용 프로그램(522)은 코어 사용 관리의 구현이 여기에서 기술된 바와 같이 제공될 수 있도록 운영 체제(521) 상에서 프로그램 데이터(524)로 동작하도록 배열될 수 있다. 이러한 기술된 기초적인 구성은 도 5에서 파선(501) 내의 그 구성요소들에 의해 도시된다.
컴퓨팅 장치(500)는 기초적인 구성(501) 및 임의의 요구되는 장치 및 인터페이스(interface) 사이에서 통신을 용이하게 하도록 추가적인 특징 또는 기능, 및 추가적인 인터페이스를 가질 수 있다. 예를 들어, 버스/인터페이스 컨트롤러(540)는 저장 인터페이스 버스(541)를 통하여 기초적인 구성(501) 및 하나 이상의 데이터 저장 장치(550) 사이에서의 통신을 용이하게 하도록 사용될 수 있다. 데이터 저장 장치(550)는 분리 가능한 저장 장치(551), 분리 불가능한 저장 장치(552), 또는 그 조합일 수 있다. 분리 가능한 저장 장치 및 분리 불가능한 저장 장치의 예를 몇 가지 들자면, 플렉서블 디스크 드라이브(flexible disk drive) 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다목적 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(SSD), 및 테이프 드라이브 등을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈(program module), 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술에서 구현되는 휘발성 및 비휘발성의 분리 가능한 매체 및 분리 불가능한 매체를 포함할 수 있다.
시스템 메모리(520), 분리 가능한 저장 장치(551) 및 분리 불가능한 저장 장치(552)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 요구되는 정보를 저장하도록 사용될 수 있고, 컴퓨팅 장치(500)에 의해 접근될 수 있는 임의의 기타 매체를 포함하나, 이에 제한되지는 않는다. 임의의 그러한 컴퓨터 저장 매체는 장치(500)의 일부일 수 있다.
컴퓨팅 장치(500)는 또한 버스/인터페이스 컨트롤러(540)를 통하여 다양한 인터페이스 장치(예컨대, 출력 인터페이스, 주변 인터페이스, 및 통신 인터페이스)로부터 기초적인 구성(501)으로의 통신을 용이하게 하기 위한 인터페이스 버스(542)를 포함할 수 있다. 예시적인 출력 인터페이스(560)는 그래픽 처리 유닛(561) 및 오디오 처리 유닛(562)을 포함할 수 있으며, 이는 하나 이상의 A/V 포트(563)를 통하여 디스플레이 또는 스피커와 같은 다양한 외부 장치로 통신하도록 구성될 수 있다. 예시적인 주변 인터페이스(570)는 직렬 인터페이스 컨트롤러(571) 또는 병렬 인터페이스 컨트롤러(572)를 포함할 수 있으며, 이는 하나 이상의 I/O 포트(573)를 통하여 입력 장치(예컨대, 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등) 또는 기타 주변 장치(예컨대, 프린터, 스캐너 등)와 같은 외부 장치와 통신하도록 구성될 수 있다. 예시적인 통신 인터페이스(580)는 네트워크 컨트롤러(581)를 포함하며, 이는 하나 이상의 통신 포트(582)를 경유하여 네트워크 통신을 통해 하나 이상의 다른 컴퓨팅 장치(590)와의 통신을 용이하게 하도록 배열될 수 있다. 통신 연결은 통신 매체의 하나의 예이다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 기타 수송 메커니즘(transport mechanism)과 같은, 변조된 데이터 신호에서의 기타 데이터에 의해 구현될 수 있고 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"는 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변경된 하나 이상의 특성을 갖는 신호일 수 있다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 연결(direct-wired connection)과 같은 유선 매체, 및 음향, 라디오 주파수(RF), 적외선(IR) 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있으나, 이에 제한되지 않는다. 여기에서 사용된 컴퓨터 판독 가능 매체라는 용어는 저장 매체 및 통신 매체 둘 다를 포함할 수 있다.
컴퓨팅 장치(500)는 휴대 전화기, 개인 휴대용 단말기(personal data assistant; PDA), 개인 미디어 재생 장치, 무선 웹워치 장치(wireless web-watch device), 개인 헤드셋 장치, 특정 용도 장치, 또는 상기 기능 중 임의의 것을 포함하는 융합 장치와 같은 소형 폼팩터 휴대용(이동) 전자 장치의 일부로 구현될 수 있다. 컴퓨팅 장치(500)는 또한 랩탑 컴퓨터나 랩탑이 아닌 컴퓨터 구성 둘 다를 포함하는 개인용 컴퓨터로 구현될 수 있다. 추가적으로, 컴퓨팅 장치(500)는 무선 기지국(base station)이나 기타 무선 시스템 또는 장치의 일부로 구현될 수 있다.
전술한 상세한 설명의 일부분은 컴퓨터 메모리와 같은 컴퓨팅 시스템 메모리 내에 저장된 데이터 비트 또는 이진 디지털 신호 상에서의 동작의 알고리즘 또는 기호적 표현의 관점에서 제시된다. 이러한 알고리즘적인 설명 또는 표현은 데이터 프로세싱 분야의 당업자가 그들 연구의 실체를 다른 당업자에게 전달하기 위하여 사용하는 기법의 예시이다. 여기에서, 그리고 일반적으로, 알고리즘은 요구되는 결과로 이끄는 일관된 일련의 동작이나 유사한 프로세싱이 되도록 고려된다. 본 문맥에서, 동작 또는 프로세싱은 물리량의 물리적 조작을 수반한다. 보통, 반드시 필요하지는 않지만, 그러한 양은 저장, 전송, 조합, 비교나 아니면 조작할 수 있는 전기 또는 자기 신호의 형태를 취할 수 있다. 주로 일반 관습의 이유로, 비트, 데이터, 값, 요소, 심볼, 문자, 용어, 숫자 또는 번호 등으로 그러한 신호를 지칭하는 것이 때때로 편리함이 입증되었다. 그러나, 이들 및 유사한 용어 모두는 적절한 물리량과 연관될 것이고, 단지 편리한 라벨(label)임이 이해되어야 한다. 달리 구체적으로 언급하지 않는다면, 이하의 논의로부터 분명하게 될 바와 같이, 본 명세서의 논의에 걸쳐 "프로세싱", "컴퓨팅", "계산", "결정" 등과 같은 용어를 사용하는 것은, 컴퓨팅 장치의 메모리, 레지스터, 또는 기타 정보 저장 장치, 전송 장치, 또는 디스플레이 장치 내의 물리적 전자적 또는 자기적 양으로 표현된 데이터를 조작하거나 변환하는 컴퓨팅 장치의 동작이나 프로세스와 관련 있음이 인정된다.
전술한 상세한 설명은 블록도, 흐름도, 및/또는 예를 통해 장치의 다양한 실시예 및/또는 프로세스를 설명하였다. 그러한 블록도, 흐름도, 및/또는 예는 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 그러한 블록도, 흐름도, 또는 예 내의 각각의 기능 및/또는 동작은 하드웨어, 소프트웨어, 펌웨어, 또는 가상의 그들의 임의의 조합의 넓은 범위에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 이해될 것이다. 일 실시예에서, 본 개시에 기재된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 그러나, 당업자라면, 본 개시의 실시예의 일부 양상은, 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 실질적으로 이들의 조합으로써, 전체적으로 또는 부분적으로 균등하게 집적회로에 구현될 수 있다는 알 수 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자에게 자명할 것이다. 또한, 당업자라면, 본 개시의 대상의 매커니즘(mechanism)들이 다양한 형태의 프로그램 제품으로 분포될 수 있음을 이해할 것이며, 본 개시의 대상의 예시는, 분배를 실제로 수행하는데 사용되는 신호 포함 매체(signal bearing medium)의 특정 유형과 무관하게 적용됨을 이해할 것이다. 신호 포함 매체의 예는, 플로피 디스크, 하드 디스크 드라이브, CD, DVD, 디지털 테이프, 컴퓨터 메모리 등과 같은 판독가능 유형의 매체, 디지털 및/또는 아날로그 통신 매체(예를 들어, 섬유 광학 케이블, 웨이브가이드, 유선 통신 링크, 무선 통신 링크 등)와 같은 전송 유형 매체를 포함할 수 있으나, 이에 제한되지는 않는다.
여기서 기술된 대상은 때때로 상이한 다른 컴포넌트 내에 포함되거나 접속된 상이한 컴포넌트를 도시한다. 도시된 그러한 아키텍처는 단순히 예시적인 것이고, 사실상 동일한 기능을 달성하는 다른 많은 아키텍처가 구현될 수 있다는 것이 이해되어야 한다. 개념적으로, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배치는 원하는 기능이 달성되도록 유효하게 "연관"된다. 이에 따라, 특정 기능을 달성하기 위해 여기서 결합된 임의의 두 개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트와는 무관하게, 원하는 기능이 달성되도록 서로 "연관"된 것으로 볼 수 있다. 마찬가지로, 연관된 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 접속"되거나 또는 "동작적으로 연결"되는 것으로 간주될 수 있고, 그와 같이 연관될 수 있는 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 연결가능"한 것으로 볼 수 있다. 동작적으로 연결 가능하다는 것의 특정 예는 물리적으로 양립가능(mateable)하고 및/또는 물리적으로 상호작용하는 컴포넌트 및/또는 무선으로 상호작용이 가능하고 및/또는 무선으로 상호작용하는 컴포넌트 및/또는 논리적으로 상호작용하고 및/또는 논리적으로 상호작용이 가능한 컴포넌트를 포함하지만, 이에 한정되는 것은 아니다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 실시예로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 일반적으로 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 일반적으로 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C,등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). "A, B 또는 C 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 어떠한 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
특정 예시적 기법이 다양한 방법 및 시스템을 이용하여 여기에서 기술되고 도시되었으나, 청구된 대상에서 벗어나지 않고, 다양한 기타의 수정이 이루어질 수 있고, 등가물이 대체될 수 있음이 당업자에 의해 이해되어야 한다. 추가적으로, 여기에 기술된 중심 개념으로부터 벗어남이 없이 특정 상황을 청구된 대상의 교시로 적응시키도록 많은 수정이 이루어질 수 있다. 따라서, 청구된 대상이 개시된 특정 예시로 제한되지 않으나, 그러한 청구된 대상은 또한 첨부된 청구범위 및 그 균등의 범위 내에 들어가는 모든 구현예를 포함할 수 있음이 의도된다.

Claims (20)

  1. 스왑 제안 코어(swap proposal core)를 통하여, 분산형 마르코프 체인 몬테 카를로 절차(distributed-type Markov chain Monte Carlo procedure)와 연관된 복수의 스왑 제안을 생성하는 단계;
    제1 체인 코어(chain core)를 통하여, 상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하는 단계;
    상기 제1 체인 코어를 통하여, 복수의 랜덤 수(random number)를 생성하는 단계;
    상기 제1 체인 코어를 통하여, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복(current iteration)을 처리(processing)하는 단계; 및
    상기 제1 체인 코어를 통하여, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하는 단계를 포함하며;
    상기 제1 체인 코어를 통한 상기 랜덤 수의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안, 중단(interruption) 없이 진행하는, 방법.
  2. 제1항에 있어서,
    상기 스왑 제안 코어를 통한 상기 스왑 제안의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 진행하는, 방법.
  3. 제1항에 있어서,
    스왑 제안 생성 큐(swap proposal generation queue)를 통하여, 상기 스왑 제안 중 하나 이상을 저장하는 단계; 및
    상기 스왑 제안 코어를 통하여, 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    스왑 제안 분산 큐를 통하여, 상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하는 단계를 더 포함하고, 상기 스왑 제안 분산 큐는 상기 제1 체인 코어와 연관되고 제2 스왑 제안 분산 큐는 상기 제2 체인 코어와 연관되는, 방법.
  5. 제1항에 있어서,
    랜덤 비트 큐(random bit queue)를 통하여, 상기 복수의 랜덤 수 중 하나 이상을 저장하는 단계를 더 포함하고, 상기 랜덤 비트 큐는 상기 제1 체인 코어와 연관되고 제2 랜덤 비트 큐는 상기 제2 체인 코어와 연관되는, 방법.
  6. 제1항에 있어서,
    상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 단계 이후에, 상기 방법은,
    상기 스왑 제안 코어를 통하여, 추가적인 스왑 제안을 상기 제1 체인 코어 및 상기 제2 체인 코어로 분산하는 단계;
    상기 제1 체인 코어 및/또는 상기 제2 체인 코어를 통하여, 상기 스왑 제안 분산 큐를 통하여 저장된 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 상기 제1 체인부와 연관된 상태(state)를 제2 체인부와 연관된 상태와 스왑할지 결정하는 단계; 및
    상기 제1 체인 코어를 통하여, 상기 랜덤 비트 큐를 통하여 저장된 상기 복수의 랜덤 수 및 상기 제2 체인부로부터 스왑된 상기 상태에 적어도 부분적으로 기초하여 상기 제1 체인부의 후속의 반복을 처리하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 분산형 마르코프 체인 몬테 카를로 절차는 메트로폴리스 결합형 마르코프 체인 몬테 카를로 절차(Metropolis-coupled-type Markov chain Monte Carlo procedure)를 포함하는, 방법.
  8. 제1항에 있어서,
    특정 스왑 제안은 상기 제1 체인부, 상기 제2 체인부, 및 특정 반복과 관련된 정보를 포함하는, 방법.
  9. 제1항에 있어서,
    상기 방법은 상기 분산형 마르코프 체인 몬테 카를로 절차의 통계적 성능을 보존하기 위하여 조정되는, 방법.
  10. 복수의 프로세서 코어를 포함하는 멀티 코어 프로세서로서,
    분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성된 스왑 제안 코어;
    상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하도록 구성된 제1 체인 코어; 및
    상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 제2 체인부의 현재 반복을 처리하도록 구성된 상기 제2 체인 코어를 포함하고,
    상기 제1 체인 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단(interruption) 없이 랜덤 수의 생성을 계속하도록 더 구성된, 멀티 코어 프로세서.
  11. 제10항에 있어서,
    상기 스왑 제안 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 스왑 제안의 생성을 계속하도록 더 구성된, 멀티 코어 프로세서.
  12. 제10항에 있어서,
    상기 스왑 제안 중 하나 이상을 저장하도록 구성된 스왑 제안 생성 큐를 더 포함하며,
    상기 스왑 제안 코어는 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하도록 더 구성된, 멀티 코어 프로세서.
  13. 제10항에 있어서,
    상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 스왑 제안 분산 큐 - 상기 스왑 제안 분산 큐는 상기 제1 체인 코어와 연관됨-; 및
    상기 제2 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 제2 스왑 제안 분산 큐 - 상기 제2 스왑 제안 분산 큐는 상기 제2 체인 코어와 연관됨-
    를 더 포함하는 멀티 코어 프로세서.
  14. 제10항에 있어서,
    상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 랜덤 비트 큐 - 상기 랜덤 비트 큐는 상기 제1 체인 코어와 연관됨-; 및
    상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 제2 랜덤 비트 큐 - 상기 제2 랜덤 비트 큐는 상기 제2 체인 코어와 연관됨-
    를 더 포함하는 멀티 코어 프로세서.
  15. 복수의 프로세서 코어를 포함하는 컴퓨팅 장치로서,
    멀티 코어 프로세서;
    메모리 버스; 및
    상기 메모리 버스를 통하여 상기 멀티 코어 프로세서와 통신하도록 구성된 시스템 메모리를 포함하고,
    상기 멀티 코어 프로세서는,
    분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성된 스왑 제안 코어,
    상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하도록 구성된 제1 체인부, 및
    상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 제2 체인부의 현재 반복을 처리하도록 구성된 상기 제2 체인 코어를 포함하며,
    상기 제1 체인 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 랜덤 수의 생성을 계속하도록 더 구성되는, 컴퓨팅 장치.
  16. 제15항에 있어서,
    상기 스왑 제안 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 스왑 제안의 생성을 계속하도록 더 구성된, 컴퓨팅 장치.
  17. 제15항에 있어서,
    상기 스왑 제안 코어는 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 스왑 제안 생성 큐를 더 포함하며,
    상기 스왑 제안 코어는 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하도록 더 구성된, 컴퓨팅 장치.
  18. 제15항에 있어서,
    상기 멀티 코어 프로세서는,
    상기 제1 체인 코어는 상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 스왑 제안 분산 큐를 더 포함하고;
    상기 제2 체인 코어는 상기 제2 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 제2 스왑 제안 분산 큐를 더 포함하고;
    상기 제1 체인 코어는 상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 랜덤 비트 큐를 더 포함하며 - 상기 랜덤 비트 큐는 상기 제1 체인 코어와 연관됨-;
    상기 제2 체인 코어는 상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 제2 랜덤 비트 큐를 더 포함하는 것을
    더 포함하는, 컴퓨팅 장치.
  19. 저장된 머신 판독가능 명령(machine-readable instruction)을 포함하는 신호 베어링 매체를 포함하는 물품(article)으로서, 상기 명령은 하나 이상의 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금,
    스왑 제안 코어를 통하여, 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하는 것;
    제1 체인 코어를 통하여, 상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하는 것;
    상기 제1 체인 코어를 통하여, 복수의 랜덤 수를 생성하는 것;
    상기 제1 체인 코어를 통하여, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하는 것; 및
    상기 제1 체인 코어를 통하여, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하는 것을 동작 가능하게 하며,
    상기 제1 체인 코어를 통한 상기 랜덤 수의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 진행하며,
    상기 스왑 제안 코어를 통한 상기 스왑 제안의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 진행하는, 물품.
  20. 제19항에 있어서,
    상기 컴퓨팅 장치가,
    스왑 제안 생성 큐를 통하여, 상기 스왑 제안 중 하나 이상을 저장하는 것;
    상기 스왑 제안 코어를 통하여, 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하는 것;
    스왑 제안 분산 큐를 통하여, 상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하는 것 - 상기 스왑 제안 분산 큐는 상기 제1 체인 코어와 연관되고 제2 스왑 제안 분산 큐는 상기 제2 체인 코어와 연관됨 -;
    랜덤 비트 큐를 통하여, 상기 복수의 랜덤 수 중 하나 이상을 저장하는 것 - 상기 랜덤 비트 큐는 상기 제1 체인 코어와 연관되며 제2 랜덤 비트 큐는 상기 제2 체인 코어와 연관됨- 을 더 동작 가능하게 하는, 물품.
KR1020127025390A 2010-03-02 2011-01-31 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법, 멀티 코어 프로세서, 컴퓨팅 장치 및 컴퓨터 판독가능 저장 매체 KR101387973B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/716,084 2010-03-02
US12/716,084 US8386403B2 (en) 2010-03-02 2010-03-02 Distributed-type Markov chain Monte Carlo
PCT/US2011/023236 WO2011109131A2 (en) 2010-03-02 2011-01-31 Distributed-type markov chain monte carlo

Publications (2)

Publication Number Publication Date
KR20120123722A true KR20120123722A (ko) 2012-11-09
KR101387973B1 KR101387973B1 (ko) 2014-04-22

Family

ID=44532163

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127025390A KR101387973B1 (ko) 2010-03-02 2011-01-31 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법, 멀티 코어 프로세서, 컴퓨팅 장치 및 컴퓨터 판독가능 저장 매체

Country Status (6)

Country Link
US (1) US8386403B2 (ko)
JP (1) JP5670484B2 (ko)
KR (1) KR101387973B1 (ko)
BR (1) BR112012020040A2 (ko)
DE (1) DE112011100757T5 (ko)
WO (1) WO2011109131A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022103225A1 (ko) * 2020-11-13 2022-05-19 삼성전자 주식회사 전자 장치 및 전자 장치의 이미지 렌더링 방법
US11935149B2 (en) 2020-11-13 2024-03-19 Samsung Electronics Co., Ltd Electronic device and image rendering method thereof for adjusting frame rate

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635172B1 (en) * 2011-10-07 2014-01-21 Google Inc. Dynamic techniques for evaluating quality of clustering or classification system aimed to minimize the number of manual reviews based on Bayesian inference and Markov Chain Monte Carlo (MCMC) techniques
JP7014963B2 (ja) 2018-03-15 2022-02-02 富士通株式会社 最適化装置及び最適化装置の制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010A (en) * 1851-04-01 Peter mckinlay
US6640191B1 (en) * 1999-12-30 2003-10-28 The Regents Of The University Of California Library design in combinatorial chemistry by Monte Carlo methods
US7773088B2 (en) 2000-06-19 2010-08-10 Mental Images Gmbh Simultaneous simulation of markov chains using quasi-monte carlo techniques
US7072811B2 (en) 2002-07-15 2006-07-04 Carnegie Mellon University Method and system for identifying regeneration points in a Markov chain Monte Carlo simulation
US7848440B2 (en) 2005-07-07 2010-12-07 University Of Utah Research Foundation Multi-channel communication method and apparatus using plural Markov Chain Monte Carlo simulations
US7457367B2 (en) 2004-07-07 2008-11-25 University Of Utah Research Foundation Detector and method for estimating data probability in a multi-channel receiver
US7409325B2 (en) 2004-07-27 2008-08-05 Battelle Memorial Institute Object oriented library for Markov chain Monte Carlo simulation
US8117288B2 (en) * 2004-10-12 2012-02-14 International Business Machines Corporation Optimizing layout of an application on a massively parallel supercomputer
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US8756264B2 (en) 2006-06-20 2014-06-17 Google Inc. Parallel pseudorandom number generation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022103225A1 (ko) * 2020-11-13 2022-05-19 삼성전자 주식회사 전자 장치 및 전자 장치의 이미지 렌더링 방법
US11935149B2 (en) 2020-11-13 2024-03-19 Samsung Electronics Co., Ltd Electronic device and image rendering method thereof for adjusting frame rate

Also Published As

Publication number Publication date
WO2011109131A2 (en) 2011-09-09
WO2011109131A3 (en) 2012-07-12
DE112011100757T5 (de) 2013-03-21
JP5670484B2 (ja) 2015-02-18
BR112012020040A2 (pt) 2016-05-03
US20110218944A1 (en) 2011-09-08
JP2013521545A (ja) 2013-06-10
US8386403B2 (en) 2013-02-26
KR101387973B1 (ko) 2014-04-22

Similar Documents

Publication Publication Date Title
Häner et al. 5 petabyte simulation of a 45-qubit quantum circuit
Mutlu et al. Enabling practical processing in and near memory for data-intensive computing
Gao et al. Performance and power analysis of high-density multi-GPGPU architectures: A preliminary case study
Yin et al. Computing platforms for big biological data analytics: perspectives and challenges
Alted Why modern CPUs are starving and what can be done about it
US10007527B2 (en) Uniform load processing for parallel thread sub-sets
US7640284B1 (en) Bit reversal methods for a parallel processor
JP2020519981A (ja) 専用ニューラルネットワークトレーニングチップ
US8688962B2 (en) Gather cache architecture
CN112835627B (zh) 用于单指令多线程或单指令多数据类型处理器的近似最近邻域搜索
CN103218309A (zh) 多级指令高速缓存预取
KR101681440B1 (ko) 블록 코드 퍼뮤테이션을 이용한 멀웨어 공격 방지
KR101387973B1 (ko) 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법, 멀티 코어 프로세서, 컴퓨팅 장치 및 컴퓨터 판독가능 저장 매체
US20140173606A1 (en) Streaming processing of short read alignment algorithms
Boyle The bluegene/q supercomputer
Zahran Heterogeneous computing: Hardware and software perspectives
Nukada et al. High performance 3-D FFT using multiple CUDA GPUs
Huangfu et al. Nest: Dimm based near-data-processing accelerator for k-mer counting
Doerksen et al. Designing APU oriented scientific computing applications in OpenCL
TW201246068A (en) Methods and systems for mapping a function pointer to the device code
TW202018516A (zh) 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和系統
Demmel Communication avoiding algorithms
Pati et al. T3: Transparent Tracking & Triggering for Fine-grained Overlap of Compute & Collectives
Li et al. Multiple pairwise sequence alignments with the needleman-wunsch algorithm on gpu
Jonatan et al. Scalability Limitations of Processing-in-Memory using Real System Evaluations

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: 20180329

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee