ComputerGraphics/CUDA (10) 썸네일형 리스트형 [CUDA] GPU 구조 GPU / SM NVIDIA GPU 내부에는 여러개의 SM (Streaming Multiprocessor) 이 존재한다. GPU 전체를 단순하게 표현하면 다음과 같다.간단하게는 GPU는 여러 SM으로 구성되어 있다고 생각하면된다. 내 GPU 스펙을 조회해보면, 다음과 같이 나온다.Number of Multiprocessors: 48Maximum Threads per MultiProcessor: 1536Maximum Threads per Block: 1024Maximum Blocks Per Multiprocessor: 24Warp size in threads: 32 SM의 개수는 48개인 것을 확인할 수 있다. SM(Streaming Multip.. [MultiCoreProgramming] OpenCL vector 연산 Processing Elemet(PE, workItem): 연산을 담당한다.Compute Unit(CU, workGroup): PE의 집합을 CU라고 생각하면 된다. CU를 합겨서 OpenCL Devce라고한다. (local memory, global memory도 포함이다.)Device(GPU)와 Host(CPU)가 Communication을 할 수 있도록 세팅하자 Context는 Queue에 명령을 넣어서 Device와 Communitation을 한다.(OpenCL runtime이 큐에 들어있는 커널 커맨드를 꺼내어 타겟 디바이스에 알려준다) 기본적인 OpenCL의 흐름도이다. 순서대로 한다면 vector 연산을 할 수 있을 것이다. 플랫폼 디바이스에서 정보얻기커널코드 실행에 필요한 객체생성0... [MultiCoreProgramming] Directory Protocol (2) 디렉터리 프로토콜의 기본 구조k개의 프로세서가 있는 시스템일 때메모리의 각 캐시 블록에 연관된 정보k개의 presence 비트1개의 dirty 비트캐시의 각 캐시 블록에 연관된 정보valid 비트1개의 dirty (owner) 비트 1. 프로세서의 메모리 Read 동작a) 프로세서 i가 메인 메모리에서 읽을 때:dirty 비트가 OFF인 경우메인 메모리에서 읽음p[i] (presence 비트)를 ON으로 설정dirty 비트가 ON인 경우dirty 프로세서로부터 라인 회수 (캐시 상태를 shared로 변경)메모리에 데이터 값 업데이트(최신화)dirty 비트를 OFF로 끔.p[i]를 ON으로 설정프로세서 i에 데이터를 다시 콜2. 프로세서의 메모리 Write 동작a) 프로세서 i가 메인 메모리에 쓸 때dir.. [MultiCoreProgramming] Directory Protocol (1) 캐시 일관성 시스템의 필수 요소set of state, state transition diagram, action 을 제공한다. Manage Coherence Protocol(0) Coherence Protocol을 호출할 시기 결정(a) 다른 캐시의 블록 상태 정보 찾기(b) 다른 복사본 위치 찾기(c) 해당 복사본들과 통신 (invalidate/update) 일관성 프로토콜 호출 (0, 공통 수행)모든 시스템에서 동일하게 수행된다.캐시 내에서 state of line을 유지한다."access fault"가 발생하면 프로토콜 호출접근 방식의 차이는 (a)부터 (c)에서 나타남Bus Based Coherence(a), (b), (c) 모두 bus를 통한 브로드캐스트로 수행오류 발생 프로세서가 "searc.. [MultiCoreProgramming]Cache Coherence(Snooping)-3 Implementation ComplicationsWrite Races1. 캐시 업데이트 제약버스를 획득하기 전까지 캐시를 업데이트할 수 없다.그 이유는 다른 프로세서가 먼저 버스를 획득하여 동일한 캐시 블록에 write할 수 있기 때문이다.2. Two Step Processarbitrate(중재) for busbus에 miss를 배치하고 작동 완료3. bus 대기 중 miss 발생 시:miss를 처리하고(필요시 invalidate), 재시작한다.4. 분할 트랜잭션 버스버스 트랜잭션이 원자적(atomic)이지 않기 때문에 하나의 블록에 대해 여러 미완료 트랜잭션이 가능하다.여러 miss들이 interleave(끼어들수)될 수 있어 두 캐시가 동시에 Exclusive 상태의 블록을 가져갈 수 있습니다.하나.. [MultiCoreProgramming]Write Cache Coherence(Snooping)-2 Example Write Back Snoopy Protocol프로토콜 특징:Invalidation 프로토콜을 사용Write-back 버퍼링 캐시 사용버스의 모든 주소를 Snooping(감시)메모리 블록의 상태 (셋 중 하나):모든 캐시에서 clean하고 메모리에서 최신 상태 (Shared)정확히 하나의 캐시에서 dirty 상태 (Exclusive)어떤 캐시에도 존재하지 않음캐시 블록의 상태 (추적 대상)공유(Shared): 블록을 읽을 수 있음배타적(Exclusive): 캐시가 유일한 복사본을 가지며, 쓰기 가능하고 dirty 상태임무효(Invalid): 블록에 데이터가 없음 (단일 프로세서 캐시에서도 마찬가지)읽기 미스 처리모든 캐시가 버스를 스누핑하도록 함클린 블록에 대한 쓰기:미스로 취급됨 (sha.. [MultiCoreProgramming] Write Cache Coherence(Snooping)-1 Snooping 캐시 일관성 프로토콜 개요공유 매체(버스 또는 스위치)를 통해 캐시 컨트롤러가 모든 트랜잭션을 Snooping(감시) 하는 방식으로 작동합니다 캐시 컨트롤러는 자신이 포함한 블록에 대한 관련 트랜잭션을 Snooping(감시)합니다.일관성을 보장하기 위해 invalidate, update, supply value 제공 등의 조치를 취합니다.구체적인 동작은 블록의 상태(ex. MESI)와 프로토콜(~일 때~해라)에 따라 다릅니다.쓰기 전에 반드시 내가 쓴다는 것을 다른 프로세서(내가 쓸 데이터를 소유하고 있는)에게 알리고 써야한다.소유하고 있던 다른 프로세서들에게 Invalidate라고 알리기만 한다. (일반적으로 사용되는 방식) 소유하고 있던 다른 프로세서들에게 Write 후에 값을 알려.. [MultiCoreProgramming] 캐쉬 일관성(Write,Snooping, Directory) Cache Coherence Solution(캐쉬 일관성을 위한 해결책)이렇게는 안할 것이다...=======================================================================================캐시를 쓰지말자모든 데이터 트래픽이 메인 메모리로 향하게 되어 성능 저하가 발생할 수 있다..공유 데이터를 쓰지말자이 방법은 소프트웨어적으로 단순한 해결책을 제공하지만, 성능에 큰 페널티가 발생할 수 있다.=======================================================================================동기화 지점에서 공유 데이터 Flushing (플러싱)하자중요한 동기화 지점에서 캐시에 있는 공유 .. [MultiCoreProgramming] Cache Coherence & Cache Consistency Application parallelism은 병렬 처리 알고리즘이 굉장히 중요하다.remote latency는 컴퓨터의 구조와 프로그래머에게 달려있다. 예를 들면 보라색 선(공유메모리의 범위)은 프로그래머가 설정할 수 있다. 공유하는 메모리 범위가 넓어질 수록 속도는 느려질 수 밖에 없다. 찾아야할 곳이 넓어지는 것이니...Hardware: Caching shared dataSoftware: Restructuring the data layout to make more access local 또한 메모리를 같이 사용할 때 주의해야 될 점이 두가지가 존재한다. 1. Cache CoherenceCoherence는 여러 캐시가 같은 메모리 주소에 대한 복사본을 가지고 있을 때, 그 복사본들이 서로 일관성을 .. [MultiCoreProgramming] 멀티프로세서의 종류 0. 병렬 컴퓨터병렬 컴퓨터는(A parallel Computer) PE(processing elements)의 집합이다. PE : 큰 문제를 빠르게 풀기위해 cooperate, communicate하는 연산 유닛 ( cooperate, communicate => 서로 데이터를 주고 받는다.) 병렬 구조 (Parallel Architecture) = Computer Architecture(컴퓨터 구조) + Communication Architecture (=> 서로 데이터를 주고 받는 구조) 1. 메모리에 관한 멀티 프로세서 종류 Centralized Memory Multiprocessor (중앙 집중형 메모리 멀티프로세서, SMP)소수의 프로세서(수십 개 미만)와 코어를 갖는 시스템이다. (.. 이전 1 다음