KR101387973B1 - Method, multicore processor, computing device and computer readable storage medium for implementing distributed-type markov chain monte carlo procedure - Google Patents

Method, multicore processor, computing device and computer readable storage medium for implementing distributed-type markov chain monte carlo procedure Download PDF

Info

Publication number
KR101387973B1
KR101387973B1 KR1020127025390A KR20127025390A KR101387973B1 KR 101387973 B1 KR101387973 B1 KR 101387973B1 KR 1020127025390 A KR1020127025390 A KR 1020127025390A KR 20127025390 A KR20127025390 A KR 20127025390A KR 101387973 B1 KR101387973 B1 KR 101387973B1
Authority
KR
South Korea
Prior art keywords
chain
swap
core
proposal
monte carlo
Prior art date
Application number
KR1020127025390A
Other languages
Korean (ko)
Other versions
KR20120123722A (en
Inventor
제임스 에이치. 스태픈스
Original Assignee
엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 filed Critical 엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Publication of KR20120123722A publication Critical patent/KR20120123722A/en
Application granted granted Critical
Publication of KR101387973B1 publication Critical patent/KR101387973B1/en

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

Abstract

분산형 마르코프 체인 몬테 카를로에 대한 구현예 및 기술이 일반적으로 개시된다.Embodiments and techniques for the distributed Markov chain Monte Carlo are generally disclosed.

Figure R1020127025390
Figure R1020127025390

Description

분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법, 멀티 코어 프로세서, 컴퓨팅 장치 및 컴퓨터 판독가능 저장 매체{METHOD, MULTICORE PROCESSOR, COMPUTING DEVICE AND COMPUTER READABLE STORAGE MEDIUM FOR IMPLEMENTING DISTRIBUTED-TYPE MARKOV CHAIN MONTE CARLO PROCEDURE}METHOD, MULTICORE PROCESSOR, COMPUTING DEVICE AND COMPUTER READABLE STORAGE MEDIUM FOR IMPLEMENTING DISTRIBUTED-TYPE MARKOV CHAIN MONTE CARLO PROCEDURE}

여기에서 달리 언급하지 않는다면, 본 섹션에서 기술된 접근법은 본 출원에서 청구항의 선행기술이 아니며 본 섹션에 포함함으로써 선행기술로 인정되는 것이 아니다.Unless stated otherwise herein, the approaches described in this section are not prior art of the claims in this application and are not admitted to be prior art by inclusion in this section.

마르코프 체인 몬테 카를로 절차(Markov chain Monte Carlo procedure)는 공학, 물리학, 천문학, 생물학, 금융, 암호학, 통계학, 사회 과학, 의학 등을 포함하는 많은 분야에서 활용될 수 있다. 마르코프 체인 몬테 카를로 애플리케이션(application)은 보통 상당한 양의 처리 능력(processing power)을 이용할 수 있다. 결과적으로, 마르코프 체인 몬테 카를로 애플리케이션은 고성능 컴퓨팅 시스템 상에서 운영될 수 있다.The Markov chain Monte Carlo procedure can be used in many fields, including engineering, physics, astronomy, biology, finance, cryptography, statistics, social sciences and medicine. Markov chain Monte Carlo applications usually use a significant amount of processing power. As a result, the Markov chain Monte Carlo application can run on a high performance computing system.

일부 예시적인 방법, 장치, 및 시스템은 분산형(distributed-type) 마르코프 체인 몬테 카를로에 관련된다. 그러한 방법은, 스왑 제안 코어(swap proposal core)를 통하여, 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하는 단계를 포함할 수 있다. 스왑 제안 중 하나 이상은 스왑 제안 코어로부터 제1 체인 코어(chain core)를 통하여 수신될 수 있다. 복수의 랜덤 수(random number)가 제1 체인 코어를 통하여 생성될 수 있다. 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복(current iteration)은 복수의 랜덤 수에 적어도 부분적으로 기초하여 제1 체인 코어를 통하여 처리될 수 있다. 제1 체인 코어는 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여, 제2 체인 코어와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다릴 수 있다. 랜덤 수의 생성은 제2 체인 코어가 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 기다리는 동안 중단(interruption) 없이 제1 체인 코어를 통하여 진행할 수 있다.Some exemplary methods, apparatus, and systems relate to a distributed-type Markov chain Monte Carlo. Such a method may include generating, via a swap proposal core, a plurality of swap proposals associated with a distributed Markov chain Monte Carlo procedure. One or more of the swap proposals may be received from the swap proposal core via a first chain core. A plurality of random numbers may be generated through the first chain core. The current iteration of the first chain portion of the distributed Markov chain Monte Carlo procedure may be processed through the first chain core based at least in part on the plurality of random numbers. The first chain core may wait, based at least in part on one or more of the swap proposals, for the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with the second chain core to reach a corresponding iteration. The generation of the random number can proceed through the first chain core without interruption while waiting for the second chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure.

일부 예시는 복수의 프로세서 코어를 포함하는 멀티 코어 프로세서(multicore processor)를 포함할 수 있으며, 멀티 코어 프로세서는 스왑 제안 코어 및 제1 체인 코어를 포함할 수 있다. 스왑 제안 코어는 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성될 수 있다. 제1 체인 코어는 스왑 제안 코어로부터 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 복수의 랜덤 수에 적어도 부분적으로 기초하여 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다리도록 구성될 수 있다. 제2 체인 코어는 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복을 처리하도록 구성될 수 있다. 제1 체인 코어는 제2 체인 코어가 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 기다리는 동안 중단 없이 랜덤 수의 생성을 계속하도록 더 구성될 수 있다.Some examples may include a multicore processor that includes a plurality of processor cores, and the multicore processor may include a swap proposal core and a first chain core. The swap proposal core may be configured to generate a plurality of swap proposals associated with the distributed Markov chain Monte Carlo procedure. The first chain core receives one or more of the swap proposals from the swap proposal core, generates a plurality of random numbers, and the current iteration of the first chain portion of the distributed Markov chain Monte Carlo procedure based at least in part on the plurality of random numbers. And wait for the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with the second chain core based at least in part on one or more of the swap proposals to reach the corresponding iteration. The second chain core may be configured to handle the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure. The first chain core may be further configured to continue generating a random number without interruption while waiting for the second chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure.

일부 예시는 복수의 프로세서 코어를 포함하는 컴퓨팅 장치를 포함할 수 있고, 컴퓨팅 장치는 멀티 코어 프로세서, 메모리 버스, 메모리 버스를 통하여 멀티 코어 프로세서와 통신하도록 구성된 시스템 메모리를 포함할 수 있다. 멀티 코어 프로세서는 스왑 제안 코어 및 제1 체인 코어를 포함할 수 있다. 스왑 제안 코어는 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성될 수 있다. 제1 체인 코어는 스왑 제안 코어로부터 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 복수의 랜덤 수에 적어도 부분적으로 기초하여 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다리도록 구성될 수 있다. 제2 체인 코어는 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복을 처리하도록 구성될 수 있다. 제1 체인 코어는 제2 체인 코어가 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 기다리는 동안 중단 없이 랜덤 수의 생성을 계속하도록 더 구성될 수 있다.Some examples may include a computing device that includes a plurality of processor cores, and the computing device may include system memory configured to communicate with the multi-core processor via a multi-core processor, a memory bus, a memory bus. The multi core processor may include a swap proposal core and a first chain core. The swap proposal core may be configured to generate a plurality of swap proposals associated with the distributed Markov chain Monte Carlo procedure. The first chain core receives one or more of the swap proposals from the swap proposal core, generates a plurality of random numbers, and the current iteration of the first chain portion of the distributed Markov chain Monte Carlo procedure based at least in part on the plurality of random numbers. And wait for the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with the second chain core based at least in part on one or more of the swap proposals to reach the corresponding iteration. The second chain core may be configured to handle the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure. The first chain core may be further configured to continue generating a random number without interruption while waiting for the second chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure.

전술한 요약은 예시적인 것일 뿐이고, 어떤 방식으로든 제한을 의도한 것은 아니다. 상술한 예시적인 태양, 실시예 및 특징들에 더하여, 추가의 태양, 실시예 및 특징들은 도면과 이하의 상세한 설명을 참조함으로써 분명하게 될 것이다.The foregoing summary is exemplary only and is not intended to be limiting in any way. In addition to the exemplary aspects, embodiments, and features described above, additional aspects, embodiments, and features will become apparent by reference to the drawings and detailed description that follows.

본 대상은 명세서의 결론 부분에서 특히 주목되고 명백히 청구된다. 본 개시의 전술한 특징들 및 기타 특징들은, 첨부 도면을 참조하여 이하의 설명 및 첨부된 청구항으로부터 충분히 분명해질 것이다. 이 도면들은 본 개시에 따르는 단지 몇 가지의 실시예만을 도시한 것이고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안된다는 것을 이해하고, 본 개시가 첨부된 도면의 사용을 통하여, 더 구체적이고 상세하게 기술될 것이다.
도 1은 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성된 멀티 코어 프로세서를 포함하는 예시적인 컴퓨팅 장치의 도시이고;
도 2는 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성된 멀티 코어 프로세서의 동작을 위한 예시적인 프로세스(process)의 도시이고;
도 3은 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성된 멀티 코어 프로세서의 동작을 위한 예시적인 프로세스의 도시이고;
도 4는 예시적인 컴퓨터 프로그램 제품의 도시이고;
도 5는 예시적인 컴퓨팅 장치를 도시하는 블록도이고, 모두 본 개시의 적어도 일부 실시예에 따라 배열된다.
This subject matter is particularly noted and clearly claimed in the conclusion section of the specification. The foregoing and other features of the present disclosure will become more fully apparent from the following description and the appended claims, taken in conjunction with the accompanying drawings. It is understood that these drawings illustrate only a few embodiments in accordance with the present disclosure, and therefore should not be considered as limiting the scope thereof, and that the present disclosure is described in more detail and detail through use of the accompanying drawings. Will be.
1 is an illustration of an exemplary computing device including a multi-core processor configured to implement a distributed Markov chain Monte Carlo procedure;
2 is an illustration of an example process for operation of a multi-core processor configured to implement a distributed Markov chain Monte Carlo procedure;
3 is an illustration of an example process for operation of a multi-core processor configured to implement a distributed Markov chain Monte Carlo procedure;
4 is an illustration of an exemplary computer program product;
5 is a block diagram illustrating an example computing device, all arranged in accordance with at least some embodiments of the present disclosure.

이하의 개시는 청구된 대상의 완전한 이해를 제공하기 위하여 특정 세부 사항에 따른 다양한 예시를 제시한다. 그러나, 청구된 대상이 여기에서 개시된 특정 세부 사항 중 일부 또는 그 이상 없이 실행될 수 있다는 것이 당업자에게 이해될 것이다. 추가적으로, 일부 환경에서, 잘 알려진 방법, 절차, 시스템, 구성 및/또는 회로는 청구된 대상을 불필요하게 모호하게 하는 것을 피하기 위하여 상세하게 설명하지 않는다. 이하의 상세한 설명에서, 여기의 일부를 구성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 부호는, 문맥에서 다른 지시가 없다면, 일반적으로 유사한 구성요소를 식별한다. 상세한 설명, 도면, 및 청구항에서 기술된 예시적인 실시예들은 제한하는 것으로 의미되지 않는다. 여기에 제시된 대상의 범위와 사상을 벗어나지 않고, 다른 실시예가 이용될 수 있고, 다른 변형이 이루어질 수 있다. 여기에서 일반적으로 기술되고 도면에서 도시된 바와 같은 본 개시의 태양은 다양한 다른 구성으로 배열, 대체, 조합 및 설계될 수 있음과, 이 모두가 여기에서 명확히 고려됨과 본 개시의 일부가 됨이 이해될 것이다.The following disclosure presents various examples in accordance with specific details in order to provide a thorough understanding of the claimed subject matter. However, it will be understood by those skilled in the art that the claimed subject matter may be practiced without some or more of the specific details disclosed herein. In addition, in some circumstances, well known methods, procedures, systems, configurations and / or circuits are not described in detail in order to avoid unnecessarily obscuring the claimed subject matter. In the following detailed description, reference is made to the accompanying drawings which form a part hereof. In the drawings, like reference numerals identify generally similar components, unless otherwise indicated in the context. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Without departing from the scope and spirit of the objects set forth herein, other embodiments may be utilized and other modifications may be made. It is to be understood that aspects of the present disclosure, as generally described herein and shown in the figures, may be arranged, substituted, combined, and designed in a variety of different configurations, all of which are clearly considered herein and become part of the present disclosure. will be.

본 개시는, 그 중에서도 특히, 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 것에 관련된 방법, 장치, 시스템에 관련된다.The present disclosure relates, inter alia, to methods, apparatuses, and systems related to implementing a distributed Markov chain Monte Carlo procedure.

