ชุดวิชาวิศวกรประมวลผลสมรรถนะสูง
High-performance Computing Engineer Module
ข้อมูลชุดวิชา
คำอธิบายรายวิชา
การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์และเกิดขึ้นพร้อมกัน อัลกอริธึมแบบกระจาย แบบจำลองระบบกระจาย ความซับซ้อนของอัลกอริทึม ภาวะพร้อมกัน การจัดกำหนดการและการส่งการประเมิน ประสิทธิภาพของระบบ ระบบไฟล์ เครื่องมือวัดประสิทธิภาพ โครงสร้างพื้นฐานแบบกระจาย การวิเคราะห์ออกแบบทดสอบและประเมินผลระบบคอมพิวเตอร์ โมเดลการเขียนโปรแกรมแบบขนาน สถาปัตยกรรมและการเขียนโปรแกรมแบบขนานและแบบกระจาย การโปรแกรมเธรด เธรดโพสิกซ์และโอเพนเอ็มพี อาร์พีซี อาร์เอ็มไอ และเอ็มพีไอ โมเดลการเขียนโปรแกรมแม็บรีดิวซ์และระบบไฟล์แบบกระจาย การจัดการคิวข้อความและภาวะติดตาย การจัดกำหนดการและการทำโหลดบาลานซ์ อัลกอริธึมการกระจายขั้นสูง การคำนวณอเนกประสงค์ในหน่วยประมวลผลกราฟิก จีพีจีพียู การประมวลผลเวกเตอร์และ การโปรแกรมเอสไอเอ็มดี การออกแบบสถาปัตยกรรมที่ปรับขยายได้ขนาดใหญ่ ไมโครเซอร์วิส การคำนวณ คลัสเตอร์ ระบบคอมพิวเตอร์ที่รองรับความผิดปกติ กรณีศึกษาจริงจากภาคธุรกิจทางการแพทย์หรืออุตสาหกรรม
Event-driven and concurrent programming; distributed algorithms; distributed system models; algorithmic complexity; concurrency; scheduling and dispatch; system performance evaluation; file systems; performance measurement tools; distributed infrastructure: analyze, design, test, and evaluate computer-based system; parallel programming models; parallel and distributed architecture and programming; threads programming : POSIX thread and OpenMP; RPC/RMI and MPI; map-reduce programming model and distributed file system; message queue and deadlock management; scheduling and load balancing; advanced distributed algorithms; general-purpose computing on graphics processing units : GPGPU; vector processing and SIMD programming; large scalable architecture design; micro-service; cluster computing; fault tolerance computer system; real case studies from medical or industrial business sectors;
ผลลัพธ์การเรียนรู้
- เข้าใจสถาปัตยกรรมคอมพิวเตอร์ ระบบปฏิบัติการและอธิบายความสัมพันธ์ขององค์ประกอบต่าง ๆ ภายในระบบคอมพิวเตอร์ได้อย่างมีเหตุผล
- เขียนโปรแกรมแบบขนานและกระจายที่มีประสิทธิภาพ และประเมินค่าสมรรถนะ (speed up and efficiency) ของโปรแกรมได้
- เข้าใจและวิเคราะห์พร้อมทั้งเขียนโปรแกรมสำหรับภาระงานแบบทับซ้อน (concurrency) และทำการแบ่งภาระงานในการประมวลผลได้อย่างเหมาะสม
- วิเคราะห์ความต้องการของระบบและออกแบบระบบคอมพิวเตอร์สมรรถนะสูง