งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

สถาปัตยกรรมแบบ SIMD ในรูปแบบอื่นๆ สไลด์ของ O. Mutlu มหาวิทยาลัย Carnegie Mellon.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "สถาปัตยกรรมแบบ SIMD ในรูปแบบอื่นๆ สไลด์ของ O. Mutlu มหาวิทยาลัย Carnegie Mellon."— ใบสำเนางานนำเสนอ:

1 สถาปัตยกรรมแบบ SIMD ในรูปแบบอื่นๆ สไลด์ของ O. Mutlu มหาวิทยาลัย Carnegie Mellon

2 Intel Pentium MMX Operations ใช่หนึ่งคำสั่งกระทำกับข้อมูลหลายๆชุดในขณะเดียวกัน  ลักษณะคล้ายๆ array processing แต่ข้อจำกัดมากกว่า  ออกแบบมาสำหรับงาน multimedia โดยเฉพาะ 2 บทความที่เกี่ยวข้อง : Peleg and Weiser, “MMX Technology Extension to the Intel Architecture,” IEEE Micro, ค่า opcode ของคำสั่งเป็นตัวบอกชนิดของข้อมูล 8 8-bit bytes 4 16-bit words 2 32-bit doublewords 1 64-bit quadword Stride มีค่าเท่ากับ 1 เสมอ

3 ตัวอย่างการประมวลผลโดยใช้ MMX 3

4 4

5 Graphics Processing Units (GPU)

6 ภาพรวมของ GPU 6

7 แนวคิดเรื่อง thread warp และ SIMT Warp คือกลุ่มของ thread ที่ประมวลผลชุดคำสั่งเดียวกัน แต่ว่าทำ บนชุดข้อมูลที่ต่างกัน  Nvidia เรียกว่าเป็นการประมวลผลแบบ SIMT (Single Instruction Multiple Thread) กลุ่มของ thread ใน warp รัน kernel ตัวเดียวกัน 7 Thread Warp 3 Thread Warp 8 Thread Warp 7 Thread Warp Scalar Thread W Scalar Thread X Scalar Thread Y Scalar Thread Z Common PC SIMD Pipeline

8 มอง loop iteration เป็น thread 8 for (i=0; i < N; i++) C[i] = A[i] + B[i]; load add store load add store Iter. 1 Iter. 2 Scalar Sequential Code Vector Instruction load add store load add store Iter. 1 Iter. 2 Vectorized Code Time Slide credit: Krste Asanovic

9 ชุดคำสั่งเดียวกันแต่ใช้ thread id เป็นตัว index เข้าหาชุดข้อมูลที่ แตกต่างกัน การเข้าถึงข้อมูลในหน่วยความจำของ SIMT Let’s assume N=16, blockDim=4  4 blocks Slide credit: Hyesoon Kim

10 ตัวอย่างโค๊ด GPU แบบง่าย for (ii = 0; ii < 100; ++ii) { C[ii] = A[ii] + B[ii]; } // there are 100 threads __global__ void KernelFunction(…) { int tid = blockDim.x * blockIdx.x + threadIdx.x; int varA = aa[tid]; int varB = bb[tid]; C[tid] = varA + varB; } CPU code CUDA code Slide credit: Hyesoon Kim

11 ตัวอย่างโปรแกรม GPU ที่ใช้งานจริง 11 Slide credit: Hyesoon Kim

12 ซ่อน latency โดยใช้ thread warps ทำสไตล์เดียวกับ fine-grained multithreading  หนึ่งคำสั่งจากหนึ่ง thread อยู่ใน pipeline ณ เวลาเดียวกัน (ไม่มีการ ทำ branch prediction)  ซ่อน latency ด้วยกันนำ warp อื่นๆ มา schedule แบบคละกันไป (interleave warp execution) มี register file รองรับจำนวน thread ใน warp ได้ ไม่มีการทำ context switching โดย OS ถ้า warp ไหน miss ใน D-Cache จะถูก นำออกไปแขวน 12 Slide credit: Tor Aamodt

13 เทียบ SIMD แบบ warp กับแบบธรรมดา SIMD ธรรมดามีเพียงหนึ่ง thread  ทำงานเป็นแบบ lock step  โปรแกรมค่อนข้างยาก ต้องรุ้จักการใช้ control register ต่างๆ (เช่น VLEN) ต้องรู้ รายละเอียดของไปป์ไลน์ SIMD แบบ warp มีหลาย thread แต่ว่าแต่ละ thread ใช้ชุดคำสั่ง เดียวกัน  ไม่ต้องทำงานแบบ lock step  โปรแกรมค่อนข้างง่าย เหมือนโปรแกรมแบบ single-thread แต่ compiler และ GPU hardware จัดการ ให้เป็น multiple-thread 13