이하에서 더 상세히 기술될 바와 같이, 분산형 마르코프 체인 몬테 카를로 절차의 개선된 구현이 멀티 코어 프로세서에 대하여 제공될 수 있다. 여기에서 사용된 "분산형 마르코프 체인 몬테 카를로"라는 용어는 실행의 다수의 병렬 스레드(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)"과 같은) 프리페치형 마르코프 체인 몬테 카를로 절차 등을 포함할 수 있다.As will be described in more detail below, an improved implementation of the distributed Markov chain Monte Carlo procedure may be provided for a multi-core processor. The term "distributed Markov chain Monte Carlo" as used herein may refer to any number of Markov chain Monte Carlo procedures that support multiple parallel threads of execution. For example, the distributed Markov chain Monte Carlo procedure may include the Metropolis-coupled-type Markov chain Monte Carlo procedure, (e.g., April 2008, IEEE International Symposium on Parallel and Distributed Processing). Reducing the runtime of MCMC programs by multithreading on SMP by Symposium on Parallel and Distributed Processing 2008 (IPDPS 2008), JMR Byrd, S. Jarvis, A. Bhalerao. speculative-move-type Markov chain Monte Carlo procedure) (e.g., J.Comp.Graph.Stats, vol. 15, no. 1, 2006, A. Brockwell). Prefetch Markov chain Monte Carlo, such as "Parallel Markov chain Monte Carlo simulation by pre-fetching" Procedures and the like.

분산형 마르코프 체인 몬테 카를로 절차는 다수 체인의 연산을 실행할 수 있다. 다양한 체인은 주기적으로 다른 체인과 상태(state)를 스왑하는 것을 고려할 수 있다. 체인 중 적어도 하나는, 목표 분산을 제공할 수 있는, "콜드(cold)" 체인일 수 있다. 상태를 스왑하는 것의 이용은 복잡한 검색 공간을 커버(covering)할 기회를 향상시킬 수 있다. 일부 동기화가 상태 스왑이 동일한 반복의 체인 사이에서 일어나는 것을 보장한다고 가정하면, 체인은 병렬로 실행될 수 있다. 여기에서 다루어지는 하나의 도전(challenge)은, 이러한 동기화가 유지하도록 돕는, 분산형 마르코프 체인 몬테 카를로 절차의 시맨틱(semantic)을 유지하면서 가능한 한 많은 이용 가능한 코어를 사용하기 위한 것이다.The distributed Markov chain Monte Carlo procedure can perform operations on multiple chains. Various chains may consider swapping states with other chains periodically. At least one of the chains may be a "cold" chain, which may provide a target distribution. The use of swapping states can improve the opportunity to cover complex search space. Assuming some synchronization ensures that state swap occurs between chains of the same iteration, the chains can run in parallel. One challenge addressed here is to use as many available cores as possible while maintaining the semantics of the distributed Markov chain Monte Carlo procedure, which helps this synchronization to be maintained.

이하에서 더 상세히 설명되는 바와 같이, 다양한 체인이 동시에 동기화 되도록 요구되지 않을 수 있도록 방법, 장치 및 시스템이 동작할 수 있다. 일부 예시에서 전용 "스왑" 코어는 스왑 제안 생성 스레드 및 스왑 제안 분산 스레드의, 두 개의 스레드를 호스팅(hosting)할 수 있다. 그러한 스왑 제안 코어는 스왑 제안을 생성하고, 그러한 스왑 제안 정보를 목표된 체인으로 분산하도록 구성될 수 있다. 따라서, 체인은 거의 독립적으로 운영될 수 있고, 특정 체인은 스왑이 주어진 반복에서 이에 대하여 제안되면 멈춰질 수 있다.As described in more detail below, the methods, apparatus, and systems may operate so that the various chains may not be required to be synchronized simultaneously. In some examples a dedicated "swap" core may host two threads, a swap proposal generation thread and a swap proposal distribution thread. Such a swap proposal core may be configured to generate a swap proposal and to distribute such swap proposal information to a targeted chain. Thus, the chain can run almost independently, and a particular chain can be stopped if a swap is proposed for it in a given iteration.

또한, 일부 마르코프 체인 몬테 카를로 절차로, 적어도 두 개 및 때로는 모든 코어가 유휴(idle)하여, 체인 연산을 멈추는 한편, 정보가 단일 스왑이 일어나야 하는지를 결정하기를 기다리거나 상태 데이터 그 자체를 교환하는 것이 종료하기를 기다릴 수 있다. 이하에서 더 상세히 설명할 바와 같이, 대기 체인(waiting chain)이 있는 코어라도 유휴될 필요가 없도록 방법, 장치, 시스템이 동작할 수 있다. 대신에, 체인이 대기하면, 그 체인의 코어는 장래 사용을 위한 랜덤 비트 생성을 위하여 사용될 수 있다. 일부 예시에서, 개별적인 "체인" 코어는 랜덤 수 생성 스레드 및 체인 스레드의 두 스레드를 호스팅할 수 있다. 랜덤 수 생성 스레드 및 체인 스레드가 분리됨에 따라, 체인 코어는 랜덤 수 생성 스레드를 계속해서 처리할 수 있고 체인 스레드의 동작을 대기할 필요가 없을 수 있다. 유사하게, 스왑 제안 생성 스레드 및 스왑 제안 분산 스레드가 분리됨에 따라, 스왑 제안 코어는 스왑 제안 생성 스레드를 계속해서 처리할 수 있고 스왑 제안 분산 스레드의 동작을 대기할 필요가 없을 수 있다.Also, with some Markov chain Monte Carlo procedures, at least two and sometimes all cores are idle, stopping chain operations, while waiting for information to determine if a single swap should occur or exchanging the state data itself. You can wait for it to finish. As will be described in more detail below, the methods, devices, and systems may operate such that a core with a waiting chain does not need to be idle. Instead, if the chain waits, the core of the chain can be used for random bit generation for future use. In some examples, individual "chain" cores may host two threads, a random number generating thread and a chain thread. As the random number generating thread and the chain thread are separated, the chain core may continue to process the random number generating thread and may not need to wait for the operation of the chain thread. Similarly, as the swap proposal generation thread and the swap proposal distribution thread are separated, the swap proposal core may continue to process the swap proposal generation thread and may not need to wait for the swap proposal distribution thread to operate.

도 1은 본 개시의 적어도 일부 실시예에 따라 배열된 멀티 코어 프로세서(100)를 포함하는 예시적인 컴퓨팅 장치의 도시이다. 멀티 코어 프로세서(100)는 분산형 마르코프 체인 몬테 카를로 절차를 구현하도록 구성될 수 있다. 도시된 예시에서, 멀티 코어 프로세서(100)는 프로세싱 코어 어레이(processing core array)를 가지는 단일 집적 회로를 포함할 수 있다. 기타 예시에서, 멀티 코어 프로세서(100)는 별도의 집적 칩 상에 프로세서 코어를 포함할 수 있다. 멀티 코어 프로세서(100)에 더하여 또는 멀티 코어 프로세서(100)를 대신하여, 분산 컴퓨팅 환경 시스템(도시되지 않음)이 멀티 코어 프로세서(100)에 대하여 여기에서 기술된 기능의 전부 또는 일부를 수행하도록 활용될 수 있다. 예컨대, 그러한 분산 컴퓨팅 환경 시스템(도시되지 않음)은 네트워크를 통하여 함께 동작적으로(operatively) 결합될 수 있는, (예컨대, 데스크탑 컴퓨터, 랩탑 컴퓨터, 워크스테이션, 서버 장치, 저장 유닛 등과 같은) 복수의 컴퓨팅 장치를 포함할 수 있다.1 is an illustration of an example computing device that includes a multi-core processor 100 arranged in accordance with at least some embodiments of the present disclosure. Multi-core processor 100 may be configured to implement a distributed Markov chain Monte Carlo procedure. In the example shown, the multi core processor 100 may comprise a single integrated circuit having a processing core array. In other examples, the multi-core processor 100 may include a processor core on a separate integrated chip. In addition to or in place of the multi core processor 100, a distributed computing environment system (not shown) is utilized to perform all or part of the functionality described herein for the multi core processor 100. Can be. For example, such a distributed computing environment system (not shown) may be a plurality of (eg, desktop computers, laptop computers, workstations, server devices, storage units, etc.) that can be operatively coupled together via a network. It can include a computing device.

멀티 코어 프로세서(100)는 수개(N)의 프로세싱 코어(104(1)-104(N))를 포함할 수 있다. 임의 적절한 수의 프로세싱 코어(104)가 제공될 수 있다. 예를 들어, 멀티 코어 프로세서(100)는 네(4) 개의 프로세싱 코어, 수십 개의 프로세싱 코어(104) 및 수백 개 또는 그 이상의 프로세싱 코어(104)라도 가질 수 있다. 일부 멀티 코어 프로세서(100)는 프로세싱 코어(104)의 각각이 단일 유형의 코어 설계를 사용하도록 동질적(homogenous)일 수 있다. 다른 멀티 코어 프로세서(100)는, 프로세싱 코어(104) 중 하나 이상이 다른 프로세싱 코어(104) 중 하나 이상과 상이할 수 있고, 개별의 프로세싱 코어(104) 또는 프로세싱 코어(104)의 부분집합(subset)이 멀티 코어 프로세서(100)에서 상이한 역할을 위하여 설계될 수 있도록, 이질적(heterogeneous)일 수 있다.Multi-core processor 100 may include several (N) processing cores 104 (1)-104 (N). Any suitable number of processing cores 104 may be provided. For example, the multi-core processor 100 may have four (4) processing cores, dozens of processing cores 104 and even hundreds or more processing cores 104. Some multi-core processors 100 may be homogenous such that each of the processing cores 104 uses a single type of core design. The other multi-core processor 100 may have one or more of the processing cores 104 different from one or more of the other processing cores 104, and may be a separate processing core 104 or a subset of the processing cores 104. subsets may be heterogeneous so that they can be designed for different roles in the multi-core processor 100.

프로세싱 코어(104)는 비공유(non-shared) L1 캐시(cache)와 공유 또는 비공유 중 하나인 L2 캐시(들) 및 공유 시스템 메모리를 포함할 수 있다. 개별적인 프로세싱 코어(104)는 하나 이상의 하드웨어 스레드를 지원할 수 있다. 프로세싱 코어(104)는 마르코프 체인 몬테 카를로 절차를 처리하도록 독점적으로 활용되지 않을 수 있다.Processing core 104 may include a non-shared L1 cache and L2 cache (s) and shared system memory, either shared or nonshared. Individual processing core 104 may support one or more hardware threads. The processing core 104 may not be exclusively utilized to process the Markov chain Monte Carlo procedure.

도 1은 멀티 코어 프로세서의 예시적인 개략도이며 도시된 구성요소의 물리적 위치를 도시하지는 않는다. 여기에서 기술된 멀티 코어 프로세서(100)는 예시적인 것이며 그 예시 및 수정이 가능함이 인식된다. 예를 들어, 하드웨어 크기 및 복잡도 대 성능, 열 에너지 및 열 방산, 프로세서 속도, 전체적인 처리량 등의 고려에 따라 설계 선택이 이루어질 수 있다.1 is an exemplary schematic diagram of a multi-core processor and does not depict the physical location of the components shown. It is appreciated that the multi-core processor 100 described herein is illustrative and that examples and modifications are possible. For example, design choices can be made based on consideration of hardware size and complexity versus performance, thermal energy and heat dissipation, processor speed, overall throughput, and the like.

도시된 예시에서, 멀티 코어 프로세서(100)는 서로 통신하도록 구성된 복수의 체인 코어(108, 110, 112)와 스왑 제안 코어(106)를 포함하는 복수의 프로세서 코어(104)를 포함할 수 있다. 임의 적절한 수의 체인 코어(108, 110, 112)가 제공될 수 있다.In the example shown, the multi-core processor 100 may include a plurality of processor cores 104 including a plurality of chain cores 108, 110, 112 and a swap suggestion core 106 configured to communicate with each other. Any suitable number of chain cores 108, 110, 112 may be provided.

일부 예시에서, 스왑 제안 코어(106)는 스왑 제안 생성 스레드(114) 및 스왑 제안 분산 스레드(116)의 두 개의 스레드를 호스팅할 수 있다. 그러한 스왑 제안 코어(106)는 스왑 제안을 생성하고, 그러한 스왑 제안 정보를 체인 코어(108, 110, 112)와 연관된 목표 체인으로 분산하도록 구성될 수 있다. 스왑 제안 생성 스레드(114) 및 스왑 제안 분산 스레드(116)가 분리됨에 따라, 스왑 제안 코어(106)는 스왑 제안 생성 스레드(114)를 계속해서 처리할 수 있고, 스왑 제안 분산 스레드(116)의 동작을 기다릴 필요가 없을 수 있다.In some examples, swap proposal core 106 may host two threads, swap proposal generation thread 114 and swap proposal distribution thread 116. Such swap proposal core 106 may be configured to generate a swap proposal and distribute such swap proposal information to a target chain associated with the chain cores 108, 110, 112. As the swap proposal generation thread 114 and the swap proposal distribution thread 116 are separated, the swap proposal core 106 can continue to process the swap proposal generation thread 114, and You may not have to wait for action.

