'Concurrent computing'에 해당되는 글 1

  1. 2011.02.08 [용어] Parallel programming / Concurrent programming
IT/Tech Notes | Posted by 철규님(최규철) 2011. 2. 8. 02:10

[용어] Parallel programming / Concurrent programming

Wikipedia에서 'parallel computing'을 검색하면 'parallel computing'의 검색 결과로 redirect된다. 아직 기초 지식이 없어서 두 용어의 의미가 동일한 것인지는 모르겠지만, 구할 수 있는 정보가 이것뿐이니, 일단은 확인하고 넘어가자.


Parallel computing
<출처 : Wikiepedia / http://en.wikipedia.org/wiki/Parallel_programming >

아래는 Wikiepedia 검색 결과의 abstract 부분을 번역한 내용이다.


Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel").
병렬 컴퓨팅은 대규모의 프로그램은 대게 작은 단위로 구분되고, 이것들이 동시에("병렬적으로") 수행될 수 있다는 원리에 기반하여, 대규모의 연산이 동시에 실행되도록 하는 형태를 가진 컴퓨팅 방식이다.

There are several different forms of parallel computing: bit-level, instruction level, data, and task parallelism.
병렬 컴퓨팅에는 비트레벨, 명령어레벨, 데이터와 태스크 병렬화 등의 몇 가지 방법이 있다.

Parallelism has been employed for many years, mainly in high-performance computing, but interest in it has grown lately due to the physical constraints preventing frequency scaling.
병렬화는 오랫동안 고성능 컴퓨팅을 중심으로 도입되어 왔지만, 주파수 제어를 저해하는 물리적 제약으로 인해 최근 관심이 증가하고 있다.
(역주: 원문의 'physical constraints preventing frequency scaling'은 물리적 제약으로 인해서 CPU의 clock frequency가 무한히 증가할 수 없는 것을 의미하는 듯 하다. CPU clock은 기술적으로는 향상시킬 여지가 충분히 있으나, 소비전력 증가와 이로 인한 발열로 인해 실용성에는 한계에 부딪혔다.)

As power consumption (and consequently heat generation) by computers has become a concern in recent years, parallel computing has become the dominant paradigm in computer architecture, mainly in the form of multicore processors.
컴퓨터의 소비 전력 문제(와 동시에 발열 문제)이 최근 들어 관심받고 있음에 따라, 병렬 컴퓨팅은 특히 멀티코어 프로세스의 형태에 있어서 중요한 패러다임이 되고 있다.

Parallel computers can be roughly classified according to the level at which the hardware supports parallelism—with multi-core and multi-processor computers having multiple processing elements within a single machine, while clusters, MPPs, and grids use multiple computers to work on the same task.
병렬 컴퓨터는 하드웨어가 병렬화를 지원하는 레벨에 따라 대략 다음과 같이 분류 될 수 있다. 한 대의 기계에 다수의 프로세서를 가진 멀티코어/멀티프로세서 컴퓨터, 클러스터, MPP, 동일한 task를 수행하는 다수의 컴퓨터를 이용하는 그리드.

Specialized parallel computer architectures are sometimes used alongside traditional processors, for accelerating specific tasks.
특정 task를 빠르게 수행하기 위해서 일반적인 프로세서를 이용한 특별한 병렬 컴퓨터 구조가 사용되기도 한다.

Parallel computer programs are more difficult to write than sequential ones, because concurrency introduces several new classes of potential software bugs, of which race conditions are the most common. 
동시성에 의해서 잠재적인 S/W 버그가 새로 나타나기 때문에 병렬 컴퓨터 프로그램은 일반적인 프로그램보다 작성하기가 더 어렵다. 대표적으로는 race condition을 들 수 있다. 

Communication and synchronization between the different subtasks are typically one of the greatest obstacles to getting good parallel program performance.
서로 다른 subtask간의 커뮤니케이션과 동기화는 좋은 병렬 프로그램 성능의 가장 큰 장애물 중에 하나이다.

The speed-up of a program as a result of parallelization is observed as Amdahl's law.
병렬화에 의한 프로그램 성능 향상의 결과는 Amdahl's law로 확인할 수 있다.



'Parallel programming'을 보다보면 'Concurrent programming'이라는 단어도 심심치 않게 볼 수 있는데, 이 단어 또한 Wikipedia에서는 'Concurrent computing'으로 결과가 redirect 된다.


Concurrent computing
<출처 : Wikiepedia http://en.wikipedia.org/wiki/Concurrent_programming >

아래는 Wikiepedia 검색 결과의 abstract 부분을 번역한 내용이다.


Concurrent computing is a form of computing in which programs are designed as collections of interacting computational processes that may be executed in parallel.
병행 컴퓨팅은 병렬 수행이 가능한 프로세스간의 상호 연산 집합체의 형식으로 구현된 프로그램에 의해서 수행되는 컴퓨팅 형태를 말한다.

Concurrent programs can be executed sequentially on a single processor by interleaving the execution steps of each computational process, or executed in parallel by assigning each computational process to one of a set of processors that may be close or distributed across a network.
병행 프로그램은 싱글 프로세서 상에서 각 프로세스의 수행 순서를 교차는 방식, 또는 각 프로세스를 제한된 또는 네트워크 상에 분산된 프로세서 셋 중의 하나에 할당하는 방식으로 실행될 수 있다.

The main challenges in designing concurrent programs are ensuring the correct sequencing of the interactions or communications between different computational processes, and coordinating access to resources that are shared among processes.
병행 프로그램을 설계함에 있어서의 가장 큰 과제는 다른 프로세스간의 상호작용이나 커뮤니케이션의 순서의 정확성을 보장하고, 프로세스 간에 공유되는 리소스에 대한 접근을 관리하는 것이다.

A number of different methods can be used to implement concurrent programs, such as implementing each computational process as an operating system process, or implementing the computational processes as a set of threads within a single operating system process.
병행 프로그램을 구현하기 위해서는 몇가지 다른 방법이 사용되는데, 각각의 프로세스를 OS 프로세스로 구현하는 방법, 각각의 프로세스를 단일 OS 프로세스내의 thread 셋으로 구현하는 방법이 있다.

Pioneers in the field of concurrent computing include Edsger Dijkstra, Per Brinch Hansen, and C.A.R. Hoare.
병행 프로그래밍 분야의 선구자로는  Edsger Dijkstra, Per Brinch Hansen, C.A.R. Hoare가 있다.


Wikipedia의 결과만으로는 (그것도 abstract 부분만으로는) parallel computing과 concurrent computing이 동일한 의미인지, 전혀 다른 의미인지 정확하게 파악할 수는 없지만, 일단 살펴본 바로는 유사한 의미를 가지지만 구현에 있어서는 약간의 차이점을 가진 개념으로 생각된다.

 

댓글을 달아 주세요