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개일 때 기준으로)

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

진행 중일 때는 이렇게 된다. 그리고 모든 처리가 끝나고, 처리 종료가 메인 스레드에 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 Jinuk Kim

SW Engineer / gamer / bookworm / atheist

Join the Conversation

10 Comments

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

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

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

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

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

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

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

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

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

Leave a comment

Leave a Reply to Dish Cancel reply