여기에서 사용된 바와 같이, "스왑 제안"이란 용어는 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부, 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부, 및 분산형 마르코프 체인 몬테 카를로 절차의 특정 반복과 관련된 정보를 지칭할 수 있다. 예컨대, 스왑 제안 스레드(114)는 일부 특정 간격(interval)에서 두 개의 체인 사이에서 스왑 제안을 생성할 수 있다. 이러한 스왑 제안 데이터는 일련의 스왑 제안 트리플(triple){<i, j, k>1, …}로 표현될 수 있으며, 이는 반복 i에서 제1 체인 j의 상태가 제2 체인 k의 상태와 스왑될 수 있음을 나타낸다.As used herein, the term "swap proposal" refers to the first chain portion of the distributed Markov chain Monte Carlo procedure, the second chain portion of the distributed Markov chain Monte Carlo procedure, and the specifics of the distributed Markov chain Monte Carlo procedure. It may refer to information related to repetition. For example, swap proposal thread 114 may generate a swap proposal between two chains at some specific interval. This swap proposal data is a series of swap proposal triples {<i, j, k> 1 ,... }, Which indicates that in iteration i the state of the first chain j can be swapped with the state of the second chain k.

그러한 스왑 제안 데이터 시퀀스(sequence)를 생성하기 위하여, 스왑 제안 코어(106)는 랜덤 비트(random bit)를 생성할 수 있다. 예를 들어, 스왑 제안 생성 스레드(114)는 (인터 체인(inter-chain)) 상태 스왑을 결정하는데 이용하기 위하여 랜덤 비트를 생성할 수 있다. 하드웨어 랜덤 비트 생성기 또는 의사 랜덤, 소프트웨어 구현 비트 생성기(pseudo-random, software-implemented bit generator) 중 하나가 랜덤 비트 생성에 사용될 수 있다.In order to generate such a swap suggestion data sequence, the swap suggestion core 106 may generate a random bit. For example, swap proposal generation thread 114 may generate a random bit for use in determining (inter-chain) state swap. One of a hardware random bit generator or a pseudo-random, software-implemented bit generator may be used for random bit generation.

일부 예시에서 개별적인 체인 코어(108, 110, 112)는 각각 랜덤 수 생성 스레드(118) 및 체인 스레드(120)의 두 개의 스레드를 호스팅할 수 있다. 랜덤 수 생성 스레드(118) 및 체인 스레드(120)를 수반하는 프로세스는 (예컨대, 프로세서 친화성(processor affinity) 또는 유사한 명령을 통하여) 그 지정된 체인 코어(108, 110, 112)에 고정(pin)될 수 있다. 그러한 고정은 체인 스레드(120)가 공간을 검색할 때 캐시 집약성(locality)을 보존하도록 도울 수 있다.In some examples, individual chain cores 108, 110, 112 may host two threads, random number generating thread 118 and chain thread 120, respectively. Processes involving random number generation thread 118 and chain thread 120 are pinned to their designated chain cores 108, 110, 112 (eg, via processor affinity or similar instructions). Can be. Such pinning can help chain thread 120 preserve cache locality when searching for space.

랜덤 수 생성 스레드(118) 및 체인 스레드(120)가 분리됨에 따라, 체인 코어(108)는 랜덤 수 생성 스레드(118)를 계속해서 처리할 수 있고 체인 스레드의 동작을 기다릴 필요가 없을 수 있다. 랜덤 수 생성 스레드(118)는 (인트라-체인(intra-chain)) 상태 전환(transition)을 결정함에 있어서 이용하기 위하여 랜덤 비트를 생성할 수 있다. 하드웨어 랜덤 비트 생성기 또는 의사 랜덤, 소프트웨어 구현 비트 생성기 중 하나가 랜덤 비트 생성을 위하여 사용될 수 있다. As the random number generating thread 118 and the chain thread 120 are separated, the chain core 108 may continue to process the random number generating thread 118 and may not need to wait for the operation of the chain thread. The random number generation thread 118 may generate random bits for use in determining the (intra-chain) state transition. One of a hardware random bit generator or a pseudo random, software implemented bit generator may be used for random bit generation.

스왑 제안 코어(106)는 스왑 제안 생성 큐(queue)(122)를 포함할 수 있다. 스왑 제안 생성 큐(122)는 스왑 제안 생성 스레드(114)를 통하여 생성되는 스왑 제안 중 하나 이상을 저장하도록 구성될 수 있다. 스왑 제안 생성 큐(122)는 코어 특정 버퍼(core-specific buffer) 등으로서 구현될 수 있다. 스왑 제안 코어(106)는 스왑 제안 중 하나 이상을 스왑 제안 분산 스레드(116)를 통하여 스왑 제안 생성 큐(122)로부터 체인 코어(108, 110, 112)로 분산하도록 구성될 수 있다.Swap proposal core 106 may include a swap proposal generation queue 122. The swap proposal generation queue 122 may be configured to store one or more of the swap proposals generated via the swap proposal generation thread 114. The swap proposal generation queue 122 may be implemented as a core-specific buffer or the like. The swap proposal core 106 may be configured to distribute one or more of the swap proposals from the swap proposal generation queue 122 to the chain cores 108, 110, 112 through the swap proposal distribution thread 116.

결과적인 스왑 제안은 그들이 생성된 이후에 언제라도 사용될 수 있으므로, 스왑 제안 코어(106)는 임의의 시각에 스왑 제안을 생성하는 것을 시작할 수 있으며, 연속적으로 또는 거의 연속적으로 스왑 제안 생성 큐(122)를 계속해서 덧붙일(populate) 수 있다. 스왑 제안 코어(106)는 또한 체인 스레드(120)를 호스팅하는, 체인 코어(108, 110, 112)로 스왑 제안을 분산하도록 스왑 제안 분산 스레드(116)를 처리할 수 있다. 예컨대, 체인 스레드(120)로부터의 요청에 대하여, 스왑 제안 분산 스레드(116)는 하나 이상의 스왑 제안을 그 체인 스레드(120)로 분산할 수 있다. 스왑 제안 분산 스레드(116)는 스왑 제안 생성 큐(122)로부터의 스왑 제안의 큐잉 해제기(dequeuer)로서 동작할 수 있다.As the resulting swap proposals can be used at any time after they are created, the swap proposal core 106 can begin to generate swap proposals at any time, and the swap proposal generation queue 122 continuously or nearly continuously. You can continue to populate Swap proposal core 106 may also process swap proposal distribution thread 116 to distribute swap proposals to chain cores 108, 110, 112, which host chain threads 120. For example, for a request from chain thread 120, swap proposal distribution thread 116 may distribute one or more swap proposals to its chain thread 120. The swap proposal distribution thread 116 may operate as a dequeuer of swap proposals from the swap proposal generation queue 122.

제1 체인 코어(108)는 스왑 제안 분산 큐(124)를 포함할 수 있다. 스왑 제안 분산 큐(124)는 제1 체인 코어(108)를 통하여 수신된 스왑 제안 중 하나 이상을 저장하도록 구성될 수 있다. 스왑 제안 분산 큐(124)는 코어 특정 버퍼 등으로 구현될 수 있다. 개별 체인 코어(108)와 연관된 개별 체인 스레드(120)는 스왑 제안 코어(106)로부터 가장 가까운 스왑 제안(예컨대, 현재 반복에 대하여 가장 가까운 스왑 제안)을 획득할 수 있다. 예를 들어, 체인 스레드(120)와 연관된 스왑 제안 분산 큐(124)는 제1 체인 코어(108)와 연관된 스왑 제안의 큐를 가질 수 있다. 다른 체인 코어(110 및 112)와 연관된 체인 스레드는 각각의 스왑 제안 분산 큐가 채워진 것을 유지할 책임이 있을 수 있다. 예컨대, 제2 스왑 제안 분산 큐(126)는 제2 체인 코어(110)와 연관될 수 있다. 제2 스왑 제안 분산 큐(126)는 제2 체인 코어(126)를 통하여 수신된 스왑 제안 중 하나 이상을 저장하도록 구성될 수 있다.The first chain core 108 may include a swap proposal distribution queue 124. The swap proposal distribution queue 124 may be configured to store one or more of the swap proposals received via the first chain core 108. The swap proposal distributed queue 124 may be implemented with a core specific buffer or the like. The individual chain threads 120 associated with the individual chain cores 108 may obtain the closest swap proposal (eg, the closest swap proposal for the current iteration) from the swap proposal core 106. For example, the swap proposal distribution queue 124 associated with the chain thread 120 may have a queue of swap proposals associated with the first chain core 108. Chain threads associated with other chain cores 110 and 112 may be responsible for keeping each swap suggestion distribution queue filled. For example, the second swap proposal distribution queue 126 may be associated with the second chain core 110. The second swap proposal distribution queue 126 may be configured to store one or more of the swap proposals received via the second chain core 126.

제1 체인 코어(108)는 랜덤 비트 큐(128)를 포함할 수 있다. 랜덤 비트 큐(128)는 랜덤 수 생성 스레드(118)를 통하여 생성된 랜덤 수 중 하나 이상을 저장하도록 구성될 수 있다. 랜덤 비트 큐(128)는 코어 특정 버퍼 등으로 구현될 수 있다. 마찬가지로, 제2 랜덤 비트 큐(130)는 제2 체인 코어(110)와 연관될 수 있다. 랜덤 비트 큐(130)는 제2 체인 코어(110)와 연관된 랜덤 수 생성 스레드를 통하여 생성된 랜덤 수 중 하나 이상을 저장하도록 구성될 수 있다.The first chain core 108 may include a random bit queue 128. The random bit queue 128 may be configured to store one or more of the random numbers generated via the random number generation thread 118. The random bit queue 128 may be implemented with a core specific buffer or the like. Similarly, the second random bit queue 130 may be associated with the second chain core 110. The random bit queue 130 may be configured to store one or more of the random numbers generated through the random number generation thread associated with the second chain core 110.

랜덤 수는 그들이 생성된 이후에 언제라도 사용될 수 있으므로, 랜덤 수 생성 스레드(118)는, 임의의 스케줄에서 자유롭게 실행되어, 임의의 스케줄에서 랜덤 비트 큐(128)를 채울 수 있다. 따라서, 개별 체인 코어(108)는 보통 연관된 랜덤 비트 큐(128)에 접근할 수 있고, 연관된 체인 스레드(120)는 랜덤 수를 그 랜덤 비트 큐(128)로부터 제거할 수 있다.Since the random numbers can be used at any time after they are generated, the random number generation thread 118 can run freely on any schedule, filling the random bit queue 128 on any schedule. Thus, an individual chain core 108 can usually access the associated random bit queue 128, and the associated chain thread 120 can remove the random number from the random bit queue 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)으로 달성될 수 있다.In operation, the associated chain core 108 is free to process the chain thread 120 (and the random number generation thread 118) before the chain thread 120 reaches the next proposed swap iteration. When the chain core 108 reaches a particular iteration (eg, the iteration associated with the received swap proposal), the chain thread 120 may cause the proposed swap chain thread (eg, the chain thread associated with the second chain core 110) to be replaced. You can wait to share enough information to determine if a swap should happen and wait to swap state if necessary. The communication about potential swap may be point-to-point communication (eg, chain thread to chain thread). The random number generated by the random number generation thread 118 and stored in the random bit queue 128 may be consumed while determining whether swap should occur. In some examples, chain thread 120 may request one or more additional swap proposals while waiting for another chain thread to be proposed for potential swap. On the other hand, the chain core 108 may continue to process the random number generation thread 118. With the exception of chain cores (eg, first chain core 108 and second chain core 110) that currently consider potential swaps, the remaining chain cores (eg, chain core 112) are random number generating threads and Both chain threads can be free to continue. During or after the evaluation of a particular swap proposal, the chain cores (eg, first chain core 108 and second chain core 110) currently considering potential swaps (eg, each swap proposal distribution queue 124). And 126 may be empty) to receive additional swap proposals from the swap proposal core 106. After the swap is complete, the chain cores 108 and 110 may resume processing the associated chain thread 120. With the decentralization and point-to-point synchronization of the foregoing efforts, high chain core utilization can be achieved with relatively small 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) 중 하나 이상을 포함할 수 있다.2 is an illustration of an example process 200 for operation of a multi-core processor to maintain the use of a core during implementation of a distributed Markov chain Monte Carlo procedure, arranged in accordance with at least some embodiments of the present disclosure. In the example shown, process 200 and other processes described herein may be performed by one or more of hardware, software, and / or firmware, including processing steps, functional operations, events, and the like. Present various functional blocks or actions that can be described as actions or the like. In view of the present disclosure, those skilled in the art will recognize that many alternatives to the functional blocks shown in FIG. 2 may be implemented in various implementations. For example, although the process 200 shown in FIG. 2 includes blocks or actions in a particular order, the order in which these blocks or actions are presented does not necessarily limit the claimed subject matter in any particular order. Likewise, without departing from the scope of the claimed subject matter, intervening actions not shown in FIG. 2 and / or additional actions not shown in FIG. 2 may be used and / or some of the actions shown in FIG. 2 may be removed. Can be. Process 200 may include one or more of operations 202, 204, 206, 208, and / or 210.

