병렬화, 특히 문제 및 알고리즘 패턴에 대한 소개 노트


10

컴퓨터 과학의 기본 클래스의 병렬 아날로그와 마찬가지로 병렬 프로그래밍에 대한 좋은 소개를 제공하는 온라인 강의 노트 또는 기타 리소스를 찾고 있습니다.

나의 초점은 다음과 같습니다 : 나는 분할 및 정복, 욕심 많은 알고리즘, 동적 프로그래밍 등에 대해 이야기 할 수 있습니다.

예를 들어, 다음 각 문제에 대한 명백한 병렬 접근 방식이 다른 정 성적 행동을한다는 ​​사실을 표현하기 위해 적절한 용어를 얻고 싶습니다.

  1. 정수 배열을 모두 0으로 설정 (완전히 확장됩니다.)
  2. 정수 배열을 합산 (더 많은 스레드를 사용할수록 더 많은 오버 헤드)
  3. 배열이 주어지면 각 항목의 제품을 서로 항목과 함께 나열하십시오 (정규 이중 루프를 병렬 처리하면 실행 시간이 숫자 프로세서의 sqrt로 조정됩니다).

공유 메모리 환경이 충분하고 프로세스 간 통신은 나에게 관련이 없습니다 (사실, 나는 그것을 전혀 피하는 알고리즘에 관심이 있습니다). 또한 기술적 측면은 무시할 수 있습니다.


이 문장을 재구성 할 수 있습니까? "예를 들어, 다음 문제에 대한 명백한 병렬 접근 방식이 다른 질적 행동을 갖는 이유는 무엇입니까?"
Gopi

끝난. 나는 이것이 더 정확하기를 바랍니다.
shuhalo

답변:


6

병렬 프로그래밍에 대한 입문 서적 (온라인 자료는 알지 못함)에서 Casanova, Legrand 및 Robert의 Parallel Algorithms 를 통해이 책을 배우고 있으며 이론적 병렬 알고리즘을 시작하는 데 매우 유용합니다.

또한 SPAA'11에서는 병렬 알고리즘과 분산 컴퓨팅 학생이 알아야 할 사항과 가르쳐야 할 사항에 대한 토론이있었습니다. 병렬 및 분산 컴퓨팅에 관한커리큘럼 이니셔티브는 과정 을 찾는 것이 아니라 학부 과정에서 다루어야 할 다른 주제 목록을 찾는 데 도움이됩니다. 그런 다음 모든 특정 주제에 대한 문서를 찾는 것이 더 쉽다고 생각합니다.


1
"언어"라는 용어는 프로그래밍 언어 또는 이와 유사한 것이 아니라 자연어를 의미합니다. 수학이 언어 인 것처럼, 예를 들어 범주 이론 또는 그룹 이론은 특정 구조, 관계 및 사실에 "언어"를 제공한다고합니다. 어쨌든 고마워
shuhalo

실제로, 내 나쁜 :). 그렇다면 당신이 가지고있는 세 가지 질문에 대해, 나는 매우 이론적 인 책을 추천합니다. 그들은 다른 종류의 병렬 아키텍처에서 모든 종류의 병렬 알고리즘과 기술을 연구합니다. 그런 다음 세 가지 질문에 답할 수있는 부분은 Uniform Loops 부분입니다 .
Gopi


NSF / IEEE-TCPP 커리큘럼 이니셔티브의 경우 +1이지만 OpenMP & MPI는 여기서는 관련이 없으므로 제거하는 것이 좋습니다.
Jukka Suomela

실제로, @Martin의 의견 후에 그것을 제거하는 것을 잊었습니다. 감사.
Gopi

7

까다로운 세부 사항을 조사하지 않으려는 경우 Mattson, Sanders 및 Massingill의 병렬 프로그래밍 패턴 책에서 병렬 디자인 패턴에 대해 매우 잘 소개합니다 .

병렬화에 대한 일반적이고 광범위하게 적용 가능한 솔루션과 OpenMP 및 MPI에 대한 간단한 소개를 찾을 수 있습니다. 이 책은 디자인 패턴과 동시성을 소개하는 것으로 시작합니다. 그런 다음 동시성을 활용하는 방법, 알고리즘을 구성하는 방법 및 동기화 및 통신을 고려하여 알고리즘을 실제로 구현하는 방법을 설명합니다.

다시, 이것은 병렬 알고리즘에 대한 교과서가 아닙니다. 실용적이고 이론적 인 초점을 가지고 병렬 소프트웨어 엔지니어링과 엄격하게 관련된 자료를 제공하는 데 매우 효과적입니다. 따라서 귀하의 요구에 완벽하게 부합해야합니다.


1

MPI_RUBY ... 최신 안정적인 빌드를 찾아야합니다. 병렬 접두사 (스캔)를 목록에 추가하는 것이 좋습니다. 병렬 접두사를 가르치고 공간 채우기 곡선을 사용하여 모든 쌍 문제에서 캐시 효율성을 높이는 방법을 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.