Skip to content

Latest commit

 

History

History
562 lines (385 loc) · 26.8 KB

13강 병렬컴퓨터.md

File metadata and controls

562 lines (385 loc) · 26.8 KB

🥳 HAPPY MIHYKIM DAY 🎉


🦄 병렬컴퓨터 (13 / 13회차)

8.1 병렬처리의 개념 및 필요성 daelee


[문제 1] 주로 슈퍼컴퓨터의 성능을 나타내는데 사용 되는 단위인 플롭스(FLOPS)는 어떤 단어의 약자(약어)일까요?

[문제 2] 문제 분할이란, 병렬처리를 위하여 하나의 문제를 여러 개로 나누는 작업을 말합니다. 하지만 문제 분할이 불가능한 경우도 있는데요, 어떤 경우일까요?



📄 답지

[문제 1] 주로 슈퍼컴퓨터의 성능을 나타내는데 사용 되는 단위인 플롭스(FLOPS)는 어떤 단어의 약자(약어)일까요?

정답 : FLOPS == FLoating point Operations Per Second

초당 처리할 수 있는 부동소수점 연산의 횟수

[문제 2] 문제 분할이란, 병렬처리를 위하여 하나의 문제를 여러 개로 나누는 작업을 말합니다. 하지만 문제 분할이 불가능한 경우도 있는데요, 어떤 경우일까요?

정답 :

  1. 순차적으로 처리되어야만 하는 프로그램의 경우
  2. 균등한 크기로 나누지 못했을 때 프로세서 이용율이 낮아져 오히려 성능이 낮아지는 프로그램의 경우



8.2 병렬처리의 단위 daelee


한 프로그램이 분할되어 각 프로세서에 분담되는 단위 프로그램의 크기에 따라 다양한 수준의 병렬성(parallelism)이 존재할 수 있다.

[문제 1] 다음은 다양한 수준의 병렬성에 대한 예시들 입니다. 보기를 참고해 어떤 병렬성에 대한 예시인지 빈 칸에 적어주세요.

작업-단위 병렬성, 태스크-단위 병렬성, 스레드-단위 병렬성, 명령어-단위 병렬성
  1. <미혜👩‍🦰생일파티🎂준비위원장> 현준🙋‍♂️

    현준은 미혜 생일파티의 효율적인 준비를 위해 산초에게는 파티룸을 예약을, 쿠킴에게는 스터디원 초대를, 개킴에게는 생일 선물을 구매 해오라는 명령을 동시에 내렸다.

    : __(a)__

  2. 현준은 미혜의 생일 케이크를 사러 둘썸플레이스에 방문한 김에, 집에 가는 길에 마실 아메리카노를 함께 구매했다.

    : __(b)__

  3. 현준은 미혜에게 보낼 생일카드 롤링페이퍼를 제작하기 위해 파티 참여원들에게 각각 17글자 이내의 축하 메세지를 적어 자정까지 메시지로 보내달라고 부탁했다.

    : __(c)__

  4. 현준은 총 13명의 파티 참여원들을 위해 미혜의 생일 케이크를 똑같은 크기의 13조각으로 잘라 나눠주었다.

    : __(d)__



📄 답지

한 프로그램이 분할되어 각 프로세서에 분담되는 단위 프로그램의 크기에 따라 다양한 수준의 병렬성(parallelism)이 존재할 수 있다.

[문제 1] 다음은 다양한 수준의 병렬성에 대한 예시들 입니다. 보기를 참고해 어떤 병렬성에 대한 예시인지 빈 칸에 적어주세요.

작업-단위 병렬성, 태스크-단위 병렬성, 스레드-단위 병렬성, 명령어-단위 병렬성
  1. <미혜👩‍🦰생일파티🎂준비위원장> 현준🙋‍♂️

    현준은 미혜 생일파티의 효율적인 준비를 위해 산초에게는 파티룸을 예약을, 쿠킴에게는 스터디원 초대를, 개킴에게는 생일 선물을 구매 해오라는 명령을 동시에 내렸다.

    : __(a)__

  2. 현준은 미혜의 생일 케이크를 사러 둘썸플레이스에 방문한 김에, 집에 가는 길에 마실 아메리카노를 함께 구매했다.

    : __(b)__

  3. 현준은 미혜에게 보낼 생일카드 롤링페이퍼를 제작하기 위해 파티 참여원들에게 각각 17글자 이내의 축하 메세지를 적어 자정까지 메시지로 보내달라고 부탁했다.

    : __(c)__

  4. 현준은 총 13명의 파티 참여원들을 위해 미혜의 생일 케이크를 똑같은 크기의 13조각으로 잘라 나눠주었다.

    : __(d)__