14 การจัดการกับ branch ใน SIMD แบบใช้ warp มี 4 thread ใน warp ใช้ชุดคำสั่งเดียวกัน code block A ถึง G ตาม control flow graph ด้านล่าง แต่ทางเดินของการประมวลผลของแต่ละ thread แตกต่างกัน 14 Thread Warp Common PC Thread 2 Thread 3 Thread 4 Thread 1 B CD E F A G Slide credit: Tor Aamodt

15 การจัดการ branch ใน GPU ปรากฏการณ์ branch divergence เกิดขึ้นเมื่อ แต่ละ thread ใน warp เดียวกัน มีเส้นทางการ ประมวลผลต่างกันไป ( แม้ว่าจะมีชุดคำสั่ง เดียวกัน ) 15 Branch Path A Path B Branch Path A Path B Slide credit: Tor Aamodt

16 การจัดการกับ branch divergence (I) 16 -G1111 TOS B CD E F A G Thread Warp Common PC Thread 2 Thread 3 Thread 4 Thread 1 B/1111 C/1001D/0110 E/1111 A/1111 G/1111 -A1111 TOS ED0110 EC1001 TOS -E1111 ED0110 TOS -E1111 ADGA Time CBE -B1111 TOS -E1111 TOS Reconv. PC Next PCActive Mask Stack ED0110 EE1001 TOS -E1111 Slide credit: Tor Aamodt

17 การจัดการกับ branch divergence (II) 17 A BC D A--1111BD1110CD0001 Next PCRecv PCAmask D Control Flow Stack One per warp A; if (some condition) { B; } else { C; } D; TOS D A C B D Time Execution Sequence Slide credit: Tor Aamodt

18 การควบรวม warp (I) แนวคิดหลัก : ควบรวม thread ที่มีการ diverge ออกไปเพราะ branch เข้าด้วยกัน ทำให้เกิด warp ใหม่ Warp เพิ่มประสิทธิภาพการใช้งาน SIMD ไปป์ไลน์ และทำให้เวลา ในการประมวลผลลดลง ( นั่นคือลด cycle ในการประมวลผล ) 18

19 การควบรวม warp (II) บทความที่เกี่ยวข้อง: Fung et al., “Dynamic Warp Formation and Scheduling for Efficient GPU Control Flow,” MICRO Branch Path A Path B Branch Path A

20 ตัวอย่างการควบรวม warp 20 AABBGGAACCDDEEFF Time AABBGGAA CD EE F A x/1111 y/1111 B x/1110 y/0011 C x/1000 y/0010 D x/0110 y/0001 F x/0001 y/1100 E x/1110 y/0011 G x/1111 y/1111 A new warp created from scalar threads of both Warp x and y executing at Basic Block D D Execution of Warp x at Basic Block A Execution of Warp y at Basic Block A Legend AA Baseline Dynamic Warp Formation Slide credit: Tor Aamodt

21 NVIDIA GeForce GTX 285 ข้อมูลโฆษณาจาก NVIDIA:  240 stream processors  “SIMT execution” ข้อมูลด้านเทคนิคที่แท้จริง :  30 cores  8 SIMD functional ในแต่ละ core 21 Slide credit: Kayvon Fatahalian

22 NVIDIA GeForce GTX 285 “core” 22 … = instruction stream decode = SIMD functional unit, control shared across 8 units = execution context storage = multiply-add = multiply 64 KB of storage for fragment contexts (registers) Slide credit: Kayvon Fatahalian

23 NVIDIA GeForce GTX 285 “core” 23 … 64 KB of storage for thread contexts (registers) ในหนึ่ง warp มี 32 threads สามารถ schedule ได้ 32 warp ในขณะเดียวกัน ดังนั้นจะได้ถึง 1024 thread contexts ณ ขณะใดขณะหนึ่ง Slide credit: Kayvon Fatahalian

24 NVIDIA GeForce GTX 285 Tex … …… …… … …… … …… … …… … …… … …… … …… … …… … …… … 24 ทั้งหมด 30 cores รับได้ทั้งหมด 30,720 threads Slide credit: Kayvon Fatahalian


ดาวน์โหลด ppt สถาปัตยกรรมแบบ SIMD ในรูปแบบอื่นๆ สไลด์ของ O. Mutlu มหาวิทยาลัย Carnegie Mellon.

งานนำเสนอที่คล้ายกัน


Ads by Google