HPC Concept Map

HPC บทที่ 1–10: แผนผังและการคำนวณ

ตั้งแต่ ALU ในคอร์เดียวไปจนถึงซูเปอร์คอมพิวเตอร์ทั้งระบบ แท็บแผนผังใช้ดูความเชื่อมโยง แท็บการคำนวณสอนวิธีคิดโจทย์ตัวเลขแบบไม่ใช้เครื่องคิดเลข

เส้นทึบ = โครงสร้างหัวข้อ · เส้นประ = ความเชื่อมโยงข้ามหัวข้อ

เรื่องเดียวกันทั้งวิชา: จากคอร์เดียวสู่ซูเปอร์คอมพิวเตอร์

อ่านตามลำดับนี้จะเห็นว่าแต่ละบทแก้ปัญหาที่บทก่อนหน้าทิ้งไว้ คลิกคำที่ขีดเส้นใต้เพื่อเปิดโหนดนั้นบนแผนผัง

    ตารางเปรียบเทียบที่มักออกสอบ

    สรุปความต่างของคู่แนวคิดที่สับสนกันบ่อย ตัวเลขขนาดและเวลาเป็นค่าโดยประมาณของ CPU ยุคปัจจุบัน ใช้เพื่อเทียบลำดับขนาดเท่านั้น

    ลำดับชั้นหน่วยความจำ

    ระดับขนาดโดยประมาณLatency โดยประมาณใช้ร่วมกัน?Balance (W/F)
    Registerหลายสิบตัว ต่อคอร์0–1 cycleส่วนตัวของแต่ละคอร์/เธรด—
    L1 Cache32–64 KB ต่อคอร์ (แยก L1D/L1I)~4 cycles (~1 ns)ส่วนตัวของคอร์cache: 0.5–1.0
    L2 Cache256 KB – ไม่กี่ MB~10–15 cyclesส่วนตัว หรือแชร์ 2 คอร์
    L3 Cacheหลายสิบ MB ต่อชิป~40–60 cyclesแชร์ทุกคอร์ในชิป
    Main memoryหลาย GB – TB~100 ns (หลายร้อย cycles)แชร์ทั้งซ็อกเก็ต/ทั้งเครื่อง0.03–0.5
    Interconnect—µs (IB ~4 µs, GigE ~76 µs)ข้ามเครื่อง0.0001–0.02

    ช่วง Balance มาจาก Table 3.1 ในบทที่ 3 ส่วนค่า latency ของเครือข่ายมาจากผลวัด PingPong ในบทที่ 4

    SIMD · Vector · MIMD

    SIMD (คำสั่งในคอร์)Vector processorMIMD
    หลักการ1 คำสั่ง ทำกับ 2–16 ค่าใน register กว้าง1 คำสั่ง ทำกับเวกเตอร์ยาวหลายร้อยค่า ผ่าน pipeline หลาย trackหลายคำสั่งอิสระ ทำกับข้อมูลคนละชุด
    ตัวอย่างSSE, AVX, AVX-512, ARM SVENEC SX-8, CrayMulticore CPU, cluster
    ชอบข้อมูลต่อเนื่อง stride-1 ที่อยู่ใน cacheเวกเตอร์ยาว โหลดตรงจาก memoryงานแบ่งเป็นส่วนได้
    การเขียนโปรแกรมcompiler vectorize, NumPycompiler vectorize (strip-mining)OpenMP, threads, MPI (SPMD)

    UMA · ccNUMA · Distributed memory

    UMA (SMP)ccNUMADistributed
    Address spaceเดียว (shared)เดียว (shared ทางตรรกะ)แยกแต่ละ process/node
    หน่วยความจำก้อนเดียว เวลาเข้าถึงเท่ากันทุกที่กระจายตาม locality domain: local เร็ว, remote ช้ากว่าแต่ละเครื่องมีของตัวเอง เข้าถึงข้ามเครื่องตรง ๆ ไม่ได้
    เชื่อมกันด้วยchipset / FSBHyperTransport, Infinity Fabric, QPI/UPI, NUMALinkNetwork (InfiniBand, Ethernet, Tofu)
    Coherenceต้องมี (MESI)ต้องมี (cc = cache-coherent)ไม่ต้อง
    ขยายได้น้อย (bandwidth ร่วม)ปานกลาง (ไม่กี่ซ็อกเก็ต)มากที่สุด (Fugaku 158,976 nodes)
    โปรแกรมOpenMP, threadsOpenMP + ระวัง placementMPI

    Multicore · Multithreaded CPU · Multithreading

    Multicore CPUMultithreaded CPU (SMT)Multithreading (ซอฟต์แวร์)
    คืออะไรหลายคอร์จริงในชิปเดียว1 คอร์ เก็บสถานะของ 2+ เธรด ใช้ ALU ร่วมกันโปรแกรมสร้างหลายเธรดใน process เดียว
    อยู่ระดับฮาร์ดแวร์ (ชิป)ฮาร์ดแวร์ (ในคอร์)ซอฟต์แวร์ (OS/โปรแกรม)
    แชร์อะไรL3, memory interfaceexecution units, L1/L2, pipelineหน่วยความจำของ process (heap, globals)
    ได้อะไรpeak FLOPS เพิ่มตามจำนวนคอร์เติม pipeline bubble ไม่ได้เพิ่ม peakใช้หลายคอร์/เธรดฮาร์ดแวร์พร้อมกัน

    OpenMP · MPI · Python

    OpenMPMPIPython threadingPython multiprocessing
    หน่วยทำงานthreadsprocesses (ranks)threadsprocesses
    หน่วยความจำshareddistributed (ของใครของมัน)sharedแยกกัน
    สื่อสารโดยอ่านเขียนตัวแปรร่วม + syncSend/Recv, Bcast, Reduceตัวแปรร่วม + Lock/EventIPC, Queue, Pool.map
    ใช้กับเครื่องเดียว (multicore/NUMA)cluster, หรือเครื่องเดียวก็ได้งาน I/O-bound, GUIงาน CPU-bound
    จุดต้องระวังrace, false sharing, scheduledeadlock, ต้นทุน latencyGIL ทำให้ CPU-bound ไม่เร็วขึ้นใช้หน่วยความจำมาก, overhead สูง

    ตัวอย่างคำนวณ Balance: ทำไมโค้ดส่วนใหญ่ได้ไม่ถึง peak

    Vector triad A(i) = B(i) + C(i)*D(i) ทำ 2 flops ต่อรอบ และต้องอ่าน B, C, D (3 words) กับเขียน A (1 word) รวม 4 words หรือ 5 words ถ้านับ write-allocate ด้วย ดังนั้น code balance Bc ≈ 2–2.5 W/F

    ชิป A64FX ของ Fugaku มี peak ประมาณ 3,072 GFlops/s (48 คอร์ × 2 GHz × 32 flops/cycle) และมี HBM2 ประมาณ 1,024 GB/s = 128 GWords/s จึงได้ Bm ≈ 128 / 3072 ≈ 0.042 W/F

    lightspeed l = min(1, Bm/Bc) ≈ 0.042 / 2 ≈ 0.02 แปลว่า triad ที่ข้อมูลใหญ่เกิน cache จะได้ประมาณ 2% ของ peak เท่านั้น ตัวคุมความเร็วคือ bandwidth ไม่ใช่ ALU ผลวัด Stream triad ในสไลด์ (830+ GB/s) ก็สอดคล้องกับข้อนี้

    ตัวเลข peak และ bandwidth ของ A64FX เป็นค่าโดยประมาณจากสเปกที่เผยแพร่ ใส่ไว้เพื่อให้เห็นวิธีคิด