정답 :

  • (a) 태스크-단위 병렬성
    • 하나의 큰 작업을 내부적으로 기능에 따라 작은 프로그램으로 분리한 후 각 프로세스로 병렬 처리.
  • (b) 작업-단위 병렬성
    • 서로 다른 사용자 또는 한 사용자에 의해 여러 개의 프로그램이 독립적인 작업 단위으로서 병렬로 처리.
  • (c) 명령어-단위 병렬성
    • 명령어들이 사용할 데이터들 간에 의존 관계가 존재하지 않는다면 여러 명령어를 동시에 병렬로 수행할 수 있다. 슈퍼스칼라 구조를 가진 프로세서들은 이 병렬성을 이용하여 처리 속도를 높일 수 있다.
  • (d) 스레드-단위 병렬성
    • 동시에 처리될 수 있는 가작 작은 크기의 독립적인 단위로 나눠 병렬 처리. 멀티 스레딩.





8.3 병렬컴퓨터의 분류 sancho


[문제 1] Flynn의 분류에 따라 빈칸에 들어갈 이름을 적어 주세요.

__(a)__ : 한번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 시스템
__(b)__ : 하나의 명령어 스트림을 실행하고 여러개 명령어 스트림을 동시 처리하는 시스템
__(c)__ : 여러 프로세서가 서로 다른 명령어를 실행하지만 데이터들을 하나의 스트림으로 처리하는 시스템
__(d)__ : N개의 프로세서들이 서로 다른 명령어와 데이터들을 처리하는 시스템

[문제 2] MIMD에서 액세스 유형에 따른 분류로 설명에 대한 정답을 맞춰 주세요.

  1. 상호연결망에 의해 접속된 기억장치들을 공유하고 어느 영역이든 액세스에 걸리는 시간이 같은 모델은?
  2. UMA모듈이 상호연결망에 접속되며 전역 공유-기억장치를 가질 수 있고 모든 기억 장치들이 하나의 주소 공간을 형성하는 분산 공유 기억장치 형태로 구성되는 것은?
  3. 프로세스가 원격 기억장치에 직접 액세스할 수 없고 노드에 액세스 요구 메세지를 보내어 전달받는 방식은?

[문제 3] 분산시스템에 대해 설명해주세요.

->

[문제 4] 클러스터 컴퓨터에 대해 설명해주세요.

->


📄 답지

[문제 1] Flynn의 분류에 따라 빈칸에 들어갈 이름을 적어 주세요.

SISD(단일 명령어 스트림-단일 데이터 스트림)조직 : 한번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 시스템
SIMD(단일 명령어 스트림-복수 데이터 스트림)조직 : 하나의 명령어 스트림을 실행하고 여러개 명령어 스트림을 동시 처리하는 시스템
MISD(복수 명령어 스트림-단일 데이터 스트림)조직 : 여러 프로세서가 서로 다른 명령어를 실행하지만 데이터들을 하나의 스트림으로 처리하는 시스템
MIMD(복수 명령어 스트림-복수 데이터 스트림)조직 : N개의 프로세서들이 서로 다른 명령어와 데이터들을 처리하는 시스템


[문제 2] MIMD에서 액세스 유형에 따른 분류로 설명에 대한 정답을 맞춰 주세요.

  1. 상호연결망에 의해 접속된 기억장치들을 공유하고 어느 영역이든 액세스에 걸리는 시간이 같은 모델은? UMA
  2. UMA모듈이 상호연결망에 접속되며 전역 공유-기억장치를 가질 수 있고 모든 기억 장치들이 하나의 주소 공간을 형성하는 분산 공유 기억장치 형태로 구성되는 것은? NUMA
  3. 프로세스가 원격 기억장치에 직접 액세스할 수 없고 노드에 액세스 요구 메세지를 보내어 전달받는 방식은? NORMA

[문제 3] 분산시스템에 대해 설명해주세요.

-> 노드는 독립적인 컴퓨터이며 정보를 교환하거나 병렬처리가 필요할 때 네트워크를 통하여 통신합니다.

[문제 4] 클러스터 컴퓨터에 대해 설명해주세요.

-> 고속 LAN이나 네트워크 스위치에 의해 연결된 PC나 워크스테이션의 집합체로 모든 노드에 포함된 자원들이 단일 시스템 이미지로 사용될 수 있습니다. 사용자도 하나의 큰 시스템으로 간주하고 사용할 수 있습니다.