도시된 바와 같이, 프로세스(200)는 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 중에 코어의 사용을 유지하기 위한 멀티 코어 프로세서의 동작에 대하여 구현될 수 있다. 프로세싱은 "스왑 제안을 생성"하는 동작(202)에서 시작할 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안이 스왑 제안 코어(106)(도 1 참조)를 통하여 생성될 수 있다. 예컨대, 스왑 제안 코어(106)(도 1 참조)와 연관된 스왑 제안 스레드(114)(도 1 참조)가 그러한 스왑 제안을 생성할 수 있다.As shown, process 200 may be implemented for operation of a multi-core processor to maintain the use of cores during the implementation of the distributed Markov chain Monte Carlo procedure. Processing may begin at operation 202 of “generating a swap proposal”, where a plurality of swap proposals associated with a distributed Markov chain Monte Carlo procedure may be generated through the swap proposal core 106 (see FIG. 1). . For example, a swap suggestion thread 114 (see FIG. 1) associated with the swap suggestion core 106 (see FIG. 1) may generate such a swap suggestion.

프로세싱은 동작(202)에서 "스왑 제안을 수신"하는 동작(204)으로 계속될 수 있고, 여기서 스왑 제안 중 하나 이상이 스왑 제안 코어(106)(도 1 참조)로부터, 체인 코어(108, 110, 112)(도 1 참조) 중 하나 이상을 통하여, 수신될 수 있다. 예를 들어, 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)로부터 분산되어 체인 코어(108, 110, 112) 중 하나 이상에 의해 수신될 수 있다.Processing may continue with operation 204 to “receive a swap proposal” in operation 202, where one or more of the swap proposals are from the swap proposal core 106 (see FIG. 1), the chain cores 108, 110. , 112) (see FIG. 1). For example, the swap proposal may be distributed from the swap proposal generation queue 122 (see FIG. 1) and received by one or more of the chain cores 108, 110, 112.

동작(206)은 동작(202-204)의 이후에, 도중에, 및/또는 이전에 일어날 수 있다. "랜덤 수 생성"하는 동작(206)에서, 랜덤 수는 체인 코어(108, 110, 112)(도 1 참조)중 하나 이상을 통하여 생성될 수 있다. 예컨대, 체인 코어(108)(도 1 참조)와 연관된 랜덤 수 생성 스레드(118)(도 1 참조)가 그러한 랜덤 수를 생성할 수 있다.Act 206 may occur after, along with, and / or before acts 202-204. In an operation 206 of “generating a random number”, a random number may be generated through one or more of the chain cores 108, 110, 112 (see FIG. 1). For example, random number generation thread 118 (see FIG. 1) associated with chain core 108 (see FIG. 1) may generate such a random number.

프로세싱은 동작(206)에서, "체인을 처리"하는 동작(208)으로 계속될 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차의 체인부의 현재 반복이 체인 코어(108, 110, 112)(도 1 참조) 중 하나 이상을 통하여 처리될 수 있다. 그러한 체인부는, 동작(206)에서 생성된 랜덤 수에 적어도 부분적으로 기초하여 처리될 수 있다. 예를 들어, 체인 코어(108)(도 1 참조)와 연관된 체인 스레드(120)(도 1 참조)가 그러한 체인부를 처리할 수 있다.Processing may continue at operation 206 with operation 208, "processing the chain," where the current iteration of the chain portion of the distributed Markov chain Monte Carlo procedure is performed by chain cores 108, 110, 112 (FIG. 1). May be processed through one or more of the above). Such a chain portion may be processed based at least in part on the random number generated in operation 206. For example, chain thread 120 (see FIG. 1) associated with chain core 108 (see FIG. 1) may handle such chain portions.

프로세싱은 동작(208)에서 "대기"하는 동작(210)으로 계속될 수 있고, 여기서 체인 스레드(120)(도 1 참조)는 제2 체인 코어(예컨대, 도 1의 체인 코어(110))와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기할 수 있다. 그러한 대기는 스왑 제안 중 하나 이상에 적어도 부분적으로 기초할 수 있다. 예를 들어, 주어진 스왑 제안은 분산형 마르코프 체인 몬테 카를로 절차의 특정 반복에 관련된 정보 및 상태 정보의 스왑을 위해 제안되는 체인부(예컨대, 체인 코어(108)와 연관된 체인부 및 체인 코어(110)와 연관된 체인부)(도 1 참조)의 특정 페어(pair)와 관련된 정보를 포함할 수 있다.Processing may continue with operation 210 "waiting" at operation 208, where the chain thread 120 (see FIG. 1) is coupled with a second chain core (eg, chain core 110 of FIG. 1). The current iteration of the second chain portion of the associated distributed Markov chain Monte Carlo procedure may wait for a corresponding iteration to arrive. Such a wait may be based at least in part on one or more of the swap proposals. For example, a given swap proposal may be a chain part (e.g., chain part and chain core 110 associated with chain core 108) proposed for the swap of information and status information related to a particular iteration of a distributed Markov chain Monte Carlo procedure. Information associated with a specific pair of chains (see FIG. 1).

동작에서, 프로세스(200)는 동작(210)에서 체인 코어(108)의 대기 중에 중단 없이 체인 코어(108)를 통하여 랜덤 수를 생성하도록 진행할 수 있다. 마찬가지로, 프로세스(200)는 동작(210)에서 체인 코어(108)의 대기 중에 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 추가적으로, 프로세스(200)는 동작(204)에서 스왑 제안 분산 스레드(116)의 분산 중에 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 또한, 프로세스(200)는 분산형 마르코프 체인 몬테 카를로 절차의 통계적인 성능을 보존할 수 있다. 예컨대, 프로세스(200)를 활용하지 않은 결과에 비해, 프로세스(200)의 사용으로 인해, 분산형 마르코프 체인 몬테 카를로 절차의 결과에 대하여 통계적 조정이 이루어질 필요가 없을 수 있다.In operation, process 200 may proceed to generate random numbers through chain core 108 without interruption in standby of chain core 108 in operation 210. Likewise, process 200 may proceed to generate a swap proposal through swap proposal core 106 without interruption in standby of chain core 108 in operation 210. Additionally, process 200 may proceed to generate a swap proposal through swap proposal core 106 without interruption during distribution of swap proposal distribution thread 116 in operation 204. Process 200 may also preserve the statistical performance of the distributed Markov chain Monte Carlo procedure. For example, compared to the result of not utilizing the process 200, due to the use of the process 200, there may be no need for statistical adjustments to the results of the distributed Markov chain Monte Carlo procedure.

도 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) 중 하나 이상을 포함할 수 있다.3 is an illustration of an example process 300 for operation of a multi-core processor to maintain the use of cores during the implementation of a distributed Markov chain Monte Carlo procedure, arranged in accordance with at least some embodiments of the present disclosure. In the illustrated example, process 300 and other processes described herein are described as processing steps, function operations, events and / or actions, and the like, which may be performed by one or more of hardware, software, and / or firmware. It presents various functional blocks or actions that can be made. One of ordinary skill in the art in view of the present disclosure will appreciate that many alternatives to the functional blocks shown in FIG. 3 may be implemented in various implementations. For example, although the process 300 shown in FIG. 3 includes blocks or actions in a particular order, the order in which these blocks or actions are presented does not necessarily limit the claimed subject matter to any particular order. Likewise, without departing from the scope of the claimed subject matter, intermediate operations not shown in FIG. 3 and / or additional operations not shown in FIG. 3 may be used and / or some of the operations shown in FIG. 3 may be eliminated. . Process 300 may be one or more of operations 302, 304, 306, 308, 310, 312, 314, 316, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, and / or 342. It may include.

도시된 바와 같이, 프로세스(300)는 분산형 마르코프 체인 몬테 카를로 절차를 구현하는 동안 코어의 사용을 유지하기 위한 멀티 코어 프로세서의 동작에 대하여 구현될 수 있다. 프로세싱은 "스왑 제안을 생성 및/또는 저장"하는 동작(302)에서 시작할 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안은 스왑 제안 코어(106)를 통하여 생성될 수 있다. 예컨대, 스왑 제안 코어(106)와 연관된 스왑 제안 생성 스레드(114)가 그러한 스왑 제안을 생성할 수 있다. 추가적으로, 그러한 스왑 제안은 저장될 수 있다. 예컨대, 그러한 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)에 저장될 수 있다.As shown, process 300 may be implemented for operation of a multi-core processor to maintain the use of cores while implementing distributed Markov chain Monte Carlo procedures. Processing may begin with an operation 302 of "generating and / or storing a swap proposal", where a plurality of swap proposals associated with a distributed Markov chain Monte Carlo procedure may be generated through the swap proposal core 106. For example, a swap proposal generation thread 114 associated with the swap proposal core 106 may generate such a swap proposal. In addition, such a swap proposal can be stored. For example, such a swap proposal may be stored in the swap proposal creation queue 122 (see FIG. 1).

프로세싱은 동작(302)에서 "스왑 제안을 분산"하는 동작(304)으로 계속될 수 있고, 여기서 스왑 제안 중 하나 이상은 스왑 제안 코어(106)를 통하여 체인 코어(108, 110 및/또는 112) 중 하나 이상으로 분산될 수 있다. 예컨대, 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)로부터 분산될 수 있다.Processing may continue with operation 304 to “distribute the swap proposal” at operation 302, where one or more of the swap proposals are passed through the chain core 108, 110 and / or 112 through the swap proposal core 106. It may be dispersed in one or more of. For example, the swap proposal may be distributed from the swap proposal generation queue 122 (see FIG. 1).

프로세싱은 동작(304)에서 "스왑 제안을 저장"하는 동작(306)으로 계속될 수 있고, 여기서 그러한 분산된 스왑 제안은 체인 코어(108)에 의하여 수신될 수 있고 이후의 사용을 위하여 잠재적으로 저장될 수 있다. 예컨대, 그러한 분산된 스왑 제안은 스왑 제안 분산 큐(124)(도 1 참조)를 통하여 저장될 수 있다. 일부 예시에서, 유사한 동작(308 및 310)이 각각 체인 코어(110 및 112)를 통하여 일어날 수 있다.Processing may continue to operation 306 to “save swap proposal” in operation 304, where such distributed swap proposal may be received by chain core 108 and potentially stored for later use. Can be. For example, such a distributed swap proposal may be stored via the swap proposal distribution queue 124 (see FIG. 1). In some examples, similar operations 308 and 310 may occur through chain cores 110 and 112, respectively.

동작(312 내지 316)은 동작(302 내지 306)의 이후에, 도중에, 및/또는 이전에 일어날 수 있다. "랜덤 수를 생성 및/또는 저장"하는 동작(312)에서, 랜덤 수가 체인 코어(108)를 통하여 생성될 수 있고, 이후의 사용을 위해 랜덤 비트 큐(128)(도 1 참조)를 통하여 저장될 수 있다. 예를 들어, 체인 코어(108)와 연관된 랜덤 수 생성 스레드(118)가 그러한 랜덤 수를 생성 및/또는 저장할 수 있다. 일부 예시에서, 유사한 동작(314 및 316)이 각각 랜덤 수 생성 스레드(318, 319)를 통하여 일어날 수 있다.Operations 312-316 can occur after, alongside, and / or before operations 302-306. In an operation 312 of "generating and / or storing a random number", a random number may be generated via the chain core 108 and stored via the random bit queue 128 (see FIG. 1) for later use. Can be. For example, random number generation thread 118 associated with chain core 108 may generate and / or store such random numbers. In some examples, similar operations 314 and 316 may occur via random number generation threads 318 and 319, respectively.

프로세싱은 동작(306)에서 "체인을 처리"하는 동작(322)으로 계속될 수 있고, 여기서 분산형 마르코프 체인 몬테 카를로 절차의 체인부의 현재 반복이 체인 코어(108)를 통하여 진행될 수 있다. 그러한 체인부는 랜덤 비트 큐(128)(도 1 참조)에 저장된 랜덤 수에 적어도 부분적으로 기초하여 처리될 수 있다. 예를 들어, 체인 코어(108)와 연관된 체인 스레드(120)가 그러한 체인부를 처리할 수 있다. 일부 예시에서, 유사한 동작(324 및 326)이 각각 체인 스레드(320 및 321)를 통하여 일어날 수 있다.Processing may continue with operation 322 to “process the chain” in operation 306, where a current iteration of the chain portion of the distributed Markov chain Monte Carlo procedure may proceed through the chain core 108. Such a chain portion may be processed based at least in part on the random number stored in the random bit queue 128 (see FIG. 1). For example, chain thread 120 associated with chain core 108 may handle such chain portions. In some examples, similar operations 324 and 326 can occur via chain threads 320 and 321, respectively.

