|
Interview : Intel and parallel-programming in Thailand
Parallel Programming ได้เข้ามามีบทบาทและใกล้ตัวมากขึ่นสำหรับ Developer รวมถึงนักศึกษาที่ต้องเตรียมเนื้อเตรียมตัว บทสัมภาษณ์นี้ Narisa.com ได้มีโอกาสคุยกับคุณ จิรวิทย์ ถึงแนวโน้มและความสำคัญของเรื่องนี้กัน
@NarisaCom : สวัสดีครับ วันนี้ Narisa.com ได้รับเกียรติจากคุณจิรวิทย์ จากบริษัท อินเทล ประเทศไทย มาเล่าเรื่องราวที่เกี่ยวข้องกับ Parallel processing และ Parallel programming ให้เราฟังกัน ก่อนอื่นผมขอเรียนถามเกี่ยวกับหน้าที่รับผิดชอบของคุณจิรวิทย์ ก่อนนะครับ ไม่ทราบว่า คุณ จิรวิทย์ ทำอะไรที่ Intel ครับ
 คุณจิรวิทย์ : สวัสดีครับ ผมขอแนะนำตัวผมเองเป็นลำดับแรก ผมชื่อจิรวิทย์ แม้ประสาท ตำแหน่งในอินเทลปัจจุบันคือ Strategic Enablement Manager ภายใต้หน่วยงาน Intel Software and Service Group เป็นหน่วยงานที่มุ่งเน้นกิจกรรมที่เกี่ยวข้องกับเทคโนโลยีทางด้านซอฟท์แวร์ครับ เพราะการพัฒนาด้านไอทีจำเป็นต้องพัฒนาด้านฮาร์ดแวร์และซอฟท์แวร์ไปในเวลาเดียวกันครับ