8.4 다중프로세서시스템 구조 - 공유기억장치 yeosong


[문제 1] 공유 기억장치 컴퓨터시스템에서 사용되는 상호연결 구조가 아닌 것은? (기본 8.10)

가. 버스 
나. 다단계상호연결망(MIN)
다. 매시 
라. 크로스바스위치 

->

[문제 2] 다음 중에서 하드웨어 복잡도가 가장 높은 연결 구조는 어느 것인가?

가. 크로스바스위치 
나. 다단계상호연결망 
다. 버스 
라. 계층버스 

->

[문제 3] 공유-버스 시스템에서 버스에 대한 경합을 줄이기 위한 방법을 한 가지만 답해보세요. (단답식)

->

[문제 4] 버스 병목을 줄이기 위해 높은 연결성을 제공하는 크로스바 스위치에 관한 문제입니다.

그림8-9크로스바스위치

  1. 이와 같은 크로스바 스위치 모델에서 프로세서메모리 모듈8개씩 있는 경우, 이를 모두 연결하기 위한 크로스바 스위치 개수는?

->

[문제 5] 크로스바 스위치의 개념을 이용하면서도 하드웨어 복잡성을 줄여주는 오메가 네트워크에 관한 문제입니다.

그림8-10오메가네트워크

  • 이와 같은 오메가 네트워크 모델에서 프로세서메모리 모듈8개씩 있는 경우, 이를 오메가 네트워크로 연결하기 위한 스위칭 소자 개수는?

->

  • 이 경우 필요한 단계(스테이지)의 수는? (참고: s = log2N)

->

📄 답지

[문제 1] 공유 기억장치 컴퓨터시스템에서 사용되는 상호연결 구조가 아닌 것은? (기본 8.10)

가. 버스 
나. 다단계상호연결망(MIN)
다. 매시 
라. 크로스바스위치 

-> 다. 매시
-> 439쪽. 가,나,라는 하나의 공유 기억장치에 접근하기 위한 방법이고,
-> 매시 네트워크분산 기억장치 시스템 구조중 하나다.

[문제 2] 다음 중에서 하드웨어 복잡도가 가장 높은 연결 구조는 어느 것인가?

가. 크로스바스위치 
나. 다단계상호연결망 
다. 버스 
라. 계층버스 

-> 가. 크로스바스위치
-> 프로세서 N개당 스위칭 소자가 N2개 필요하며 연결선도 그만큼 많이 필요하다.

[문제 3] 공유-버스 시스템에서 버스에 대한 경합을 줄이기 위한 방법을 한 가지만 답해보세요. (단답식)

-> 1. 캐시의 사용 2. 버스 수의 증가 3. 버스의 고속화가 있겠습니다.

[문제 4] 버스 병목을 줄이기 위해 높은 연결성을 제공하는 크로스바 스위치에 관한 문제입니다.

그림8-9크로스바스위치
  • 이와 같은 크로스바 스위치 모델에서 프로세서메모리 모듈8개씩 있는 경우, 이를 모두 연결하기 위한 크로스바 스위치 개수는?

-> N2개로, 82 = 64개

[문제 5] 크로스바 스위치의 개념을 이용하면서도 하드웨어 복잡성을 줄여주는 오메가 네트워크에 관한 문제입니다.

그림8-10오메가네트워크
  • 이와 같은 오메가 네트워크 모델에서 프로세서메모리 모듈8개씩 있는 경우, 이를 오메가 네트워크로 연결하기 위한 스위칭 소자 개수는?

-> N/2로, 8/2 = 4개

  • 이 경우 필요한 단계(스테이지)의 수는? (참고: 필요한 스테이지 수 s = log2N)

-> 3



8.4 다중프로세서시스템 구조 - 분산기억장치 kycho


[문제 1] 다음은 분산-기억장치 시스템에 대한 설명입니다. OX를 체크하시오.

  • 분산-기억장치 시스템에서는 프로세서들이 기억장치를 공유한다. (O / X)
  • 분산-기억장치 시스템에서는 각 프로세서가 실행할 프로그램이 컴파일 단계에서부터 별도로 작성되어 각 프로세서의 기억장치에 적재되며, 프로세스들에 의해 공유되는 데이터들만 서로 교환된다. (O / X)
  • 분산-기억장치 시스템에서는 프로세서간의 통신량이 공유-기억장치 시스템에 비해 증가한다. ( O / X )
  • 분산-기억장치 시스템에서는 프로세서간 통신 시간은 증가한다. ( O / X )