프로세싱은 동작(322)에서 "대기"하는 동작(328)으로 계속할 수 있고, 여기서 체인 스레드(120)는 제2 체인 코어(예컨대 체인 코어(110))와 연관된 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 기다릴 수 있다. 그러한 대기는 스왑 제안 중 하나 이상에 적어도 부분적으로 기초할 수 있다. 예를 들어, 주어진 스왑 제안은 분산형 마르코프 체인 몬테 카를로 절차의 특정 반복에 관련된 정보 및 상태 정보의 스왑을 위해 제안되는 체인부(예컨대, 체인 코어(108)와 연관된 체인부 및 체인 코어(110)와 연관된 체인부)의 특정 페어에 관련된 정보를 포함할 수 있다.Processing may continue with operation 328, "waiting" at operation 322, where the chain thread 120 is subject to the distributed Markov chain Monte Carlo procedure associated with the second chain core (e.g., the chain core 110). It is possible to wait for the current iteration of the two chain parts to reach the corresponding iteration. Such a wait may be based at least in part on one or more of the swap proposals. For example, a given swap proposal may be a chain part (e.g., chain part and chain core 110 associated with chain core 108) proposed for the swap of information and status information related to a particular iteration of a distributed Markov chain Monte Carlo procedure. It may include information related to a particular pair of chain portion associated with).

프로세싱은 동작(328)에서 "정보를 교환"하는 동작(330)으로 계속될 수 있고, 여기서 체인 스레드(120)는 스왑이 일어나야 하는지를 결정하기에 충분한 다른 체인 스레드(예컨대, 체인 스레드(320))와 정보를 교환할 수 있다.Processing may continue with operation 330 to “exchange information” at operation 328, where the chain thread 120 is sufficient for another chain thread (eg, chain thread 320) to determine if a swap should occur. Exchange information with

동작(332 내지 336)은 동작(328 내지 330)의 이후에, 도중에 및/또는 이전에 일어날 수 있다. "스왑 제안을 요청"하는 동작(332)에서, 체인 스레드(120)는 하나 이상의 추가적인 스왑 제안을 요청할 수 있다. 예컨대, 체인 스레드(120)는 잠재적인 스왑에 대해 제안된 다른 체인 스레드(예컨대, 체인 스레드(320))를 대기하는 동안 하나 이상의 추가적인 스왑 제안을 요청할 수 있다. 일부 예시에서, 유사한 동작(334)이 체인 스레드(320)를 통하여 일어날 수 있다. 프로세싱은 동작(332 또는 334)에서 "스왑 제안을 분산"하는 동작(336)으로 계속될 수 있고, 여기서 하나 이상의 추가적인 스왑 제안은 요청에 따라 스왑 제안 코어(106)를 통하여 체인 코어(108, 110, 및/또는 112) 중 하나 이상으로 분산될 수 있다. 예컨대, 스왑 제안은 스왑 제안 생성 큐(122)(도 1 참조)로부터 분산될 수 있고, 체인 코어(108)에 의하여 수신될 수 있으며, 이후의 사용을 위하여 스왑 제안 분산 큐(124)(도 1 참조)에 잠재적으로 저장될 수 있다.Operations 332-336 may occur after, along and / or before operations 328-330. In operation 332, "request a swap proposal", the chain thread 120 may request one or more additional swap proposals. For example, chain thread 120 may request one or more additional swap proposals while waiting for another chain thread (eg, chain thread 320) proposed for potential swap. In some examples, similar operations 334 may occur via chain thread 320. Processing may continue with operation 336 to “distribute swap proposals” in operations 332 or 334, where one or more additional swap proposals are requested via chained cores 108, 110 via swap proposal core 106. , And / or 112). For example, the swap proposal may be distributed from the swap proposal creation queue 122 (see FIG. 1), received by the chain core 108, and swap proposal distribution queue 124 (FIG. 1) for later use. Can potentially be stored.

프로세싱은 동작(330)에서 "상태를 스왑할지 결정"하는 동작(338)으로 계속될 수 있고, 여기서 상태를 스왑할지 스왑하지 않을지의 결정이 일어날 수 있다. 예를 들어, 제1 체인 코어(108) 및/또는 제2 체인 코어(110)는 스왑 제안 분산 큐(124)(도 1 참조)에 저장된 스왑 제안 중 하나 이상에 적어도 부분적으로 기초한 제안된 스왑의 대상일 수 있다. 제안된 스왑의 대상이 되는 체인 코어(예컨대, 제1 체인 코어(108) 및/또는 제2 체인 코어(110)) 중 하나는 동작(330)의 교환 정보에 적어도 부분적으로 기초하여 스왑할지를 결정할 수 있다.Processing may continue to operation 338, in operation 330, "determining whether to swap states", where a determination may be made whether or not to swap states. For example, the first chain core 108 and / or the second chain core 110 may be configured to include a proposed swap based at least in part on one or more of the swap proposals stored in the swap proposal distribution queue 124 (see FIG. 1). It may be a target. One of the chain cores (eg, the first chain core 108 and / or the second chain core 110) subject to the proposed swap may determine whether to swap based at least in part on the exchange information of operation 330. have.

프로세싱은 동작(338)에서 "체인을 처리"하는 동작(340)으로 계속될 수 있고, 여기서 제1 체인부의 후속의 반복이 체인 코어(108)를 통하여 처리될 수 있다. 예컨대, 상태가 스왑된 경우에, 제1 체인부의 후속의 반복은 랜덤 비트 큐(128)(도 1 참조)에 저장된 랜덤 수 및 제2 체인으로부터 스왑된 상태에 적어도 부분적으로 기초하여 처리될 수 있다. 예컨대, 체인 코어(108)와 연관된 체인 스레드(120)가 제2 체인 코어(110)와 연관된 제2 체인 스레드(320)로부터 스왑된 상태에 적어도 부분적으로 기초하여 그러한 체인부를 처리할 수 있다. 일부 예시에서, 유사한 동작(342)이 체인 스레드(320)를 통하여 일어날 수 있다.Processing may continue with operation 340 to “process the chain” in operation 338, where subsequent iterations of the first chain portion may be processed through the chain core 108. For example, where states are swapped, subsequent iterations of the first chain portion may be processed based at least in part on the random number stored in the random bit queue 128 (see FIG. 1) and the states swapped from the second chain. . For example, the chain thread 120 associated with the chain core 108 may process such chain portion based at least in part on a state swapped from the second chain thread 320 associated with the second chain core 110. In some examples, similar operations 342 may occur via chain thread 320.

동작에서, 프로세스(300)는 동작(328)에서 체인 코어(108)의 대기 중에 중단 없이 체인 코어(108)를 통하여 랜덤 수를 생성하도록 진행할 수 있다. 마찬가지로, 프로세스(300)는 동작(328)에서 체인 코어(108)의 대기 중에 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 추가적으로, 프로세스(300)는 동작(304 및 336)에서 스왑 제안 분산 스레드(116)의 분산 동안 중단 없이 스왑 제안 코어(106)를 통하여 스왑 제안을 생성하도록 진행할 수 있다. 또한, 프로세스(300)는 분산형 마르코프 체인 몬테 카를로 절차의 통계적인 성능을 보존할 수 있다. 예컨대, 프로세스(300)를 활용하지 않는 결과에 비해, 프로세스(300)의 사용으로 인하여 분산형 마르코프 체인 몬테 카를로 절차의 결과에 대하여 통계적인 조정이 이루어질 필요가 없을 수 있다.In operation, process 300 may proceed to generate a random number through chain core 108 without interruption in standby of chain core 108 in operation 328. Similarly, process 300 may proceed to generate a swap proposal through swap proposal core 106 without interruption in standby of chain core 108 at operation 328. Additionally, process 300 may proceed to generate swap proposals through swap proposal core 106 without interruption during distribution of swap proposal distribution thread 116 in operations 304 and 336. In addition, process 300 can preserve the statistical performance of the distributed Markov chain Monte Carlo procedure. For example, compared to the result of not utilizing the process 300, the use of the process 300 may not require statistical adjustments to the results of the distributed Markov chain Monte Carlo procedure.

도 4는 본 개시의 적어도 일부 실시예에 따라 배열된 예시적인 컴퓨터 프로그램 제품(400)을 도시한다. 컴퓨터 프로그램 제품(400)은 신호 베어링 매체(402)를 포함할 수 있다. 신호 베어링 매체(402)는 하나 이상의 프로세서에 의하여 실행되면, 도 1, 도 2 및/또는 도 3에 대하여 전술한 기능을 제공하도록 컴퓨팅 장치를 동작 가능하게 할 수 있는, 멀티 코어 프로세스의 다수의 충돌 도메인 네트워크(multiple collision domain network) 사이에서의 통신을 용이하게 하도록 하나 이상의 머신 판독가능 명령(machine-readable instruction)(404)을 포함할 수 있다. 따라서, 예를 들어, 도 1의 시스템을 참조하면, 멀티 코어 프로세서(100)는 매체(402)에 의하여 운반되는 명령(404)에 응답하여 도 2 및/또는 도 3에서 도시된 동작 중 하나 이상을 수행할 수 있다.4 illustrates an example computer program product 400 arranged in accordance with at least some embodiments of the present disclosure. Computer program product 400 may include a signal bearing medium 402. The signal bearing medium 402, if executed by one or more processors, can cause multiple crashes of a multi-core process that may enable the computing device to provide the functionality described above with respect to FIGS. 1, 2, and / or 3. One or more machine-readable instructions 404 may be included to facilitate communication between multiple collision domain networks. Thus, for example, referring to the system of FIG. 1, the multi-core processor 100 may perform one or more of the operations shown in FIGS. 2 and / or 3 in response to the instructions 404 carried by the medium 402. Can be performed.

일부 구현예에서, 신호 베어링 매체(402)는 하드 디스크 드라이브, 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD), 디지털 테이프, 메모리 등과 같은 컴퓨터 판독가능 매체(406)를 포함할 수 있으나, 이에 제한되지 않는다. 일부 구현예에서, 신호 베어링 매체(402)는 메모리, 판독/기록(R/W) CD, R/W DVD 등과 같은 기록가능 매체(408)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(402)는 디지털 및/또는 아날로그 통신 매체(예컨대, 섬유 광 케이블, 도파관(waveguide), 유선 통신 링크, 무선 통신 링크 등)와 같은 통신 매체(410)를 포함할 수 있으나, 이에 제한되지는 않는다.In some implementations, signal bearing media 402 can include, but is not limited to, computer readable media 406, such as hard disk drives, compact disks (CDs), digital video disks (DVDs), digital tapes, memories, and the like. It doesn't work. In some implementations, the signal bearing medium 402 can include, but is not limited to, a recordable medium 408 such as a memory, read / write (R / W) CD, R / W DVD, and the like. In some implementations, the signal bearing medium 402 can include a communication medium 410 such as digital and / or analog communication media (eg, fiber optic cables, waveguides, wired communication links, wireless communication links, etc.). May be, but is not limited thereto.

도 5는 본 개시의 적어도 일부 실시예에 따라 배열된 예시적인 컴퓨팅 장치(500)를 도시하는 블록도이다. 일 예시적인 기초적인 구성(501)에서, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510) 및 시스템 메모리(520)를 포함할 수 있다. 메모리 버스(530)는 프로세서(510) 및 시스템 메모리(520) 사이에서 통신하기 위해 사용될 수 있다.5 is a block diagram illustrating an example computing device 500 arranged in accordance with at least some embodiments of the present disclosure. In one exemplary basic configuration 501, computing device 500 may include one or more processors 510 and system memory 520. Memory bus 530 may be used to communicate between processor 510 and system memory 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)의 내적인 일부일 수 있다.Depending on the configuration desired, the processor 510 may be of any type including, but not limited to, a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. Do not. The processor 510 may include one or more levels of a cache, such as a level 1 cache 511, a level 2 cache 512, a processor core 513, and a register 514. The processor core 513 may include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. Memory controller 515 may also be used with processor 510, or in some implementations, memory controller 515 may be an internal part of processor 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) 내의 그 구성요소들에 의해 도시된다.Depending on the configuration desired, the system memory 520 may be of any type including volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.), or any combination thereof, Do not. System memory 520 may include an operating system 521, one or more applications 522, and program data 524. The application 522 performs the functions and / or operations as described herein, including the functional blocks and / or operations described with respect to the process 200 of FIG. 2 and / or the process 300 of FIG. 3. And cores usage maintenance algorithm 523, which may be arranged to. Program data 524 may include swap proposal data 525 for use with the core usage management algorithm 523. In some demonstrative embodiments, application 522 may be arranged to operate on program data 524 on operating system 521 such that an implementation of core usage management may be provided as described herein. This described basic configuration is illustrated by its components in dashed line 501 in FIG.

