์ง๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Serial Algorithm)

  • ๋ช…๋ น์„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๋Š” Single Processor ์ปดํ“จํ„ฐ์— ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Parallel Algorithm)

  • ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” Multi Processor ์ปดํ“จํ„ฐ์— ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

Computer Architecture

Shared Memory

Distributed Memory

  • ํ”„๋กœ์„ธ์„œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”„๋กœ์„ธ์„œ๋ผ๋ฆฌ ๋ช…ํ™•ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ •์  ์Šค๋ ˆ๋”ฉ(Static Threading)

  • ๋Œ€๋ถ€๋ถ„์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ณ„์‚ฐํ•˜๋Š” ๋™์•ˆ ์Šค๋ ˆ๋“œ๋ฅผ ์œ ์ง€์‹œํ‚ค๋Š”๋ฐ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์ •์ ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
  • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ณ‘๋ ฌ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ •์  ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•ด ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
    • ์Šค๋ ˆ๋“œ๋“ค ์‚ฌ์ด์—์„œ ์ž‘์—…์„ ๋™์ ์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋กœ๋“œ๋ฅผ ๋Œ€๋žต ๊ฐ™๊ฒŒ ๋ฐ›๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ๋ณ‘๋ ฌ์„ฑ ๊ณ„์‚ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐ์ •, ๊ณ„ํš ๊ด€๋ฆฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณ„์ธต์„ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์„ฑ ํ”Œ๋žซํผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์  ์Šค๋ ˆ๋”ฉ(Dynamic Threading)

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์ •์  ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ณ€์น™์„ฑ์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋ณ‘๋ ฌ์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Example - ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜

Nested Parallelism

  • ์ค‘์ฒฉ๋œ ๋ณ‘๋ ฌ์„ฑ์€ ์„œ๋ธŒ ๋ฃจํ‹ด์ด ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜ธ์ถœ์ž๊ฐ€ ์„œ๋ธŒ ๋ฃจํ‹ด์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜๋ณต ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

P-FIB(n)
    if  n <= ๔ฐŽ1
        return n
    else
        x = spawn P-FIB(n-1)              # Create Child Process
        y = P-FIB(n๔ฐ-2)                    # Processing Parent Process
        sync                              # Waiting Child Process Result
        return x+y                        # Return Value
  • ๋…ผ๋ฆฌ์ ์ธ ๋ณ‘๋ ฌ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋ผ ์‹ค์ œ๋กœ ๊ผญ ๋™์‹œ์— ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
  • ์Šค์ผธ์ค„๋Ÿฌ๊ฐ€ ๊ณ„์‚ฐ์„ ์ „๊ฐœํ•  ๋•Œ ์œ ์šฉํ•œ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋ถ€๋ถ„๊ณ„์‚ฐ์— ํ• ๋‹นํ•จ์œผ๋กœ์จ ์‹ค์ œ๋กœ ์–ด๋–ค ๋ถ€๋ถ„๊ณ„์‚ฐ์„ ๋™์‹œ์— ์‹คํ–‰ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Parallel loop

  • ๋ฃจํ”„๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ์ผ๋ฐ˜ for-loop์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ parallel for ๋ฃจํ”„๋ฅผ ์ค‘์ฒฉ๋œ ๋ณ‘๋ ฌ์„ฑ ๊ณ„์‚ฐ์œผ๋กœ ์ด์šฉํ•˜๋Š” ๋ถ„ํ• -์ •๋ณต ์„œ๋ธŒ ๋ฃจํ‹ด์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MAT-VEC(A,x)
    n = A.rows
    parallel for i = 1 to n
        yi = 0
    parallel for i = 1 to n
        for j = 1 to n
            yi = yi + aij * xj
    return y
  • ์žฌ๊ท€์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋น„์šฉ๋„ ๋ฌด์‹œํ•˜์ง€ ๋ง๊ณ  ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Multi Thread ์‹คํ–‰ ๋ชจ๋ธ

DAG(Directed acyclic graph)

  • ๊ทธ๋ž˜ํ”„์— ์‚ฌ์ดํด์ด ์—†๋Š”๊ฒŒ ํŠน์ง•.

Multi Thread Scheduling

  • ์ข‹์€ Multi Threading์ด๋ž€ ์ž‘์—…์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž‘์—…์ด ๋ณ‘๋ ฌ ๊ธฐ๊ณ„์˜ ํ”„๋กœ์„ธ์„œ์— ์˜ํ•ด ํšจ์œจ์ ์œผ๋กœ ์Šค์ผธ์ค„๋ง๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • https://en.wikipedia.org/wiki/Scheduling_(computing)

Work Stealing

Race Condition

RACE-EXAMPLE()
    x = 0
    parallel for i = 1 to 2
        x = x + 1
    print x

ADD Process - Assembly language

  1. x๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ํ”„๋กœ์„ธ์„œ์˜ ํ•˜๋‚˜์˜ Register๋กœ ์ฝ์–ด๋“ค์ž…๋‹ˆ๋‹ค.
  2. Register์— ์žˆ๋Š” ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  3. Register์— ์žˆ๋Š” ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์˜ x์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ์š”?

  • ๊ฐ๊ฐ CPU๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Register ๊ฐ’์˜ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • Register ๊ฐ’์˜ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์ข…์ข… ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ๋Š” ์ฐพ๊ธฐ๋„ ๋งค์šฐ ํž˜๋“ค๊ณ , ์žฌ์—ฐํ•˜๊ธฐ๋„ ๋งค์šฐ ํž˜๋“ญ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‹ฌ๊ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ• ๊นŒ์š”?

  • Mutex, Lock, Semaphore์™€ ๊ฐ™์€ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ๋™๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Memory barrier

  • ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด?
    • ์ด๋“ค์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ํ˜ธ์ถœ๋˜๊ณ  ํ•˜๋‚˜์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ๊ณ„์‚ฐ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ณผ์—ฐ ๋‹ต์ผ๊นŒ์š”?

Amdahlโ€™s Law

์‹ค์ œ ํ”„๋กœ์„ธ์„œ๋‚˜ ๋…ธ๋“œ ์ˆ˜๋ฅผ ๋งŽ์ด ๋Š˜๋ฆฐ๋‹ค๊ณ  ํ•ด๋„, ์–ด๋Š ์ˆ˜์ค€ ์ด์ƒ์—์„œ๋Š” ์†๋„ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์˜ 95%๊ฐ€ ๋ณ‘๋ ฌํ™” ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด๋„ 16๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  10๋ฐฐ ์ด์ƒ์˜ ์†๋„ํ–ฅ์ƒ์„ ๋‚ด์ง€ ๋ชปํ•œ๋‹ค.
  • ์•„๋ฌด๋ฆฌ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋„ 20๋ฐฐ ์ด์ƒ์˜ ์†๋„ ํ–ฅ์ƒ์„ ๋‚ผ ์ˆ˜๊ฐ€ ์—†๋‹ค.

Reference