[문제 2] 다음 그림들을 보고 네트워크 구조 명칭을 작성해 주시오.

image

[문제 3] 네트워크 내에서 가장 멀리 떨어진 노드들 간의 거리를 나타내는 용어는 무엇인가?


[문제 4] 다섯 층으로 이루어진 트리 구조의 네트워크 지름은 얼마인가? (연습문제 8.10)


[문제 5] E-큐브 라우팅을 이용하는 4차원 하이퍼큐브에서 패킷이 0번(0000) 노드에서 14번(1110) 노드로 전송될때 알맞는 경로는 무엇인가?

image

(가) 0000 -> 1000 -> 1100 -> 1110
(나) 0000 -> 0010 -> 0110 -> 1110
(다) 0000 -> 0100 -> 0110 -> 1110
(라) 0000 -> 1000 -> 1010 -> 1110



📄 답지

[문제 1] 다음은 분산-기억장치 시스템에 대한 설명입니다. OX를 체크하시오.

  • 분산-기억장치 시스템에서는 프로세서들이 기억장치를 공유한다. ( X )

분산-기억장치 시스템에서는 프로세스들이 기억장치를 공유하지 않고, 각 프로세서가 자신의 기억장치를 별도로 가지고 있다.

  • 분산-기억장치 시스템에서는 각 프로세서가 실행할 프로그램이 컴파일 단계에서부터 별도로 작성되어 각 프로세서의 기억장치에 적재되며, 프로세스들에 의해 공유되는 데이터들만 서로 교환된다. ( O )
  • 분산-기억장치 시스템에서는 프로세서간의 통신량이 공유-기억장치 시스템에 비해 증가한다. ( X )

프로세스들은 공유되는 데이터들만 서로 교환하기 때문에 통신량은 크게 줄어든다.

  • 분산-기억장치 시스템에서는 프로세서간 통신 시간은 증가한다. ( O )

프로세서간 통신은 일반적으로 메시지-패싱 방식으로 이루어지기 때문에 통신 시간이 증가한다.


[문제 2] 다음 그림들을 보고 네트워크 구조 명칭을 작성해 주시오.

image

[문제 3] 네트워크 내에서 가장 멀리 떨어진 노드들 간의 거리를 나타내는 용어는 무엇인가?

정답 : 네트워크 지름

[문제 4] 다섯 층으로 이루어진 트리 구조의 네트워크 지름은 얼마인가? (연습문제 8.10)

정답 : 8
트리 구조에서 층의 수를 K라고 할때 네트워크 지름은 2(K - 1)이다.
K = 5이므로, 네트워크 지름은 8이 된다.
간단하게 아래의 그림을 통해서도 네트워크 지름이 8임을 확인할 수 있다. image

[문제 5] E-큐브 라우팅을 이용하는 4차원 하이퍼큐브에서 패킷이 0번(0000) 노드에서 14번(1110) 노드로 전송될때 알맞는 경로는 무엇인가?

image

(가) 0000 -> 1000 -> 1100 -> 1110
(나) 0000 -> 0010 -> 0110 -> 1110
(다) 0000 -> 0100 -> 0110 -> 1110
(라) 0000 -> 1000 -> 1010 -> 1110

정답 : (나)
0000 XOR 1110 => 1110 (b3b2b1b0)
b0 = 0 => x방향으로 이동 없음.
b1 = 1 => y방향으로 이동
b2 = 1 => z방향으로 이동
b3 = 1 => 4차원 방향으로 이동
따라서, 아래 그림과 같이 0000 -> 0010 -> 0110 -> 1110 으로 이동한다. image





8.4 다중프로세서시스템 구조 - 캐시일관성 jakang


1번. 다음 보기의 지문들을 읽고, 각각 'write-through' 정책과 'write-back' 정책 중 어떤 것과 관련되었는지를 구분하시오.

* Write-through ____________

* Write-back ____________

a) 이 정책을 사용하는 경우, 캐시의 값을 바꿀 때 주기억장치를 같이 갱신한다.

b) 이 정책의 복잡도는 다른 정책에 비해 크다.

c) 이 정책을 사용하는 경우 스누프 제어기가 시스템 버스상의 쓰기 동작들만 감시하면 된다.

d) 데이터가 수정된 캐시의 스누프 제어기는 그 사실을 다른 모든 스누프 제어기들에게 별도로 통보해야한다.