컴퓨팅 장치(500)는 기초적인 구성(501) 및 임의의 요구되는 장치 및 인터페이스(interface) 사이에서 통신을 용이하게 하도록 추가적인 특징 또는 기능, 및 추가적인 인터페이스를 가질 수 있다. 예를 들어, 버스/인터페이스 컨트롤러(540)는 저장 인터페이스 버스(541)를 통하여 기초적인 구성(501) 및 하나 이상의 데이터 저장 장치(550) 사이에서의 통신을 용이하게 하도록 사용될 수 있다. 데이터 저장 장치(550)는 분리 가능한 저장 장치(551), 분리 불가능한 저장 장치(552), 또는 그 조합일 수 있다. 분리 가능한 저장 장치 및 분리 불가능한 저장 장치의 예를 몇 가지 들자면, 플렉서블 디스크 드라이브(flexible disk drive) 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다목적 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(SSD), 및 테이프 드라이브 등을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈(program module), 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술에서 구현되는 휘발성 및 비휘발성의 분리 가능한 매체 및 분리 불가능한 매체를 포함할 수 있다.Computing device 500 may have additional features or functionality, and additional interfaces to facilitate communication between the basic configuration 501 and any desired devices and interfaces. For example, bus / interface controller 540 may be used to facilitate communication between basic configuration 501 and one or more data storage devices 550 via storage interface bus 541. The data storage device 550 may be a removable storage device 551, a non-removable storage device 552, or a combination thereof. Examples of removable storage devices and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard disk drives (HDD), compact disk (CD) drives, or digital versatile disks (DVD) An optical disk drive such as a drive, a solid state drive (SSD), and a tape drive. Exemplary computer storage media includes volatile and nonvolatile removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data, Media.

시스템 메모리(520), 분리 가능한 저장 장치(551) 및 분리 불가능한 저장 장치(552)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 요구되는 정보를 저장하도록 사용될 수 있고, 컴퓨팅 장치(500)에 의해 접근될 수 있는 임의의 기타 매체를 포함하나, 이에 제한되지는 않는다. 임의의 그러한 컴퓨터 저장 매체는 장치(500)의 일부일 수 있다.System memory 520, removable storage 551, and non-removable storage 552 are all examples of computer storage media. Computer storage media may include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROMs, digital versatile disks (DVDs) or other optical storage devices, magnetic cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, or Any other medium that can be used to store the required information and can be accessed by the computing device 500 includes, but is not limited to. Any such computer storage media may be part of device 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) 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있으나, 이에 제한되지 않는다. 여기에서 사용된 컴퓨터 판독 가능 매체라는 용어는 저장 매체 및 통신 매체 둘 다를 포함할 수 있다.Computing device 500 also provides an interface bus (e.g., an interface bus) to facilitate communication from various interface devices (e.g., output interfaces, peripheral interfaces, and communication interfaces) to underlying configuration 501 via bus / interface controller 540. 542). Exemplary output interface 560 may include a graphics processing unit 561 and an audio processing unit 562 that may be coupled to one or more A / V ports 563 to communicate with various external devices, Lt; / RTI &gt; The exemplary peripheral interface 570 may include a serial interface controller 571 or a parallel interface controller 572 which may be coupled to an input device (e.g., a keyboard, a mouse, a pen, A voice input device, a touch input device, etc.) or other peripheral device (e.g., a printer, a scanner, etc.). Exemplary communication interface 580 includes network controller 581, which may be arranged to facilitate communication with one or more other computing devices 590 via network communication via one or more communication ports 582. . A communication connection is one example of a communication medium. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media can do. A "modulated data signal" may be a signal having one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared (IR) , But is not limited thereto. The term computer readable media as used herein may include both storage media and communication media.

컴퓨팅 장치(500)는 휴대 전화기, 개인 휴대용 단말기(personal data assistant; PDA), 개인 미디어 재생 장치, 무선 웹워치 장치(wireless web-watch device), 개인 헤드셋 장치, 특정 용도 장치, 또는 상기 기능 중 임의의 것을 포함하는 융합 장치와 같은 소형 폼팩터 휴대용(이동) 전자 장치의 일부로 구현될 수 있다. 컴퓨팅 장치(500)는 또한 랩탑 컴퓨터나 랩탑이 아닌 컴퓨터 구성 둘 다를 포함하는 개인용 컴퓨터로 구현될 수 있다. 추가적으로, 컴퓨팅 장치(500)는 무선 기지국(base station)이나 기타 무선 시스템 또는 장치의 일부로 구현될 수 있다.Computing device 500 may be a mobile phone, personal data assistant (PDA), personal media playback device, wireless web-watch device, personal headset device, special purpose device, or any of the above functions. It can be implemented as part of a small form factor portable (mobile) electronic device, such as a fusion device including that of. Computing device 500 may also be implemented as a personal computer that includes both a laptop computer and a non-laptop computer configuration. In addition, computing device 500 may be implemented as part of a wireless base station or other wireless system or device.

전술한 상세한 설명의 일부분은 컴퓨터 메모리와 같은 컴퓨팅 시스템 메모리 내에 저장된 데이터 비트 또는 이진 디지털 신호 상에서의 동작의 알고리즘 또는 기호적 표현의 관점에서 제시된다. 이러한 알고리즘적인 설명 또는 표현은 데이터 프로세싱 분야의 당업자가 그들 연구의 실체를 다른 당업자에게 전달하기 위하여 사용하는 기법의 예시이다. 여기에서, 그리고 일반적으로, 알고리즘은 요구되는 결과로 이끄는 일관된 일련의 동작이나 유사한 프로세싱이 되도록 고려된다. 본 문맥에서, 동작 또는 프로세싱은 물리량의 물리적 조작을 수반한다. 보통, 반드시 필요하지는 않지만, 그러한 양은 저장, 전송, 조합, 비교나 아니면 조작할 수 있는 전기 또는 자기 신호의 형태를 취할 수 있다. 주로 일반 관습의 이유로, 비트, 데이터, 값, 요소, 심볼, 문자, 용어, 숫자 또는 번호 등으로 그러한 신호를 지칭하는 것이 때때로 편리함이 입증되었다. 그러나, 이들 및 유사한 용어 모두는 적절한 물리량과 연관될 것이고, 단지 편리한 라벨(label)임이 이해되어야 한다. 달리 구체적으로 언급하지 않는다면, 이하의 논의로부터 분명하게 될 바와 같이, 본 명세서의 논의에 걸쳐 "프로세싱", "컴퓨팅", "계산", "결정" 등과 같은 용어를 사용하는 것은, 컴퓨팅 장치의 메모리, 레지스터, 또는 기타 정보 저장 장치, 전송 장치, 또는 디스플레이 장치 내의 물리적 전자적 또는 자기적 양으로 표현된 데이터를 조작하거나 변환하는 컴퓨팅 장치의 동작이나 프로세스와 관련 있음이 인정된다.Portions of the foregoing detailed description are presented in terms of algorithms or symbolic representations of operations on data bits or binary digital signals stored in a computing system memory, such as a computer memory. These algorithmic descriptions or representations are examples of techniques that those skilled in the data processing arts may use to convey the substance of their work to others skilled in the art. Here and in general, an algorithm is considered to be a consistent sequence of operations or similar processing leading to a desired result. In this context, operation or processing involves physical manipulation of physical quantities. Usually, but not necessarily, such amounts can take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared or otherwise manipulated. It has proven convenient sometimes to refer to such a signal as bits, data, values, elements, symbols, characters, terms, numbers or numbers, etc., It is to be understood, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels. Unless specifically stated otherwise, as will be apparent from the following discussion, the use of terms such as “processing”, “computing”, “calculation”, “determination”, and the like throughout the discussion herein refers to memory of a computing device. , Registers, or other information storage devices, transmission devices, or display devices, are recognized as being related to the operation or process of a computing device that manipulates or transforms data represented by physical, electronic or magnetic quantities.

전술한 상세한 설명은 블록도, 흐름도, 및/또는 예를 통해 장치의 다양한 실시예 및/또는 프로세스를 설명하였다. 그러한 블록도, 흐름도, 및/또는 예는 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 그러한 블록도, 흐름도, 또는 예 내의 각각의 기능 및/또는 동작은 하드웨어, 소프트웨어, 펌웨어, 또는 가상의 그들의 임의의 조합의 넓은 범위에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 이해될 것이다. 일 실시예에서, 본 개시에 기재된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 그러나, 당업자라면, 본 개시의 실시예의 일부 양상은, 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 실질적으로 이들의 조합으로써, 전체적으로 또는 부분적으로 균등하게 집적회로에 구현될 수 있다는 알 수 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자에게 자명할 것이다. 또한, 당업자라면, 본 개시의 대상의 매커니즘(mechanism)들이 다양한 형태의 프로그램 제품으로 분포될 수 있음을 이해할 것이며, 본 개시의 대상의 예시는, 분배를 실제로 수행하는데 사용되는 신호 포함 매체(signal bearing medium)의 특정 유형과 무관하게 적용됨을 이해할 것이다. 신호 포함 매체의 예는, 플로피 디스크, 하드 디스크 드라이브, CD, DVD, 디지털 테이프, 컴퓨터 메모리 등과 같은 판독가능 유형의 매체, 디지털 및/또는 아날로그 통신 매체(예를 들어, 섬유 광학 케이블, 웨이브가이드, 유선 통신 링크, 무선 통신 링크 등)와 같은 전송 유형 매체를 포함할 수 있으나, 이에 제한되지는 않는다.The foregoing detailed description has described various embodiments and / or processes of the apparatus via block diagrams, flow charts, and / or examples. As long as such block diagrams, flowcharts, and / or examples include one or more functions and / or actions, those skilled in the art will recognize that each function and / or operation in such block diagrams, flowcharts, or examples may be implemented in hardware, software, firmware, It will be appreciated that they may be implemented individually and / or collectively by a wide range of any combination thereof. In one embodiment, some portions of the subject matter described in this disclosure may be implemented in the form of an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Digital Signal Processor (DSP), or other integrated form. However, those skilled in the art will appreciate that some aspects of embodiments of the present disclosure may be implemented as a combination of one or more computer programs (e.g., one or more programs running on one or more computer systems) running on one or more computers, It will be appreciated that the invention may be implemented in an integrated circuit, in whole or in part, even with more than one program (e.g., one or more programs running on one or more microprocessors), firmware or substantially any combination thereof, And / or the design of the circuitry will be apparent to those skilled in the art in light of this disclosure. It will also be understood by those skilled in the art that the mechanisms of the subject matter of the present disclosure may be distributed in various types of program products, and examples of objects of the present disclosure include signal bearings medium &lt; / RTI &gt; Examples of signal bearing media include readable type media such as floppy disks, hard disk drives, CD, DVD, digital tape, computer memory, etc., digital and / or analog communication media Wired communication link, wireless communication link, etc.), but is not limited thereto.

여기서 기술된 대상은 때때로 상이한 다른 컴포넌트 내에 포함되거나 접속된 상이한 컴포넌트를 도시한다. 도시된 그러한 아키텍처는 단순히 예시적인 것이고, 사실상 동일한 기능을 달성하는 다른 많은 아키텍처가 구현될 수 있다는 것이 이해되어야 한다. 개념적으로, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배치는 원하는 기능이 달성되도록 유효하게 "연관"된다. 이에 따라, 특정 기능을 달성하기 위해 여기서 결합된 임의의 두 개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트와는 무관하게, 원하는 기능이 달성되도록 서로 "연관"된 것으로 볼 수 있다. 마찬가지로, 연관된 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 접속"되거나 또는 "동작적으로 연결"되는 것으로 간주될 수 있고, 그와 같이 연관될 수 있는 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 연결가능"한 것으로 볼 수 있다. 동작적으로 연결 가능하다는 것의 특정 예는 물리적으로 양립가능(mateable)하고 및/또는 물리적으로 상호작용하는 컴포넌트 및/또는 무선으로 상호작용이 가능하고 및/또는 무선으로 상호작용하는 컴포넌트 및/또는 논리적으로 상호작용하고 및/또는 논리적으로 상호작용이 가능한 컴포넌트를 포함하지만, 이에 한정되는 것은 아니다.The objects described herein sometimes represent different components included or connected to different different components. It should be understood that such an architecture shown is merely exemplary and that many other architectures that achieve substantially the same functionality can be implemented. Conceptually, any arrangement of components to achieve the same functionality is effectively "associated " to achieve the desired functionality. Thus, any two components coupled here to achieve a particular function can be seen as "associated" with each other so that the desired functionality is achieved, independent of the architecture or intermediate components. Likewise, the two associated components may also be considered "operatively connected" or "operatively linked" to one another to achieve the desired functionality, and any two components that may be associated therewith also Can be seen as "operatively connectable" to one another to achieve the desired functionality. Specific examples of operatively linkable include components that are physically compatible and / or physically interacting and / or wirelessly interacting and / or wirelessly interacting with components and / But are not limited to, components that interact and / or logically interact.

