High Performance Computing

เป็นสมการง่ายๆ ที่ว่าโปรแกรมที่มี thread เดียว (single thread application) เมื่อนำไปรันบนโปรเซสเซอร์แบบ multi-core แล้วจะให้ผลลัพธ์ไม่ต่างไปจากนำโปรแกรมไปรันบนโปรเซสเซอร์ที่มี core เดียว หากอยากใช้สมรรถนะของ multi-core ให้เต็มที่ เราจำต้องออกแบบและพัฒนาโปรแกรมนี้ให้ประมวลผลแบบขนานตามไปด้วย อย่างเช่นการพัฒนาโปรแกรมให้มีมากกว่า 1 thread และให้แต่ละ thread ทำงานแยกจากกันอยู่บน core คนละหน่วย

อย่างไรก็ตาม การพัฒนาโปรแกรมแบบขนานไม่ใช่เรื่องง่าย โดยเฉพาะอย่ายิ่ง หากโปรแกรมถูกแบ่งการทำงานออกเป็นหลายๆ thread อย่างเช่นมีหลายสิบหรือหลายร้อย thread เพื่อรันบนโปรเซสเซอร์ many-core เป็นต้น เมื่อมีจำนวน thread เยอะขึ้นแล้ว การควบคุมและประสานการทำงานระหว่าง thread จนถึงขั้นตอนการดีบั๊กโปรแกรมย่อมมีความยุ่งยากตามมาด้วย และเพื่อลดความยุ่งยากดังกล่าว นักพัฒนาส่วนหนึ่งจึงอาศัยเครื่องมือหรือเฟรมเวิร์คสำหรับพัฒนาโปรแกรม อย่างเช่น OpenMP และ Intel Threading Building Blocks รวมไปถึง Intel Parallel Studio ที่เพิ่งเสนอข่าวไป

อาจจะมีคนตั้งคำถามว่า "Multi-core มีบทบาทสำคัญในงานประเภทไหนบ้าง ?" แหล่งข่าว buildera ได้ยกตัวอย่างผ่านโปรแกรม 3 ประเภทดังนี้

  1. โปรแกรมเซิร์ฟเวอร์ที่ต้องรองรับโปรเซสจำนวนมาก โปรเซสเหล่านี้เกิดจากการติดต่อของโปรแกรมไคลเอนต์​ อย่างเช่น โปรเซส HTTP และโปรเซสที่เข้าถึงฐานข้อมูล เป็นต้น multi-core สามารถรันโปรเซสได้พร้อมกันมากยิ่งขึ้นและทำให้ตอบสนองผลลัพธ์ไปให้โปรแกรมไคลเอนต์ได้เร็วขึ้นด้วย (ในศาสตร์ทางด้าน High Performance Computing เรียกว่าเป็นการเพิ่มผลลัพธ์หรือ throughput ของการประมวลผล)
  2. โปรแกรมจำลองระบบเสมือน (Virtualization) อย่างการรัน Guest OS (หรือ Virtual Machine) บน Host OS (หรือคอมพิวเตอร์จริงๆ) โดย multi-core สามารถลดการแย่งทรัพยากรประมวลผลระหว่าง Host OS กับ Guest OS ได้
  3. เกม เพราะว่าโปรแกรมเกมสามารถแบ่งการทำงานออกเป็นหลายๆหน่วยได้ (เสมือนว่าแบ่งเป็นหลายๆ thread) ตัวอย่างเช่น Game Engine ที่อยู่เบื้องหลังเกม Half Life 2: Episode Two สามารถแบ่งการทำงานของเกมเป็นหน่วยๆตามจำนวน core ของโปรเซสเซอร์ได้ ซึ่งหน่วยการทำงานเหล่านี้ได้แก่ หน่วยคำนวณแสง (lighting) และหน่วยปัญญาประดิษฐ์​ (AI) เป็นต้น โดย Game Engine นี้สามารถแบ่งการประมวลผลออกจากกันได้สูงถึง 32 หน่วย นอกจากนี้แล้ว เราจะพบว่าโปรเซสเซอร์ที่ติดตั้งบนเครื่องเกมคอลโซลอย่าง PlayStation 3 (มี 8 core) และ XBOX360 (มี 3 core) นั้นเล่นบทบาทสำคัญมาก อันส่งผลให้ Game Engine ต้องสนับสนุนการทำงานแบบขนานตามไปด้วย

แหล่งข่าวได้ทิ้งท้ายไว้ว่า หากเครื่องมือพัฒนาโปรแกรมแบบขนานสามารถตัดภาระของการควบคุม thread ออกไปได้ อนาคตตลาดของโปรเซสเซอร์ Multi-core คงเบ่งบานมากกว่านี้

