병렬 프로그래밍 == 다중 스레드 프로그래밍입니까?병렬 프로그래밍 == 다중 스레드 프로그래밍입니까?
답변
다중 스레드 프로그래밍은 병렬이지만 병렬 프로그래밍이 반드시 다중 스레드되지는 않습니다.
단일 코어에서 멀티 스레딩이 발생하지 않는 한, 동시 발생은 예외입니다.
AFAIK는 단일 코어 프로세서에서 스레딩이 병렬이 아닙니다. 동시지만 병렬은 아닙니다. –
@Ionut : http : //thesaurus.reference.com/browse/concurrent <- 첫 번째 결과의 '동의어'헤더를 보면됩니다. –
동시성과 병렬 성의 차이점은 병렬성이 진정으로 동시성이라는 것입니다. 동시에 동시성은 마치 마치 동시성 인 것처럼 보입니다. 스레드 간 전환은 너무 빠르기 때문에 병렬 인 것처럼 보이지만 그렇지 않습니다. 어쩌면 이것을 지칭하는 다른 용어가있을 수 있습니다. 그러나 그것이 제가 이해하는 것입니다. –
은 반드시입니다. 여러 프로세스 또는 심지어 여러 시스템간에 작업을 분산시킬 수 있습니다. 각 프로세스는 단일 스레드 만 사용할 수 있으므로 "다중 스레드"프로그래밍으로 분류하지는 않겠지 만 확실히 병렬 프로그래밍입니다. 그렇다면 여러 프로세스에서 시스템 전체에 여러 스레드가 있다고 주장 할 수 있습니다.
궁극적으로 이와 같은 정의는 상황에서만 유용합니다. 당신의 특별한 경우에 어떤 차이가 있습니까? 아니면 그냥 관심 밖입니까?
SIMD를 병렬 프로그래밍으로 간주해야합니까? 우리는 병렬로 여러 데이터에 대해 동일한 작업을 수행하고 있지만 이것이 병렬 프로그래밍의 정의에 포함될 마이크로 병렬화로 간주되는지는 잘 모릅니다. –
나는 SIMD가 더 병렬 하드웨어 설계라고 말하고 싶지만, 어느 정도는 병렬 하드웨어를 갖는 프로그래밍 측면을 고려해야한다. GPU 프로그래밍은 어떻습니까? –
아니요. 다중 스레드 프로그래밍은 단일 프로세스가 있다는 것을 의미하며,이 프로세스는 많은 스레드를 생성합니다. 모든 스레드는 동시에 실행되지만 동일한 프로세스 공간 아래에 있습니다. 동일한 메모리에 액세스 할 수 있고 동일한 열린 파일 설명자를 가질 수 있습니다.
병렬 프로그래밍은 정의와 같이 좀 더 "일반"입니다. MPI에서는 동일한 프로세스를 여러 번 실행하여 병렬 프로그래밍을 수행합니다. 각 프로세스마다 다른 "식별자"를 사용한다는 차이점이 있으므로 원하는 경우 각 프로세스를 구별 할 수 있지만 반드시 필요하지는 않습니다. 또한 이러한 프로세스는 서로 독립적이며 파이프 또는 네트워크/유닉스 소켓을 통해 통신해야합니다. MPI 라이브러리는 동기식 또는 비동기식으로 노드간에 데이터를 이동하는 특정 기능을 제공합니다.
반면 OpenMP는 멀티 스레드 및 공유 메모리를 통해 병렬 처리를 구현합니다. 컴파일러에 대한 특수 지시문을 지정하면 자동으로 병렬 실행을 수행합니다.
OpenMP의 장점은 매우 투명하다는 것입니다. 병렬화 할 루프가 있습니까? 몇 개의 지시문을 추가하면 컴파일러가이를 조각으로 처리하고 루프의 각 부분을 다른 프로세서에 할당합니다. 불행히도이를 위해 공유 메모리 아키텍처가 필요합니다. 노드 기반 아키텍처가있는 클러스터는 클러스터 레벨에서 OpenMP를 사용할 수 없습니다. MPI를 사용하면 노드 기반 아키텍처에서 작업 할 수 있지만보다 복잡하고 투명하지 않은 사용료를 지불해야합니다.
아, 그래서 1 개의 작업이 n 개의 프로세스에 의해 처리된다는 의미입니다. 하나의 작업이 n 개의 스레드에 의해 처리되지 않습니다. –
다중 프로세스 아키텍처를위한 OpenMP 스타일의 병렬 처리에서 수행되는 작업을 기억합니다 ... 기억이 안납니다. 그것이 OpenMP 그 자체이거나 다른 것인가? –
@ 에코 : 정확하지 않습니다. MPI는 동일한 프로그램의 n 개의 인스턴스를 시작합니다. 각각의 인스턴스는 특수한 변수에 다른 ID 번호를 갖습니다 (MPI_Comm_Rank를 찾습니다). 이러한 인스턴스와 관련된 작업은 귀하에게 달려 있습니다. –
중복 가능 -> http://stackoverflow.com/questions/1073098/parallel-coding-vs-multithreading-on-single-cpu – Bhaskar