2번. 다음은 Write-back 쓰기 정책을 사용하는 시스템을 위한 캐시 일관성 유지 프로토콜 중 하나인 MESI 프로토콜과 관련한 것이다. 각 지문들의 참 거짓 여부를 표시하세요.

[ ] 무효 상태는 다른 프로세서에 의해 데이터의 내용이 수정되었고, 그에 따라 현재 캐시에 적재되어 있는 그 데이터는 무효가 되었다는 것을 나타낸다.

[ ] 배타 상태는 현재 캐시에 적재되어 있는 데이터가 다른 캐시에도 있는 복사본이고, 주기억장치의 내용과 동일한 상태라는 것을 나타낸다.

[ ] 배타 상태에서 수정 상태로 바뀐 경우, 다른 캐시들에게 이 사실을 알릴 필요가 없다.

[ ] 여러 캐시에 같은 데이터가 적재되어 있을 때 이들 캐시 중 한 곳에서 데이터가 새로운 값으로 수정되었다면, 프로세스는 무효화 신호를 다른 모든 캐시들로 보내고, 바뀐 데이터의 상태를 배타 상태로 바꾼다.

3번. 다음은 MESI 프로토콜을 사용하는 시스템에서 P1과 P2의 캐시에 X가 있고, P2가 X의 값을 Y로 변경하고 이어서 P1이 X의 값을 Z로 변경하려고 할 때 일어난 일들이다. 순서에 맞게 배열하시오.

___ -> ___ -> ___ -> ___

a) P1 캐시에 유효한 데이터가 캐시에 없기 때문에 '수정을 위한 읽기' 과정이 일어난다.

b) P2는 자신의 데이ㅓ를 무효 상태로 변경한다.

c) P2는 P1으로 캐시간 전송을 통해 자신의 데이터 Y를 보내준다.

d) P1은 새로운 데이터 Z를 쓰고, 상태를 수정 상태로 세트한다.



📄 답지

1번. 다음 보기의 지문들을 읽고, 각각 'write-through' 정책과 'write-back' 정책 중 어떤 것과 관련되었는지를 구분하시오.

* Write-through a) c)

* Write-back b) d)

a) 이 정책을 사용하는 경우, 캐시의 값을 바꿀 때 주기억장치를 같이 갱신한다.

b) 이 정책의 복잡도는 다른 정책에 비해 크다.

c) 이 정책을 사용하는 경우 스누프 제어기가 시스템 버스상의 쓰기 동작들만 감시하면 된다.

d) 데이터가 수정된 캐시의 스누프 제어기는 그 사실을 다른 모든 스누프 제어기들에게 별도로 통보해야한다.

2번. 다음은 Write-back 쓰기 정책을 사용하는 시스템을 위한 캐시 일관성 유지 프로토콜 중 하나인 MESI 프로토콜과 관련한 것이다. 각 지문들의 참 거짓 여부를 표시하세요.

[ O ] 무효 상태는 다른 프로세서에 의해 데이터의 내용이 수정되었고, 그에 따라 현재 캐시에 적재되어 있는 그 데이터는 무효가 되었다는 것을 나타낸다.

[ X ] 배타 상태는 현재 캐시에 적재되어 있는 데이터가 다른 캐시에도 있는 복사본이고, 주기억장치의 내용과 동일한 상태라는 것을 나타낸다.

: 다른 캐시에는 없는 복사본일 때에 배타 상태라고 한다.

[ O ] 배타 상태에서 수정 상태로 바뀐 경우, 다른 캐시들에게 이 사실을 알릴 필요가 없다.

[ X ] 여러 캐시에 같은 데이터가 적재되어 있을 때 이들 캐시 중 한 곳에서 데이터가 새로운 값으로 수정되었다면, 프로세스는 무효화 신호를 다른 모든 캐시들로 보내고, 바뀐 데이터의 상태를 배타 상태로 바꾼다.

: 수정 상태로 바꾼다. 배타 상태는 주기억장치와 캐시의 데이터가 같을 때 해당함.

3번. 다음은 MESI 프로토콜을 사용하는 시스템에서 P1과 P2의 캐시에 X가 있고, P2가 X의 값을 Y로 변경하고 이어서 P1이 X의 값을 Z로 변경하려고 할 때 일어난 일들이다. 순서에 맞게 배열하시오.

a) -> c) -> b) -> d)

a) P1 캐시에 유효한 데이터가 캐시에 없기 때문에 '수정을 위한 읽기' 과정이 일어난다.

b) P2는 자신의 데이ㅓ를 무효 상태로 변경한다.