여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.As used herein with respect to the use of substantially any plural and / or singular terms, those skilled in the art can interpret plural as singular and / or plural singular, as appropriate for the context and / or application. The various singular / plural substitutions may be explicitly described herein for clarity.

당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(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"의 가능성을 포함하는 것으로 이해될 것이다.Those skilled in the art will recognize that the terms used in this disclosure in general and specifically used in the appended claims (e.g., the appended claims) generally refer to terms "open" Will be understood to imply the inclusion of a feature or function in a given language, such as, but not limited to, the word " having " It will also be appreciated by those of ordinary skill in the art that if a specific number of the recited items is intended, such intent is expressly set forth in the claims, and that such recitations, if any, are not intended. For example, to facilitate understanding, the following claims are intended to incorporate the claims, including the use of introduction phrases such as "at least one" and "one or more". It is to be understood, however, that the use of such phrases is not intended to limit the scope of the present invention to the use of an indefinite article "a" or "an" And should not be construed to limit the inclusion of a particular claim and should not be construed to imply that the same claim is not to be construed as an admission that it has been disclosed as an adverbial phrase such as "one or more" or "at least one" and " Quot; one "should be interpreted generally as meaning" at least one "or" at least one "). This also applies to the case of articles used to introduce claims. It will also be appreciated by those skilled in the art that, even if a specific number of the recited claims is explicitly recited, those skilled in the art will recognize that such recitation is generally based on at least the recounted number (e.g., "Quot; means &lt; / RTI &gt; at least two entries or more than one entry). Also, where rules similar to "at least one of A, B and C, etc." are used, it is generally intended that such interpretation is intended to be understood by those skilled in the art (e. C has at least one of A, B, C alone, A and B together, A and C together, B and C together, or A , B, and C together). If a rule similar to "at least one of A, B, or C" is used, then generally such interpretation is intended to assume that a person skilled in the art will understand the rule (e.g., A " and " B " together, A and C together, B and C together, or A, B, C together). It will also be understood by those skilled in the art that substantially any disjunctive word and / or phrase that represents more than one alternative term, whether in the detailed description, the claims or the drawings, , Or any combination of the terms &lt; RTI ID = 0.0 &gt; and / or &lt; / RTI &gt; For example, the phrase "A or B" will be understood to include the possibility of "A" or "B" or "A and B".

특정 예시적 기법이 다양한 방법 및 시스템을 이용하여 여기에서 기술되고 도시되었으나, 청구된 대상에서 벗어나지 않고, 다양한 기타의 수정이 이루어질 수 있고, 등가물이 대체될 수 있음이 당업자에 의해 이해되어야 한다. 추가적으로, 여기에 기술된 중심 개념으로부터 벗어남이 없이 특정 상황을 청구된 대상의 교시로 적응시키도록 많은 수정이 이루어질 수 있다. 따라서, 청구된 대상이 개시된 특정 예시로 제한되지 않으나, 그러한 청구된 대상은 또한 첨부된 청구범위 및 그 균등의 범위 내에 들어가는 모든 구현예를 포함할 수 있음이 의도된다.Although specific example techniques have been described and illustrated herein using various methods and systems, it should be understood by those skilled in the art that various other modifications can be made, and equivalents may be substituted, without departing from the claimed subject matter. In addition, many modifications may be made to adapt a particular situation to the teachings of the claimed subject matter without departing from the central concept described herein. Thus, although the claimed subject matter is not limited to the specific examples disclosed, it is intended that such claimed subject matter may also include all embodiments falling within the scope of the appended claims and their equivalents.

Claims (20)

분산형 마르코프 체인 몬테 카를로 절차(distributed-type Markov chain Monte Carlo procedure)를 구현하기 위한 방법으로서,
스왑 제안 코어(swap proposal core)를 통하여, 상기 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하는 단계;
제1 체인 코어(chain core)를 통하여, 상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하는 단계;
상기 제1 체인 코어를 통하여, 복수의 랜덤 수(random number)를 생성하는 단계;
상기 제1 체인 코어를 통하여, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복(current iteration)을 처리(processing)하는 단계; 및
상기 제1 체인 코어를 통하여, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하는 단계를 포함하며;
상기 제1 체인 코어를 통한 상기 랜덤 수의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안, 중단(interruption) 없이 진행하는, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
As a method for implementing a distributed-type Markov chain Monte Carlo procedure,
Generating, via a swap proposal core, a plurality of swap proposals associated with the distributed Markov chain Monte Carlo procedure;
Receiving one or more of the swap proposals from the swap proposal core via a first chain core;
Generating a plurality of random numbers through the first chain core;
Processing, via the first chain core, a current iteration of the first chain portion of the distributed Markov chain Monte Carlo procedure based at least in part on the plurality of random numbers; And
Waiting through the first chain core, the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with the second chain core based at least in part on one or more of the swap proposals to reach a corresponding iteration. Including;
The generation of the random number through the first chain core is interrupted while waiting for the second chain core through the first chain core to reach a corresponding iteration of the distributed Markov chain Monte Carlo procedure. A method for implementing a distributed Markov chain Monte Carlo procedure.
제1항에 있어서,
상기 스왑 제안 코어를 통한 상기 스왑 제안의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 진행하는, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
The generation of the swap proposal through the swap proposal core proceeds without interruption while waiting for the second chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure via the first chain core. , Method for implementing a decentralized Markov chain Monte Carlo procedure.
제1항에 있어서,
스왑 제안 생성 큐(swap proposal generation queue)를 통하여, 상기 스왑 제안 중 하나 이상을 저장하는 단계; 및
상기 스왑 제안 코어를 통하여, 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하는 단계
를 더 포함하는 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
Storing one or more of the swap proposals through a swap proposal generation queue; And
Distributing, through the swap proposal core, one or more of the swap proposals from the swap proposal generation queue to the first chain core.
Method for implementing a distributed Markov chain Monte Carlo procedure further comprising.
제1항에 있어서,
제1 스왑 제안 분산 큐를 통하여, 상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하는 단계를 더 포함하고, 상기 제1 스왑 제안 분산 큐는 상기 제1 체인 코어와 연관되고 제2 스왑 제안 분산 큐는 상기 제2 체인 코어와 연관되는, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
Storing, via a first swap proposal distribution queue, one or more of the swap proposals received via the first chain core, wherein the first swap proposal distribution queue is associated with the first chain core and is associated with the first chain core. 2 Swap proposal distributed queue is associated with the second chain core, the method of implementing a distributed Markov chain Monte Carlo procedure.
제1항에 있어서,
제1 랜덤 비트 큐(random bit queue)를 통하여, 상기 복수의 랜덤 수 중 하나 이상을 저장하는 단계를 더 포함하고, 상기 제1 랜덤 비트 큐는 상기 제1 체인 코어와 연관되고 제2 랜덤 비트 큐는 상기 제2 체인 코어와 연관되는, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
Storing one or more of the plurality of random numbers via a first random bit queue, wherein the first random bit queue is associated with the first chain core and is a second random bit queue. Is associated with the second chain core, a method for implementing a distributed Markov chain Monte Carlo procedure.
제1항에 있어서,
상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 대응하는 반복에 도달하기를 대기하는 단계 이후에, 상기 방법은,
상기 스왑 제안 코어를 통하여, 추가적인 스왑 제안을 상기 제1 체인 코어 및 상기 제2 체인 코어로 분산하는 단계;
상기 제1 체인 코어 및/또는 상기 제2 체인 코어를 통하여, 스왑 제안 분산 큐를 통하여 저장된 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 상기 제1 체인부와 연관된 상태(state)를 제2 체인부와 연관된 상태와 스왑할지 결정하는 단계; 및
상기 제1 체인 코어를 통하여, 랜덤 비트 큐를 통하여 저장된 상기 복수의 랜덤 수 및 상기 제2 체인부로부터 스왑된 상기 상태에 적어도 부분적으로 기초하여 상기 제1 체인부의 후속의 반복을 처리하는 단계를 더 포함하는 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
After waiting for the second chain core through the first chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure, the method further comprises:
Distributing, through the swap proposal core, additional swap proposals to the first chain core and the second chain core;
A second chain, through the first chain core and / or the second chain core, a state associated with the first chain portion based at least in part on one or more of the swap proposals stored through a swap proposal distribution queue. Determining whether to swap with a state associated with the wealth; And
Processing subsequent iterations of the first chain portion based at least in part on the plurality of random numbers stored via the first chain core and via the random bit queue and the state swapped from the second chain portion. A method for implementing a distributed Markov chain Monte Carlo procedure comprising.
제1항에 있어서,
상기 분산형 마르코프 체인 몬테 카를로 절차는 메트로폴리스 결합형 마르코프 체인 몬테 카를로 절차(Metropolis-coupled-type Markov chain Monte Carlo procedure)를 포함하는, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
And said distributed Markov chain Monte Carlo procedure comprises a Metropolis-coupled-type Markov chain Monte Carlo procedure.
제1항에 있어서,
특정 스왑 제안은 상기 제1 체인부, 상기 제2 체인부, 및 특정 반복과 관련된 정보를 포함하는, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
And a particular swap proposal includes information related to the first chain portion, the second chain portion, and a particular repetition.
제1항에 있어서,
상기 방법은 상기 분산형 마르코프 체인 몬테 카를로 절차의 통계적 성능을 보존하기 위한 것인, 분산형 마르코프 체인 몬테 카를로 절차를 구현하기 위한 방법.
The method of claim 1,
Wherein said method is for preserving the statistical performance of said distributed Markov chain Monte Carlo procedure.
복수의 프로세서 코어를 포함하는 멀티 코어 프로세서로서,
분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성된 스왑 제안 코어;
상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하도록 구성된 제1 체인 코어; 및
상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 제2 체인부의 현재 반복을 처리하도록 구성된 상기 제2 체인 코어를 포함하고,
상기 제1 체인 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단(interruption) 없이 랜덤 수의 생성을 계속하도록 더 구성된, 멀티 코어 프로세서.
A multi-core processor comprising a plurality of processor cores,
A swap proposal core configured to generate a plurality of swap proposals associated with the distributed Markov chain Monte Carlo procedure;
Receive one or more of the swap proposals from the swap proposal core, generate a plurality of random numbers, and perform a current iteration of the first chain portion of the distributed Markov chain Monte Carlo procedure based at least in part on the plurality of random numbers. A first chain configured to wait for a current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with a second chain core based at least in part on one or more of the swap proposals to reach a corresponding iteration. core; And
The second chain core configured to handle a current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure,
Wherein the first chain core is further configured to continue generating a random number without interruption while waiting for the second chain core to reach a corresponding iteration of the distributed Markov chain Monte Carlo procedure.
제10항에 있어서,
상기 스왑 제안 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 스왑 제안의 생성을 계속하도록 더 구성된, 멀티 코어 프로세서.
11. The method of claim 10,
The swap proposal core is further configured to continue generating the swap proposal without interruption while waiting for the second chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure.
제10항에 있어서,
상기 스왑 제안 중 하나 이상을 저장하도록 구성된 스왑 제안 생성 큐를 더 포함하며,
상기 스왑 제안 코어는 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하도록 더 구성된, 멀티 코어 프로세서.
11. The method of claim 10,
A swap proposal generation queue configured to store one or more of the swap proposals,
The swap proposal core is further configured to distribute one or more of the swap proposals from the swap proposal generation queue to the first chain core.
제10항에 있어서,
상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 제1 스왑 제안 분산 큐 - 상기 제1 스왑 제안 분산 큐는 상기 제1 체인 코어와 연관됨-; 및
상기 제2 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 제2 스왑 제안 분산 큐 - 상기 제2 스왑 제안 분산 큐는 상기 제2 체인 코어와 연관됨-
를 더 포함하는 멀티 코어 프로세서.
11. The method of claim 10,
A first swap proposal distribution queue, configured to store one or more of the swap proposals received via the first chain core, wherein the first swap proposal distribution queue is associated with the first chain core; And
A second swap proposal distribution queue configured to store one or more of the swap proposals received via the second chain core, wherein the second swap proposal distribution queue is associated with the second chain core
Multi-core processor further comprising.
제10항에 있어서,
상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 제1 랜덤 비트 큐 - 상기 제1 랜덤 비트 큐는 상기 제1 체인 코어와 연관됨-; 및
상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 제2 랜덤 비트 큐 - 상기 제2 랜덤 비트 큐는 상기 제2 체인 코어와 연관됨-
를 더 포함하는 멀티 코어 프로세서.
11. The method of claim 10,
A first random bit queue configured to store one or more of the plurality of random numbers, the first random bit queue associated with the first chain core; And
A second random bit queue configured to store one or more of the plurality of random numbers, the second random bit queue associated with the second chain core
Multi-core processor further comprising.
복수의 프로세서 코어를 포함하는 컴퓨팅 장치로서,
멀티 코어 프로세서;
메모리 버스; 및
상기 메모리 버스를 통하여 상기 멀티 코어 프로세서와 통신하도록 구성된 시스템 메모리를 포함하고,
상기 멀티 코어 프로세서는,
분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하도록 구성된 스왑 제안 코어,
제1 체인 코어로서, 상기 스왑 제안 코어로부터 상기 스왑 제안 중 하나 이상을 수신하고, 복수의 랜덤 수를 생성하고, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하며, 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를 대기하도록 구성된 제1 체인 코어, 및
상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 제2 체인부의 현재 반복을 처리하도록 구성된 상기 제2 체인 코어를 포함하며,
상기 제1 체인 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 랜덤 수의 생성을 계속하도록 더 구성되는, 컴퓨팅 장치.
A computing device comprising a plurality of processor cores,
Multi-core processor;
Memory bus; And
A system memory configured to communicate with the multi-core processor via the memory bus,
The multi-
A swap proposal core configured to generate a plurality of swap proposals associated with a distributed Markov chain Monte Carlo procedure,
A first chain core, receiving one or more of the swap proposals from the swap proposal core, generating a plurality of random numbers, and based on the distributed Markov chain Monte Carlo procedure based at least in part on the plurality of random numbers. Process the current iteration of the first chain portion and allow the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with the second chain core to reach a corresponding iteration based at least in part on one or more of the swap proposals. A first chain core configured to wait, and
The second chain core configured to handle the current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure,
And the first chain core is further configured to continue generating a random number without interruption while waiting for the second chain core to reach a corresponding iteration of the distributed Markov chain Monte Carlo procedure.
제15항에 있어서,
상기 스왑 제안 코어는 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 상기 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 스왑 제안의 생성을 계속하도록 더 구성된, 컴퓨팅 장치.
16. The method of claim 15,
And the swap proposal core is further configured to continue generating the swap proposal without interruption while waiting for the second chain core to reach the corresponding iteration of the distributed Markov chain Monte Carlo procedure.
제15항에 있어서,
상기 스왑 제안 코어는 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 스왑 제안 생성 큐를 더 포함하며,
상기 스왑 제안 코어는 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하도록 더 구성된, 컴퓨팅 장치.
16. The method of claim 15,
The swap proposal core further includes a swap proposal generation queue configured to store one or more of the swap proposals,
And the swap proposal core is further configured to distribute one or more of the swap proposals from the swap proposal generation queue to the first chain core.
제15항에 있어서,
상기 제1 체인 코어는 상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 제1 스왑 제안 분산 큐를 포함하고;
상기 제2 체인 코어는 상기 제2 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하도록 구성된 제2 스왑 제안 분산 큐를 포함하고;
상기 제1 체인 코어는 상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 제1 랜덤 비트 큐를 더 포함하며 - 상기 제1 랜덤 비트 큐는 상기 제1 체인 코어와 연관됨-; 그리고
상기 제2 체인 코어는 상기 복수의 랜덤 수 중 하나 이상을 저장하도록 구성된 제2 랜덤 비트 큐를 더 포함하는, 컴퓨팅 장치.
16. The method of claim 15,
The first chain core includes a first swap proposal distribution queue configured to store one or more of the swap proposals received via the first chain core;
The second chain core includes a second swap proposal distribution queue configured to store one or more of the swap proposals received via the second chain core;
The first chain core further comprises a first random bit queue configured to store one or more of the plurality of random numbers, the first random bit queue associated with the first chain core; And
And the second chain core further comprises a second random bit queue configured to store one or more of the plurality of random numbers.
저장된 머신 판독가능 명령(machine-readable instruction)을 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 명령은 하나 이상의 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금,
스왑 제안 코어를 통하여, 분산형 마르코프 체인 몬테 카를로 절차와 연관된 복수의 스왑 제안을 생성하는 것;
제1 체인 코어를 통하여, 복수의 랜덤 수를 생성하는 것;
상기 제1 체인 코어를 통하여, 상기 복수의 랜덤 수에 적어도 부분적으로 기초하여 상기 분산형 마르코프 체인 몬테 카를로 절차의 제1 체인부의 현재 반복을 처리하는 것; 및
상기 제1 체인 코어를 통하여 상기 스왑 제안 코어로부터 수신된 상기 스왑 제안 중 하나 이상에 적어도 부분적으로 기초하여 제2 체인 코어와 연관된 상기 분산형 마르코프 체인 몬테 카를로 절차의 제2 체인부의 현재 반복이 대응하는 반복에 도달하기를, 상기 제1 체인 코어를 통하여, 대기하는 것을 동작 가능하게 하며,
상기 제1 체인 코어를 통한 상기 랜덤 수의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 진행하며,
상기 스왑 제안 코어를 통한 상기 스왑 제안의 생성은, 상기 제1 체인 코어를 통하여 상기 제2 체인 코어가 상기 분산형 마르코프 체인 몬테 카를로 절차의 대응하는 반복에 도달하기를 대기하는 동안 중단 없이 진행하는, 컴퓨터 판독가능 저장 매체.
A computer readable storage medium comprising stored machine-readable instructions, wherein the instructions, when executed by one or more processors, cause the computing device to:
Generating, through the swap proposal core, a plurality of swap proposals associated with the distributed Markov chain Monte Carlo procedure;
Generating a plurality of random numbers through the first chain core;
Processing, through the first chain core, a current iteration of the first chain portion of the distributed Markov chain Monte Carlo procedure based at least in part on the plurality of random numbers; And
The current iteration of the second chain portion of the distributed Markov chain Monte Carlo procedure associated with the second chain core based at least in part on one or more of the swap proposals received from the swap proposal core through the first chain core corresponds to Enabling the waiting to be reached, through the first chain core, to reach an iteration,
The generation of the random number through the first chain core proceeds without interruption while waiting for the second chain core through the first chain core to reach a corresponding iteration of the distributed Markov chain Monte Carlo procedure. ,
The generation of the swap proposal through the swap proposal core proceeds without interruption while waiting for the second chain core through the first chain core to reach a corresponding iteration of the distributed Markov chain Monte Carlo procedure. Computer-readable storage media.
제19항에 있어서,
상기 명령은 상기 하나 이상의 프로세서에 의해 실행되는 경우 상기 컴퓨팅 장치로 하여금,
스왑 제안 생성 큐를 통하여, 상기 스왑 제안 중 하나 이상을 저장하는 것;
상기 스왑 제안 코어를 통하여, 상기 스왑 제안 중 하나 이상을 상기 스왑 제안 생성 큐로부터 상기 제1 체인 코어로 분산하는 것;
제1 스왑 제안 분산 큐를 통하여, 상기 제1 체인 코어를 통하여 수신된 상기 스왑 제안 중 하나 이상을 저장하는 것 - 상기 제1 스왑 제안 분산 큐는 상기 제1 체인 코어와 연관되고 제2 스왑 제안 분산 큐는 상기 제2 체인 코어와 연관됨 -;
랜덤 비트 큐를 통하여, 상기 복수의 랜덤 수 중 하나 이상을 저장하는 것 - 상기 랜덤 비트 큐는 상기 제1 체인 코어와 연관되며 제2 랜덤 비트 큐는 상기 제2 체인 코어와 연관됨- 을 더 동작 가능하게 하는, 컴퓨터 판독가능 저장 매체.
20. The method of claim 19,
The instructions, when executed by the one or more processors, cause the computing device to:
Storing, via a swap proposal creation queue, one or more of the swap proposals;
Distributing, via the swap proposal core, one or more of the swap proposals from the swap proposal generation queue to the first chain core;
Storing, via a first swap proposal distribution queue, one or more of the swap proposals received through the first chain core, wherein the first swap proposal distribution queue is associated with the first chain core and distributes a second swap proposal distribution. A cue is associated with the second chain core;
Storing, via a random bit queue, one or more of the plurality of random numbers, the random bit queue associated with the first chain core and a second random bit queue associated with the second chain core. Computer readable storage medium.
KR1020127025390A 2010-03-02 2011-01-31 Method, multicore processor, computing device and computer readable storage medium for implementing distributed-type markov chain monte carlo procedure KR101387973B1 (en)

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 KR20120123722A (en) 2012-11-09
KR101387973B1 true KR101387973B1 (en) 2014-04-22

Family

ID=44532163

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127025390A KR101387973B1 (en) 2010-03-02 2011-01-31 Method, multicore processor, computing device and computer readable storage medium for implementing distributed-type markov chain monte carlo procedure

Country Status (6)

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

Families Citing this family (4)

* 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 (en) 2018-03-15 2022-02-02 富士通株式会社 Optimization device and control method of optimization device
US11935149B2 (en) 2020-11-13 2024-03-19 Samsung Electronics Co., Ltd Electronic device and image rendering method thereof for adjusting frame rate
WO2022103225A1 (en) * 2020-11-13 2022-05-19 삼성전자 주식회사 Electronic device and image rendering method of electronic device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010399A1 (en) 2002-07-15 2004-01-15 Kadane Joseph B. Method and system for identifying regeneration points in a Markov chain Monte Carlo simulation
US20070076669A1 (en) 2005-07-07 2007-04-05 University Of Utah Multi-channel communication method and apparatus using plural Markov Chain Monte Carlo Simulations
US20080100617A1 (en) 2000-06-19 2008-05-01 Alexander Keller Simultaneous simulation of markov chains using quasi-monte carlo techniques
US20090003483A1 (en) 2004-07-07 2009-01-01 University Of Utah Research Foundation Detector and Method for Estimating Data Probability in a Multi-Channel Receiver

Family Cites Families (6)

* 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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080100617A1 (en) 2000-06-19 2008-05-01 Alexander Keller Simultaneous simulation of markov chains using quasi-monte carlo techniques
US20040010399A1 (en) 2002-07-15 2004-01-15 Kadane Joseph B. Method and system for identifying regeneration points in a Markov chain Monte Carlo simulation
US20090003483A1 (en) 2004-07-07 2009-01-01 University Of Utah Research Foundation Detector and Method for Estimating Data Probability in a Multi-Channel Receiver
US20070076669A1 (en) 2005-07-07 2007-04-05 University Of Utah Multi-channel communication method and apparatus using plural Markov Chain Monte Carlo Simulations

Also Published As

Publication number Publication date
US20110218944A1 (en) 2011-09-08
BR112012020040A2 (en) 2016-05-03
WO2011109131A2 (en) 2011-09-09
KR20120123722A (en) 2012-11-09
JP5670484B2 (en) 2015-02-18
WO2011109131A3 (en) 2012-07-12
JP2013521545A (en) 2013-06-10
US8386403B2 (en) 2013-02-26
DE112011100757T5 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
Häner et al. 5 petabyte simulation of a 45-qubit quantum circuit
CN110622134B (en) Special neural network training chip
Gao et al. Performance and power analysis of high-density multi-GPGPU architectures: A preliminary case study
CN107092573B (en) Method and apparatus for work stealing in heterogeneous computing systems
CN104750460B (en) Hyperthread microprocessor middle longitude journey priority provides service quality
US8688962B2 (en) Gather cache architecture
CN112835627B (en) Near nearest neighbor search for single instruction multithreading or single instruction multiple data type processors
Zhu et al. Performance evaluation and optimization of HBM-enabled GPU for data-intensive applications
EP2423821A2 (en) Processor, apparatus, and method for fetching instructions and configurations from a shared cache
CN103218309A (en) Multi-level instruction cache prefetching
KR101681440B1 (en) Malware attack prevention using block code permutation
KR101387973B1 (en) Method, multicore processor, computing device and computer readable storage medium for implementing distributed-type markov chain monte carlo procedure
Nukada et al. High performance 3-D FFT using multiple CUDA GPUs
Boyle The bluegene/q supercomputer
US20140173606A1 (en) Streaming processing of short read alignment algorithms
Zahran Heterogeneous computing: Hardware and software perspectives
CN109643283A (en) Manage enclave storage page
Wen-mei et al. Rebooting the data access hierarchy of computing systems
US20140025930A1 (en) Multi-core processor sharing li cache and method of operating same
Abdelrahman Accelerating K-means clustering on a tightly-coupled processor-FPGA heterogeneous system
Li et al. Gpu-based minwise hashing: Gpu-based minwise hashing
TW202018516A (en) Method, apparatus, and system for reducing pipeline stalls due to address translation misses
Allcock et al. Ram as a network managed resource
Li et al. Efficient AES implementation on Sunway TaihuLight supercomputer: A systematic approach
US7502913B2 (en) Switch prefetch in a multicore computer chip

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