UPnL Workshop: Introduction to Concurrent Programming

9회차의 UPnL 워크샵 발표 자료. 처음으로 Apple Keynote를 써봤는데, 대학원 2년 동안 빡쎄게 썼던 MS 파워포인트보다/OOo Impress보다 나름대로 인터페이스도 편하고 템플릿도 적당한듯하고, 전체적으로 괜찮았다 — 템플릿에서 고른 해상도가 와이드 모니터 기준으로되서 4:3 해상도였던 프로젝터에서 좀 꽝이었던 것만 빼면 Orz

발표한 주제는 Concurrent programming에 대한 간략한 소개. 나랑 비슷한 관심이 있는 후배가 없나 낚아보려고

프리젠테이션 내용을 간략히 설명하자면, 이쪽 문제들 중에 가장 간단한 것 — data-parallelism을 써먹을 수 있는 것 — 을 골라서 예제로 썼다. 2D 이미지에서 median filter를 적용시키는 문제를 설명했는데, “이런 과정으로 구현했다“는 것을 보였다.

  1. 미리 k개의 스레드를 생성한다 (k = CPU core 수)
  2. 필터를 적용할 범위를 찾아서 수평으로 k개의 sub image로 쪼갠다 (height을 k등분)
  3. 서브 이미지를 k 개의 스레드에게 전달하고 처리하게 한다[1]
  4. 처리된 이미지를 병합한다 — 사실 병합이고 자시고할 것 없이 출력 버퍼에서 offset만 잘 잡아주면된다

즉, 이미지를 이렇게 쪼갠다. (core수가 4개일 때 기준으로)

Splitted sub images

그리고 나서 각각을 개별 core에서 필터링 한다.[2]

Concurrent Filtering of Sub-image

진행 중일 때는 이렇게 된다. 그리고 모든 처리가 끝나고, 처리 종료가 메인 스레드에 signaling 되면 최종 처리된 이미지를 표시해주면 끝. 물론 필터 자체가 이렇게 local한 영역만 보는게 아니라면 문제가 복잡해지지만 입력/출력 버퍼가 구분되고, 필터가 일부 영역(local)만 보는 경우엔 매우 쉽게 동시처리 할 수 있다.

설명을 하고, 간단히 시연했다 — 5000 by 3000이미지를 써서 Dual Core에서 7.1s vs. 3.9s 정도로 83%쯤 빨라졌다. 관심있는 후배가 많았으면 좋겠다(…).

  1. 예전에 작성한 C++ closure를 유용히 써먹었다. 개별 코어에서 수행할 작업을 하나의 Closure로 만들어서 전달하게해서, Worker thread에 작업을 전달하는 방법을 단일화했다. 즉, 스레드에 넘길 작업 종류가 증가해도, 인터페이스는 Closure*를 여러개 전달하는 인터페이스 하나면 족하게 되었음 []
  2. 사용한 필터가 median filter라 여기에선 잘 안보일 것 같아서 화면은 pixelize 필터를 돌린걸로 대체했다. []

Published by

rein

나는 ...

10 thoughts on “UPnL Workshop: Introduction to Concurrent Programming”

  1. jstrane / 확률 통계적인 시뮬레이션 경로(path)에서, 어느 한 순간 선택된 경로만 가지고 밑 바닥에 뭐가 있을지 논하는건 무의미하다.
    (야)

  2. 요즘 프로세서 여럿 써서 막강한 CPU 파워로
    뭔가 할 수 있는 게 없을까하고 고민 중이에요.

    꼭 원 CPU-멀티코어보단…
    실습실에 남아돌고 있는 컴퓨터들의 힘을 이용해서
    애니메이션 최종 프로젝트를 말도 안 되는 퀄리티로 실시간 렌더링한다든지 그런 (…)

  3. Dish / 예전에 그랬던걸 요즘은 그냥 PC 한 대에서 해버리자는거지.

    네트웍 통신보다는 코어 수 적당한 수준(32개 이하?)쯤에서는 캐쉬가지고 통신해버릴 수도 있으니까 (물론 데이터 지역성이 잘 보장되야 가능한 소리지만) 상당히 빨라지지 않을까함.

    비슷한 의미로 GPU도 VS/PS만 보면 처리 유닛이 여러 개지? 요즘은 레이 트레이싱도 실시간으로 하려는 것 같던데;

  4. 안녕하세요.
    (주)사이텍미디어 출판사 미디어개발부 김지영입니다.

    어느 곳에 글을 남겨야 할지 몰라서 관련 글의 코멘트로 글을 남깁니다. 저희가 현재 기획 중인 번역서에 대해서 검색하던 중 관련 글을 보고 반가운 마음에 글을 남기게 되었습니다.
    여러 가지 일들로 바쁘시겠지만, 조금만 시간을 내주셔서 기획 중인 도서에 대해서 소중한 의견을 주셨으면 하는 바램입니다.
    더 많은 이야기는 메일로 나눴으면 하는데요. 답신 부탁드립니다.

    행복하고 즐거운 하루 보내세요.

Leave a Reply