ที่มา - builderau จากแหล่งข่าวมีวิดีโอคลิปบทสัมภาษณ์​ Sun และ Microsoft ถึงการพัฒนาเทคโนโลยีจาวาและ .NET บน Multi-core

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

paepod Sun, 24/08/2008 - 09:33

อยากทราบว่า AMD ได้ทำการพัฒนาเฟรมเวิร์คสำหรับพัฒนาโปรแกรมสำหรับ สำหรับ Multi-core หรือ Many-core ไหมครับ?

javaboom Sun, 24/08/2008 - 12:33

In reply to by paepod

ที่เป็น framework ของ AMD ผมไม่ทราบน่ะครับ

แต่เท่าที่ผมทราบแน่ๆคือ AMD เป็นพาร์ตเนอร์กับ PGI (เจ้าพ่อ compiler ด้าน HPC) ลองไปดูรายละเอียดได้ที่ http://www.pgroup.com มันมีทั้ง compiler และ Debugger (PGDBG) และก็ส่วนทำ analyzer+tuning ชื่อ ​Profiler (PGPROF) ใช้กับ OpenMP และก็ MPI ได้ครับ

Sivadon Chaisiri (JavaBoom)
http://javaboom.wordpress.com

polaromonas Mon, 25/08/2008 - 14:21

ไม่ค่อยรู้เรื่องงานด้านนี้ แต่อยากรู้ว่าถ้า CPU แบบ Heterogenous core อย่าง Fusion ออกมานี่ ความยุ่งยากในการเขียนโปรแกรมจะยากขึ้นไหมครับ? เพราะว่ามีทั้งระบบประมวลผลแบบ series และ parallel อยู่ด้วยกัน

ตอบแบบวิเคราห์ด้วยประสบการณ์ส่วนตัวครับ ยากไม่ยากอยู่ที่ SDK เป็นสำคัญครับ แต่โดยความคิดเห็นส่วนตัวเท่าที่เคยใช้ SDK/Framework สำหรับ Multicore (เช่น Cell SDK) ส่วนใหญ่ยังใช้งานยากสำหรับผู้ใช้เบื้องต้นอยู่ครับ โดยเฉพาะยังไม่มีพื้นด้าน parallel<BR>

*** ข้อความต่อไปนี้จะอ่านหรือไม่ก็ได้ พอดีคำถามคุณเกี่ยวข้องกับสิ่งที่ผมเพิ่งฟังมาเอง *** <BR>

ผมเพิ่งเข้าร่วมโครงการที่เขาวิจัยด้าน heterogeneous multicore เมื่อสัปดาห์ที่ผ่านมานี่เองครับ เขาไม่ได้ระบุแค่ AMD Fusion เท่านั้น แต่เขาพูดรวมๆถึง Processor ที่เป็นแบบ Fusion คือมีหลาย core และมีความสามารถหลายแบบบน package เดียวกัน <BR>

ผมฟังรู้เรื่องบ้างไม่รู้เรื่องบ้างนะครับ ภาษาอังกฤษแบบวิชาการและศัพท์แสงมากๆก็เล่นผมงงได้ คนบรรยายชื่อ Dr.Rick Goh Siow Mong ของ iHPC ที่สิงคโปร์ เขาพูดถึงแง่ scheduling โดยการที่โปรแกรมเมอร์ต้องแบ่งโปรแกรมเป็น subtask (เช่น function) จากนั้น scheduler จะตัดสินใจว่าจะนำ subtask ไหน map เข้ากับ Core ไหน (เช่น เป็น Computing core หรือ GPU Core เป็นต้น) จากนั้นก็รันอัลกอเพื่อเลือก Core ID และเลือกช่วงเวลาที่จะเอา subtask เข้าไปรันครับ จริงๆเขาอธิบายละเอียดกว่านี้ครับ อันนี้เป็น concept คร่าวๆ และสิ่งที่ต้องพึ่งพาที่สุดคือ SDK / API ที่ต้องออกแบบมาให้โปรแกรมเมอร์ระบุ subtask ของโปรแกรมว่าเน้น Computing / Graphics / Data รวมไปถึงฟังก์ชันอื่นๆเช่น function สำหรับสร้าง shared memory เพื่อติดต่อสื่อสารหรือแชร์ตัวแปรระหว่าง core และฟังก์ชันทีช่วยประสานงานระหว่าง subtask หรือ synchronization ซึ่งเป็นปัญหาชวนปวดหัวหากไม่มี framework และการออกแบบ logic ดีๆ ครับ <BR>

จากนั้นคือขั้นตอน Scheduling มันมี 2 แนวทาง คือ static (จัดการโดย compiler) และ dynamic (จัดการตอนรันไทม์) และนี่คือความยากต่อไปของงานวิจัย <BR>

Sivadon Chaisiri (JavaBoom)
http://javaboom.wordpress.com