문제

나는 혼자서 병렬 프로그래밍을 배우고 있습니다. 분산 메모리가 항상 다중 프로세스이고 멀티 스레드가 항상 공유되는 메모리인지 궁금합니다. 멀티 프로세스가 분산 메모리와 공유 메모리에 대한 것이 될 수있는 경우? 감사합니다.

도움이 되었습니까?

해결책

예, 그렇습니다. "예, 어떤 의미에서"

분산 메모리 시스템에서 다른 CPU 장치에는 자체 메모리 시스템이 있습니다. 다른 CPU의 액세스는 실제로 가능하다면 더 느리거나 일관성이 제한된 상태 일 가능성이 높습니다. 이것은 메시지 통과 멀티 프로세서의 더 일반적입니다.

병렬 프로그래밍에 여러 스레드를 사용하는 것은 하드웨어 문제보다 소프트웨어 패러다임에 가깝지만 용어 사용은 정확합니다. 기본적으로 단일 공유 메모리가 사용되고 있으며 실제 다중 프로세서가 포함되거나 포함되지 않을 수 있습니다. 여러 커널 스레드도 포함되지 않을 수 있으며,이 경우 스레드가 병렬로 실행되지 않습니다.

나는 마지막 질문의 의미에 대해 완전히 명확하지 않습니다. 확실히, "분산 메모리"또는 "공유 메모리"를 말함으로써 "프로세서를 통해 분산 된"및 "프로세서에 의해 공유 된"것을 의미하므로,이 용어는 다중 프로세서 또는 잠재적으로 다중 프로세서 시스템에만 합리적으로 적용된다고 가정합니다. 소프트웨어 의미에서 여러 프로세스에 대해 이야기하고 있다면 분산 메모리 시스템에 대한 요구 사항이며 본질적으로 요구 사항이라고 생각합니다. ~라고 불리는 공유 메모리 시스템의 경우 스레드).

분산 메모리이지만 캐시 캐리 런트 시스템이 존재하며 공유 메모리 멀티 프로세서 디자인이라는 유형이라고 덧붙여 야합니다. numa. 불과 몇 년 전만 해도이 기계는 병렬 컴퓨팅의 미치광이 프린지 였지만 이제는 인텔 코어 i7 프로세서가 NUMA를 주류로 가져 왔습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top