2013-08-20 2 views
2

병렬 프로그래밍을 사용하여 일반적으로 또는 실제로 발생할 수있는 문제는 무엇입니까? 병렬 프로그래밍없이 간단하게 생각을 구현하는 것이 어렵습니다. 인터넷에서 그들은 그것을 사용하는 방법을 설명하지만 왜 사용하지는 않습니다.언제 병렬 프로그래밍을 사용해야합니까?

답변

4

성능이 병렬 프로그래밍을 사용하는 가장 일반적인 이유입니다. 그러나 : 병렬 프로그래밍을 사용하면 모든 프로그램이 더 빨라지지는 않습니다. 대부분의 경우 알고리즘은 병렬 처리가 가능한 부분과 본질적으로 순차적 인 부분으로 구성됩니다. 병렬 프로그래밍을 사용할 경우 얻을 수있는 잠재적 인 이점에 대해 항상 추론해야합니다. 어떤 경우에는 그것을 사용하기위한 오버 헤드가 실제로 프로그램을 느리게 만듭니다. 도달 할 수있는 잠재적 인 성능 향상에 대해 자세히 알아 보려면 Amdahl's law을보십시오.

만 병렬 계산의 사용의 예하려면

: 본질적으로 평행하게있는 알고리즘의 몇 가지 종류가 있습니다를, 다중 스레드 응용 프로그램 아키텍처를 사용하여이 문서를 the dwarfs of berkeley

+0

링크가 끊어졌습니다! : 버클리 –

+0

링크의 왜성이 이제 작동해야합니다. – LostAvatar

-3

직렬 프로그램보다 병렬 프로그램에서 더 빨리 해결할 수있는 문제는 거의 없습니다. 다중 처리 장치가없는 컴퓨터는 거의 없습니다.

결론적으로 병렬 프로그래밍을 항상 사용해야합니다.

+2

예 : 일괄 프로그래밍의 경우 각 작업을 병행 할 이유가 없습니다. 대부분의 병렬 프로그램의 오버 헤드로 인해 처리량이 감소합니다. – MrSmith42

+3

어려운 작업을 병렬 처리하기위한 추가 개발 시간이 작업 자체의 모든 실행에 대해 저장된 총 시간보다 큰 경우가 있습니다. 그래서 나는 당신이 항상 그것을 사용해야한다고 말할 수 있다고 생각하지 않습니다. – sh1

+2

비 병렬화 된 알고리즘을 최적화하면 일반적으로 병렬화하는 것보다 적은 노력으로 더 많은 성능을 얻을 수 있다고 생각합니다. 이것이 내가 "항상 병렬 프로그래밍을 사용해야한다는 결론을 내렸다"때문입니다. –

2

또 다른 이유를 참조하는 것은 응답의입니다. 특정 시간 동안 프로그램 실행을 차단하는 특정 기능, 즉 파일, 네트워크, 사용자 입력 대기 등을위한 기능이 있습니다. 이렇게 기다리는 동안 CPU 전력을 소비하지 않으면 서 프로그램 흐름을 차단하거나 느리게 만듭니다.

그런 경우 스레드를 사용하면 코드를 명확하게 만드는 것이 좋습니다. 입력을 검사 (종종 복잡하거나 직관적이지 않음)하는 대신 프로그램 흐름으로 이들 검사를 통합하는 것, 입력을 처리하는 것과 다른 작업을 수동으로 전환하는 것 사이에서 프로그래머는 쓰레드를 사용하고 하나의 쓰레드가 입력을 기다리게하고 다른 하나는 수행하도록 선택할 수 있습니다 계산.

즉, 여러 스레드가 네트워크에서 디스크, 입력 장치 또는 단순히 모니터와 같이 컴퓨터 자원에서 다른 리소스를보다 효율적으로 사용할 수 있습니다.

일반화 : 속도 및 응답 성의 향상이 동기화 비용 및 응용 프로그램을 병렬화하는 데 필요한 작업보다 클 때 다중 스레드 (병렬 데이터 처리 포함)를 사용하는 것이 좋습니다.

1

병렬 프로그래밍에 대한 관심이 증가하는 이유 중 하나는 부분적으로는 오늘날 사용하는 하드웨어가 더 평행하기 때문입니다. (멀티 코어 프로세서, 많은 코어 GPU). 이 하드웨어를 최대한 활용하려면 병렬로 프로그래밍해야합니다.

  • 은 4GHz의 하나 개의 단일 코어보다 적은 전력을 끌어가 1Ghz에서 4 개의 코어를 갖는

    흥미롭게 병렬 처리는 또한 배터리 수명을 개선한다.

  • 멀티 코어 CPU가 장착 된 전화기는 가능한 한 많은 작업을 실행하려고하므로 모든 작업이 완료되면 CPU를 끌 수 있습니다. 이것은 때로 "유휴로 돌진"이라고합니다.

이제 일부 프로그램은 다른 프로그램보다 병렬화가 쉽습니다. 무작위로 전체 코드 기반을 병렬 처리하려고해서는 안됩니다. 그러나 사업상의 이유가 없더라도 그렇게하는 것이 바람직 할 수 있습니다. 그러면 정말로 필요할 때가 더 준비 될 것입니다.

관련 문제