@NarisaCom : เนื่องจากพอพูดถึงผู้นำด้านตลาดในส่วน Micro Processor เราก็นึกถึงบริษัทอินเทล และเทคโนโลยีใหม่ ๆ ด้าน Micro Processor ที่ทาง Intel ได้นำเสนอให้เราได้ติดตามมาโดยตลอด ไม่ทราบว่าขณะนี้ แนวโน้มของตลาด processor จะเป็นอย่างไรบ้างครับ
คุณจิรวิทย์ : แนวโน้มการพัฒนาด้านเทคโนโลยี Micro Processor ยังคงมีเป้าหมายหลักคือ ความสามารถในการประมวลผลที่รวดเร็วขึ้น (Performance) ควบคู่ไปกับการใช้พลังงานที่ลดลง (Power Consumption) โดยใช้สถาปัตยกรรมแบบ multi-core และกระบวนการผลิตแบบ Nano Technology ครับ ถ้ามองย้อนไปในอดีตช่วง 10 กว่าปีที่ผ่านมา การเพิ่มประสิทธิภาพของซีพียู เกิดจากการเพิ่ม clock speed เพียงอย่างเดียว จากหน่วยกิโลเฮิร์ต เข้าสู่ระดับกิกะเฮิร์ต และก็ถึงจุดสูงสุดที่ความเร็วระดับเกือบ 4 กิกะเฮิร์ต แนวทางใหม่เรื่องการเปลี่ยนแปลงสถาปัตยกรรมจาก Single-core สู่ Multi-core processor จึงเป็นทางเลือกหลักในการเพิ่มพลังการประมวลผลได้โดยสิ้นเปลืองพลังงานให้ลดลง หรืออธิบายให้ง่ายขึ้นก็คือ เราลดความเร็ว clock speed เพื่อให้การใช้พลังงานลดลง แล้วเพิ่มจำนวน processor เพื่อเพิ่มความเร็วการประมวลผลครับ ในวันนี้เราเห็นซีพียูแบบ Dual-core, Quad-core เป็นเทคโนโลยีราคาที่ไม่แพง ประมาณต้นปี 2010 เราจะเห็นซีพียูแบบ 8 core พร้อมเทคโนโลยี Hyper Threading บนเครื่องเซิร์ฟเวอร์ระดับเอนเตอร์ไพร์ส (MP Server แบบ 4-ways) นั่นหมายความว่า ในเครื่องรุ่นดังกล่าว รองรับ processor ได้สูงสุด 32 cores และมี 64 threads นอกจากนี้อินเทลได้ทำการวิจัยโครงการ Tera-scale Computing โดยมีซีพียูแบบ 80 cores ที่ทำงานได้จริง นั่นหมายความว่า ในอนาคตเราจะเห็นเซิร์พเวอร์หนึ่งเครื่องที่ตั้งข้างโต๊ะทำงานคุณ แต่มีพลังการคำนวณเทียบได้กับศูนย์คอมพิวเตอร์ขนาดใหญ่ๆ ในอดีต ประโยชน์คือ พื้นที่และพลังงานที่ลดลงอย่างมากครับ
@NarisaCom : ทำไม Parallel Programming จึงเข้ามามีความสำคัญมากขึ้น และเป็นสิ่งที่ Developer ควรให้ความสนใจครับ
คุณจิรวิทย์ : จากการพูดคุย และแลกเปลี่ยนจากผู้บริหารบริษัทซอฟท์แวร์ในประเทศ ประเด็นที่น่าสนใจที่สุดอยู่ตรงนี้ครับ ผู้บริหารเหล่านี้เชื่อว่า หากแอพพลิเคชั่นที่จำหน่ายในปัจจุบันรองรับการทำงานแบบ Concurrency กับฮาร์ดแวร์แบบใหม่ จะทำให้บริษัทมีโซลูชั่นที่ได้เปรียบเหนือคู่แข่งครับ โดยการใส่ฟังก์ชั่นหรือฟีเจอร์การทำงานแบบใหม่เพิ่มมากขึ้น หรือสร้าง innovation ให้กับโปรแกรม เพราะที่ผ่านมาหลายบริษัทก็มีข้อจำกัดจากโครงสร้างโปรแกรมที่เขียนแบบ Serial Programming ไม่สามารถใช้ประโยชน์จากฮาร์ดแวร์แบบ Multi-core ไม่มากพอ ตัวอย่างความสำเร็จของบริษัทที่ได้เริ่มต้นนำเทคนิคใหม่นี้ไปพัฒนากับซอฟต์แวร์ที่มีอยู่ ผลลัพท์ที่ดีขึ้นกว่าเดิมถึง 2000% หรือเพิ่มขึ้น 20x ตัวชี้วัดความเร็วหรือ delta improvement เราสามารถเลือกได้ว่า เราสนใจที่จะปรับปรุงเรื่อง Response Time, Transaction per Second, Workload, CPU Utilization หรือนับจาก Concurrent users ที่เพิ่มขึ้นจากการปรับโค้ดแบบ Concurrency การเลือกตัวชี้วัดขึ้นอยู่กับทีมพัฒนาว่า ต้องการแก้ไขปรับปรุงในเรื่องใดเป็นลำดับก่อนหลังครับ สิ่งที่นักพัฒนาซอฟท์แวร์ ไม่ว่าระดับผู้บริหาร หรือ software engineer ควรเริ่มต้นในการเรียนรู้ และทำความรู้จักแนวโน้มการเปลี่ยนแปลงนี้ครับ การเปลี่ยนแปลงฮาร์ดแวร์จาก single-core ไปยัง multi-core เป็นแบบทางเดียว และไม่มีย้อนกลับครับ นับวันจำนวน processor core จะเพิ่มขึ้นเรื่อยๆ อุตสาหกรรมซอฟท์แวร์จากเดิมที่ได้ประโยชน์จากการเพิ่มขึ้นของ clock speed นับต่อจากนี้ไปก็ไม่มีอีกแล้ว เทรนด์การทำ Parallel Programming หรือ Concurrency ก็มีความจำเป็น ตัวอย่างเช่น ในปีหน้าเราจะเห็น framework ใหม่ที่สนับสนุนการเขียนโปรแกรมแบบ Concurrency มากขึ้น เช่นในปี 2010 ไมโครซอฟท์เตรียมออก .NET Framework 4.0 และ Visual Studio 10 โดยเพิ่มความสามารถการทำ Concurrency ครับ
@NarisaCom : ปัจจุบันมี application และ จำนวนของ developer ที่ชำนาญเรื่องการนำประสิทธิภาพของ multi-core มาออกมาใช้นั้น เพียงพอหรือไม่ครับ
คุณจิรวิทย์ : ในภาคการศึกษาตอนนี้ตื่นตัวมากครับ นักศึกษาเลือกลงวิชาที่เกี่ยวข้องกับ software architect กันมากขึ้น เพราะเป็นความรู้ใหม่ และตัวนักศึกษาเองก็ต้องการสร้างความแตกต่างด้วยการเข้าใจด้านไอทีใหม่ๆ ครับ ในภาคอุตสาหกรรมถือว่า เป็นจุดเริ่มต้นที่ดี เพราะกลุ่มบริษัทซอฟท์แวร์หลายที่ก็มีความเห็นสอดคล้องกับทิศทางของเทคโนโลยีใหม่นี้ รวมถึงเห็นโอกาสในการสร้างความได้เปรียบเหนือคู่แข่งจากการทำงานเร็วขึ้นเป็นเท่าตัว และที่สำคัญหลายบริษัทเข้าใจเป็นอย่างดีว่า เริ่มต้นลงมือแก้ไขปรับปรุงในช่วงของการพัฒนา (development cycle) ดีกว่าไปตามแก้ไขเรื่องของ performance issue ให้กับลูกค้าที่ติดตั้งและใช้งานระบบแล้ว ที่เป็นงานที่ลำบากกว่ากันมากครับ
@NarisaCom : มีอะไรบ้างที่ทาง Intel ได้ทำเพื่อตอบสนองแนวโน้มของ Parallel Processing ที่เพิ่มขึ้น ทั้งในด้าน Software Technology , เครื่องมือ , โครงการ และข้อมูลต่าง ๆ
คุณจิรวิทย์ : การทำ Parallel Processing ในปัจจุบันเป็นเรื่องที่ง่ายขึ้นครับ เนื่องจากมีชุดเครื่องมือสนับสนุนการทำงานครับ หากมีชุดเครื่องมือ บวกกับทักษะการเขียนโปรแกรมแบบ Parallel หรือ Multi-thread Programming ใช้เวลาไม่เกิน 1-2 ชั่วโมงครับ คำแนะนำจากอินเทลสำหรับบริษัทที่มีซอฟท์แวร์อยู่แล้ว คือพัฒนาจากซอฟท์แวร์ที่มีอยู่แล้ว ไม่ต้องเริ่มพัฒนาใหม่เพราะปัจจุบันเรามีชุดเครื่องมือที่ดีขึ้น ขั้นตอนแบ่งเป็นงานสองส่วนครับ เริ่มต้นที่การวิเคราะห์ปัญหาว่า โค้ดในปัจจุบัน ตรงไหนเป็น Hotspot ที่น่าจะปรับเป็น parallel code ได้ ชุดเครื่องมือที่ใช้มีเยอะครับ แต่ ISV บ้านเราอาจยังไม่เข้าถึงแหล่งข้อมูลเหล่านี้ อินเทลเรามี software tools คือ Intel Parallel Studio ที่ address ปัญหานี้ และรองรับภาษาอื่นเช่น Java, C, C++, C# (Visual Studio) ขั้นตอนที่สองคือ การมีทักษะในการปรับโค้ดที่เป็น Hotspot ให้เป็น multi-thread ตรงนี้ขึ้นกับความถนัดของทีมพัฒนาว่าจะใช้ Windows Thread ที่เป็นระดับง่ายที่สุด, OpenMP ที่มีประสิทธิภาพดีขึ้น และลำดับสุดท้ายคือ กลุ่มของ managed code ที่ใช้ C/C++ อินเทลก็มีเครื่องมือเพิ่มเติมคือ Thread Profiler, Thread Checker
@NarisaCom : สำหรับ Developer ที่สนใจ จะเข้าถึงข้อมูลเหล่านั้นได้อย่างไรครับ
คุณจิรวิทย์ : แบ่งเป็นสองส่วนครับ หากเป็นนักพัฒนาที่ทำงานในบริษัทผลิตซอฟท์แวร์ เช่น ISVs, SI, Service Provider ผมแนะนำให้ไปที่โครงการพาร์ทเนอร์โปรแกรมครับ (go to Intel Software Partner Program) หากเป็นนักพัฒนาอิสระ, นักพัฒนาในแผนกไอทีองค์กรทั่วไปที่ไม่ใช่บริษัทผลิตซอฟท์แวร์ ISVs และบุคคลที่สนใจ สามารถเข้าร่วมโครงการสำหรับนักพัฒนา (go to Intel Software Network)
@NarisaCom : สำหรับ Developers ที่สนใจเรื่อง Parallel Processing ต้องมีความรู้ หรือต้องเตรียมตัวศึกษาเรื่องอะไรบ้าง และจะศึกษาได้จากที่ไหนบ้างทั้งที่เป็น Online และสื่ออื่นๆ ได้อย่างไร
คุณจิรวิทย์ : ข้อมูลการอบรมแบบออนไลน์, blog รวมถึงการดาวน์โหลดชุดเครื่องมือ การแก้ไขปัญหาผ่านออนไลน์คอมมูนิตี้ สามารถไปได้ทั้งสองที่คือ เวปไซต์ Intel Software Partner Program (มีเจ้าหน้าที่ Helpdesk ให้การสนับสนุน) และที่ Intel Software Network นอกจากนี้ยังมี online resources อื่นๆที่น่าสนใจ เช่นที่ CNET Network (การอบรมออนไลน์) และที่ go-Parellel.com
@NarisaCom : ในประเทศไทยนั้น อินเทล มีกิจกรรมและโครงการอะไรบ้างครับ ที่จะช่วยส่งเสริมให้ developer ในบ้านเรามีความเข้าใจและชำนาญเรื่อง Parallel Programming มากขึ้น
คุณจิรวิทย์ : การให้การฝึกอบรมเป็นเรื่องที่สำคัญครับ อินเทลได้รับความร่วมมือกับสถาบันการศึกษา และซอฟท์แวร์พาร์คประเทศไทยในการจัดการอบรมทุกไตรมาส ไม่ว่าในรูปแบบการอบรมกับผู้เชี่ยวชาญจากอินเทล หรือการจัดสัมมนาแบบ workshop เพื่อให้ผู้รับการอบรมนำกลับไปทำงานได้จริง ครั้งหน้าเรากำหนดไว้ช่วงปลายเดือนมิถุนายน ที่อาคารซอฟท์แวร์พาร์ค ครั้งนี้เราจะประชาสัมพันธ์งาน และมีกิจกรรมร่วมกันกับทาง Narisa.com ด้วยครับ
@NarisaCom : และสุดท้าย คุณจิรวิทย์ คิดว่าหากจะเริ่มศึกษาตั้งแต่วันนี้ ควรเริ่มจากช่องทางใดบ้างครับ
คุณจิรวิทย์ : ครับ เริ่มต้นด้วยการเรียนรู้ผ่านช่องทางต่างๆ ที่อินเทลได้เตรียมจัดไว้ ทั้งการอบรมผ่านระบบออนไลน์, แลกเปลี่ยน และศึกษาจาก online resource เพื่อเตรียมความพร้อม ที่สำคัญคือ ลองคิดดูว่า หากเราทำการ optimize ได้ดีขึ้น คุณต้องการพัฒนาฟีเจอร์ หรือนวัตกรรมใหม่ให้กับซอฟท์แวร์อย่างไร เพราะนั่นคือ เป้าหมายสูงสุดของการพัฒนาซอฟท์แวร์ครับ
@NarisaCom : ขอบคุณ คุณจิรวิทย์ มากครับ ที่สละเวลามาเล่า และนำความรู้หลายอย่างมาฝากกับเพื่อนๆ ที่ Narisa.com ในวันนี้
คุณจิรวิทย์ : ขอบคุณเช่นกันครับ
กิจกรรมร่วมระหว่าง บริษัท อินเทล ประเทศไทย และ Narisa.com
สำหรับเพื่อน ๆ ที่เริ่มสนใจใน parallel-programming และสนใจว่า กิจกรรมที่ Narisa.com ได้มีร่วมกับ Intel มีอะไรบ้าง ผมขอสรุปเป็นดังนี้นะครับ
1. เรื่อง training ซึ่งจะมีการจัด Technical training ในวันพฤหัสบดีที่ 25 มิถุนายน 2552 ( Thursday 25 June 2009 ) ซึ่ง Narisa.com ได้ที่นั่งมา 2 ที่นั่งครับ หากเพื่อน ๆ ท่านในสนใจกรุณาส่ง PM มาที่คุณ Kouprex โดยแจ้งว่า " ต้องการเข้าร่วมการอบรมกับ Intel " นะครับ โดยมีกติกาเบื้องต้นดังนี้ 1.1. ให้สิทธิกับ Topgun และ Star ก่อน 1.2. ภายในวันที่พุธที่ 18 มิถุนายน 2552 หากไม่มี Topgun และ star แสดงความจำนงมาหรือส่งมาแล้วแต่ขอสละสิทธิ หรือไม่สามารถเข้าร่วมได้ เราขอให้สิทธิกับเพื่อน ๆ ท่านอื่นที่ส่ง PM มาก่อน ที่ kouprex 1.3. และที่สำคัญ หลังจาก Training แล้ว ต้องมี blog หรือบทความกล่าวถึงสิ่งทีได้รับจากการ training ที่มีความยาวไม่น้อยกว่า 1 หน้า A4
หัวข้อรายละเอียดของการ Training สามารถดูรายละเอียดได้จาก Narisa.com Event calendar งานอบรมนี้ผู้เข้าอบรมจะได้มีโอกาสเจอกับคุณ Milind Hanchinmani ซึ่งปัจจุบัจทำงานเป็น Engineering Manager ที่ Intel Software and Service Group/DRD-APAC ซึ่งคุณ Milind Hanchinmani ก็มีประสบการณ์ที่เกี่ยวข้องกับเรื่องนี้มากว่า 14 ปีซึ่งเป็นโอกาสที่น่าสนใจทีเดียวครับ
2. และของเล่น ๆ เล็ก ๆ น้อย ๆ จากทาง Intel สำหรับเพื่อน ๆ ที่ register ที่ " http://www.intel.com/partner/ " และได้แจ้ง ทาง PM กับ Kouprex ว่า “ ได้สมัคร Intel Software Partner Program ที่ www.intel.com/partner แล้วครับ “ สำหรับของที่เราพูดถึงน่าตาจะเป็นดังด้านล่างครับ ซึ่งจะมีทั้งหมดจำนวน 10 ชิ้นครับ หน้าตาเป็นดังนี้ครับ

และก็เช่นเดียวกัน First-come, First-served ท่านใดสมัครแล้วและได้แจ้งชื่อ ทาง Narisa.com จะได้รับการติดต่อกลับ เพื่อขอรายละเอียดเพิ่มเติมในการจัดส่งของต่อไปครับ
ทางทีมงาน Narisa.com ขอขอบคุณ คุณจิรวิทย์ มากครับ สำหรับความรู้ และแนวคิดที่น่าสนใจยิ่ง ซึ่งทางทีมงานของเราก็หวังว่า คงเป็นประโยชน์กับเพื่อนๆ สมาชิกไม่มากก็น้อยนะครับ
หากเพื่อนๆ ท่านใดอยากให้ทางทีมงานสัมภาษณ์สมาชิกท่านใด ท่านสามารถส่ง PM มาทางคุณ Kouprex หรือจะ post ไว้ที่ Narisa Feedback Forum ก็ได้เช่นกันครับ
ขอบคุณครับ
|