c) P2는 P1으로 캐시간 전송을 통해 자신의 데이터 Y를 보내준다.

d) P1은 새로운 데이터 Z를 쓰고, 상태를 수정 상태로 세트한다.





8.5 그래픽처리유니트(GPU) taelee


[문제1]
그래픽처리 전용 프로세서이던 GPU가 일반목적용이라는 의미를 가진 GPGPU로 불리며 널리 보급되는 계기가 된 두 가지 주요 기술들은 무엇인가?(연습문제 8.17)



[문제2]
CUDA 프로그래밍 모델에서 다음 설명에 맞는 용어들을 짝지어주세요

보기) 디바이스, SM, 호스트, SP

  1. 일반적인 CPU를 지칭
  2. GPU와 같은 병렬프로세서를 지칭
  3. 실제 프로그램 코드를 수행하는 다수의 프로세서
  4. 3번에서 지칭한 프로세서들 여러개들의 집합 + 프로세서들이 정보를 공유할 수 있게 도와주는 '공유기 억장치'

[문제3]
다음은 CUDA 프로그램이 실행되는 과정이다. 빈칸은 채워주세요

보기) SM, SP, 블록, 스레드

  1. 호스트가 순차적 코드를 실행한다.
  2. 커널 함수가 호출되면, 병렬 커널 코드가 디바이스로 보내진다.
  3. 디바이스에서 커널이 그리드(다수의 블록 및 스레드들 포함)를 생성한다.
  4. 그리드 내에 '(a)'은 GPU내의 '(b)'에 1대1로 할당된다.
  5. 그러면 (b)은 블록내의 '(c)'를 GPU내의 '(d)'에게 1대1로 할당한다.
  6. 모든 스레드들의 실행이 완료되면 그리드가 종료되고, 결과값들이 호스트로 전송된다.
  7. 호스트는 다음 순차적 코드를 실행하며, 또다른 커널을 만난다면 2~4번 과정을 반복한다.

(a):
(b):
(c):
(d):



📄 답지

[문제1]
그래픽처리 전용 프로세서이던 GPU가 일반목적용이라는 의미를 가진 GPGPU로 불리며 널리 보급되는 계기가 된 두 가지 주요 기술들은 무엇인가?(연습문제 8.17)

  • 통합된 그래픽 및 계산 구조: 그래픽 응용뿐 아니라 일반적인 계산에도 적합한 통합적인 하드웨어 구조
  • CUDA 프로그래밍 모델: 일반적인 프로그래밍 언어들을 이용하여 GPU를 위한 프로그램을 쉽게 작성할 수 있게 해주는 프로그래머-친화적 병렬컴퓨팅 플랫폼으로서, NVIDIA사에 의해 개발된 프로그래밍 모델
    CUDA 프로그래밍의 예)

프리미어 New File 첫페이지

Vrew 설정 페이지



[문제2]
CUDA 프로그래밍 모델에서 다음 설명에 맞는 용어들을 짝지어주세요

보기) 디바이스, SM, 호스트, SP

  1. 일반적인 CPU를 지칭
  2. GPU와 같은 병렬프로세서를 지칭
  3. 실제 프로그램 코드를 수행하는 다수의 프로세서
  4. 3번에서 지칭한 프로세서들 여러개들의 집합 + 프로세서들이 정보를 공유할 수 있게 도와주는 '공유기 억장치'

1) 호스트
2) 디바이스
3) SP(Streaming Processor)
4) SM(Streaming Multiprocessor)

[문제3]
다음은 CUDA 프로그램이 실행되는 과정이다. 빈칸은 채워주세요

보기) SM, SP, 블록, 스레드

  1. 호스트가 순차적 코드를 실행한다.
  2. 커널 함수가 호출되면, 병렬 커널 코드가 디바이스로 보내진다.
  3. 디바이스에서 커널이 그리드(다수의 블록 및 스레드들 포함)를 생성한다.
  4. 그리드 내에 '(a)'은 GPU내의 '(b)'에 1대1로 할당된다.
  5. 그러면 (b)은 블록내의 '(c)'를 GPU내의 '(d)'에게 1대1로 할당한다.
  6. 모든 스레드들의 실행이 완료되면 그리드가 종료되고, 결과값들이 호스트로 전송된다.
  7. 호스트는 다음 순차적 코드를 실행하며, 또다른 커널을 만난다면 2~4번 과정을 반복한다.

(a): 블록
(b): SM(Streaming Multiprocessor)
(c): 쓰레드
(d): SP(Streaming Processor)