สร้างซูเปอร์คอมพิวเตอร์ด้วยโทรศัพท์มือถือ

ไอโฟน 4 ที่ผมได้ช่วงครบรอบวันเกิดเมื่อปีก่อน

บล็อกของผมเริ่มแห้งแล้งมากขึ้นเรื่อยๆ โชคดีที่ไปเจอคำถามดีๆที่ blognone เข้าให้ ทำให้ผมมีเรื่องให้เขียน ต้องขอขอบคุณคุณ PaPaSEK ที่ตั้งคำถามดีๆไว้ใน blognone หัวข้อคำถามมีอยู่ว่า จะมีมั้ยครับที่เอา Smartphone มาพ่วงกันเป็น Supercomputer ผมได้ตอบเอาไว้แล้วที่กระทู้ต้นฉบับ  แต่ผมก็ไม่วายเว้น ขอเขียนอะไรเพิ่มเติมไว้ที่นี่ด้วยแล้วกันนะ (ผมใช้เวลาเขียนบทความตั้งแต่วันที่ผมเจอคำถามของคุณ PaPaSEK)

โทรศัพท์มือถือสมัยนี้มีสเปคที่แรงเหลือล้น เรียกว่าบางรุ่นมีสมรรถนะเทียบเคียงหรือแรงกว่าคอมพิวเตอร์เมื่อ 7-10 ปีก่อนเลยแหละ ดังนั้น จึงมีโครงการวิจัย และบรรดา geek อยู่มากมายพยายามพ่วงโทรศัพท์มือถือให้เป็นเสมือนกลุ่มคอมพิวเตอร์หรือคลัสเตอร์เพื่อช่วยกันประมวลผลงานแบบขนานบ้าง รวมไปถึงความหวังว่าจะสร้างซูเปอร์คอมพิวเตอร์กันเลยทีเดียว

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

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

เอ … ผมเกริ่นอะไรซะยาว ขอแนะนำให้ไปอ่านอีกบทความของผม เรื่อง ซูเปอร์คอมพิวเตอร์เปลี่ยนไปตามสมัย

สร้างซูเปอร์คอมด้วยโทรศัพท์มือถือ

ทีนี้เข้าเรื่องแบบไร้น้ำท่วมทุ่งกันหน่อย ผมขอเรียกโทรศัพท์มือถือสั้นๆว่า “มือถือ” แล้วกัน … ผมจะลองคำนวณแบบหยาบๆว่า เราต้องใช้มือถือกี่เครื่องถึงจะได้ซูเปอร์คอมพิวเตอร์ 1 ระบบ?

การวัดสมรรถนะการประมวลผลของคอมพิวเตอร์ เรานิยมใช้ซอฟต์แวร์ benchmark ที่ชื่อว่า Linpack โดยค่าที่ได้จากซอฟต์แวร์ตัวนี้มีหน่วยเป็น floating point operations per second (FLOPS) ซึ่งเป็นตัวบอกจำนวนคำสั่งการประมวลผลเลขทศนิยมที่ระบบคอมพิวเตอร์ที่เราวัดสมรรถนะสามารถคำนวณออกมาได้ แน่นอนว่า ยิ่งมากก็ยิ่งดี

ในทางทฤษฎี เราสามารถคำนวณจำนวน FLOPS ของโปรเซสเซอร์ได้โดยไม่ต้องพึ่ง Linkpack เราเรียกค่าดังกล่าวว่า Rpeak อย่างไรก็ดี ค่า Rpeak ก็เป็นแค่ค่าทางทฤษฎีที่ทำให้รู้สมรรถนะสูงสุดที่โปรเซสเซอร์สามารถประมวลผลได้ แต่ในทางปฎิบัติจริงแล้ว โปรเซสเซอร์สามารถประมวลผลได้ต่ำกว่า Rpeak และเราเรียกค่าที่เกิดจากการประมวลผลจริงว่า Rmax โดย Linpack ก็เป็นซอฟต์แวร์สำหรับหาค่า Rmax ของโปรเซสเซอร์นั่นเอง

เนื่องจากผมไม่มีข้อมูลว่า Rpeak ของโปรเซสเซอร์ที่มือถือใช้กันมีค่าเท่าไหร่ ผมจึงขอใช้ Rmax แล้วกันนะ และขอใช้ค่า Rmax ของโทรศัพท์มือถือตระกูล Android อย่าง Nexus One  โดย Nexus One (Froyo) มี Rmax ประมาณ 40 MFlops (มีคนอ้างไว้ในเว็บ GreenComputing) ค่านี้จะน่าเชื่อถือมากน้อยเพียงใดนั้น ผมคงรับประกันไม่ได้ ท่านใดมีมือถือ Nexus One หรือมือถือรุ่นใดๆก็ได้ สามารถเอา Linpack (Java Version) ไปวัดสมรรถนะมือถือของท่านเองได้

กลับมาที่คำถามของเราว่าเราจะสร้างซูเปอร์คอมด้วยมือถือต้องใช้มือถือทั้งหมดกี่เครื่อง ถ้าเราต้องการประสิทธิภาพเทียบกับซูเปอร์คอมพิวเตอร์ใน TOP500 ครั้งล่าสุด (หมายเหตุ TOP500 เป็นหน่วยงานจัดอันดับซูเปอร์คอมสมรรถนะสูง 500 อันดับแรกของโลก)

ซูเปอร์คอมพิวเตอร์อันดับที่ 500 มี Rmax ประมาณ 31 TFlops หรือ 31,000 GFlops หรือ  31,000,000 MFlops ถ้าสมมติว่าเราใช้มือถือ Nexus One ด้วยสมรรถนะ 40 MFlops แล้ว เราต้องใช้ Nexus One ทั้งหมด 31,000,000/40 = 775,000 เครื่อง แต่ถ้าอยากได้สมรรถนะเท่า Tienhe-1A ซึ่งเป็นซูเปอร์คอมที่เร็วที่สุดในโลกล่ะก็ เราต้องใช้ Nexus One ถึง 64,150,000 เครื่องกันเลยทีเดียว

ความเหมาะสม

ทีนี้มาลองพิจารณากันครับว่า การสร้างซูเปอร์คอมพิวเตอร์ด้วยมือถือนั้นเหมาะสมหรือเปล่า? ผมขอวิเคราะห์ตามปัจจัยเพียงแค่ 5 ปัจจัย ดังนี้

  1. ความคุ้มค่าด้านราคา – สมมติว่า Nexus One เครื่องเปล่า 1 เครื่องแบบไม่ติดสัญญามีราคาประมาณ 15,000 บาท (ราคาอาจจะถูกหรือแพงกว่านี้) ถ้าเราต้องการซูเปอร์คอมอันดับสุดท้าย (ที่มีสมรรถนะ 31 TFlops) จากมือถือรุ่นนี้ เราต้องใช้เงินอย่างน้อย 775,000 x 15,000 = 11,625,000,000 บาท (ประมาณ หนึ่งหมื่นหนึ่งพันล้านบาท) ผมบอกได้เลยว่า แพงเกินไปที่จะเอาสร้างซูเปอร์คอมพิวเตอร์ เพราะด้วยราคาที่ต่ำกว่านี้ คุณสามารถสร้างซูเปอร์คอมที่เร็วกว่าอันดับหนึ่งของโลกด้วยซ้ำ เนื่องจาก Tienhe-1A ใช้งบในการสร้างที่ 88 ล้านเหรียญ (อ้างอิงจาก wikipedia) หรือประมาณ “สองพันเจ็ดร้อยล้านบาท” กล่าวอีกนัยนึงคือ คุณใช้งบในการสร้างซูเปอร์คอมด้วยมือถือแต่ได้ซูเปอร์คอมอันดับสุดท้าย แต่ด้วยงบนี้เอาไปซื้อ Tienhe-1A ได้ 4 ระบบเลยทีเดียว (โอเค ผมเข้าใจอยู่ว่าซื้อมือถือเกือบล้านเครื่องต้องได้ส่วนลด แต่มันก็ยังแพงเกินที่จะสร้างซูเปอร์คอมอยู่ดี)
  2. คอขวด – คอขวด (bottleneck) คือ ปัญหาหลักที่ทำให้เราไม่สามารถใช้ Rpeak มาอธิบายความเร็วที่แท้จริงของคอมพิวเตอร์ได้ จึงจบที่ Rmax เพราะว่าคอมพิวเตอร์มีคอขวดที่เกิดจากบัส หน่วยความจำ และอุปกรณ์ I/O  ที่ไม่ได้เร็วไปกว่าโปรเซสเซอร์ มันจึงต้องใช้การประสานจังหวะที่ส่งผลต่อความล้าช้าทั้งหมดของระบบคอมพิวเตอร์ … ถ้าพูดถึงมือถือล่ะก็ คอขวดคือปัญหาใหญ่มหาศาล อีกทั้งหน่วยความจำหลักที่น้อยเกินไป ความเร็ว I/O ที่ช้าไป ความเร็วเครือข่ายที่ด้อยไป เอ่อ … อย่าลืมว่าซูเปอร์คอม เขาเล่นความเร็วเครือข่ายเริ่มต้นที่ 1 Gbps นะ แต่มือถือที่รองรับ WiFi ก็ได้เพียง 54 Mbps (0.054 Gbps) ต่างกันเกินไป  โดยสรุป มือถือมีคอขวดเยอะไป
  3. การพัฒนาซอฟต์แวร์ – จากปัญหาคอขวดของมือถือ ที่มือถือแต่ละเครื่องมีสเปคที่น้อยเกินไป การออกแบบซอฟต์แวร์จึงต้องพัฒนาอย่างรอบคอบ แน่นอนว่าเราไม่สามารถเอางานที่ซับซ้อนไปรันบนมือถือได้ โดยเฉพาะงานที่ต้องการหน่วยความจำมากๆ เพราะอาจจะทำให้โปรแกรมที่รันอยู่หรือตัวมือถือเองเดี้ยงก่อนได้ (หมายถึงปิดตัวเองกระทันหัน) ดังนั้น การออกแบบซอฟต์แวร์จึงเป็นงานที่ท้าทาย (ค่อนไปทางยุ่งยากและไม่น่าทำ)
  4. การประหยัดไฟ – มือถือมันประหยัดไฟกว่าคอมพิวเตอร์ เรียกว่าประหยัดไฟมากอย่างมีนัยสำคัญ และถ้าเราคำนึงความคุ้มค่าในแง่ไฟฟ้าที่สูญไปแลกกับประสิทธิภาพที่ได้มา หรือค่าที่เรียกว่า flops/watt (ยิ่งมากยิ่งดี) มือถือจัดว่าสอบผ่านในเรื่องนี้ อะ ผมสมมติว่า Nexus One กินไฟแค่ 1 วัตต์ละกัน ดังนั้น มือถือตัวนี้เอาคะแนนไป 40 MFlops/watt ส่วนคอมพิวเตอร์ที่ใช้ Intel Core i5 (มี Rmax ประมาณ 10 GFlops) สมมติกินไฟที่ 400 watt มีคะแนนที่ 10,000 MFlops / 400 = 25 MFlops/watt ดังนั้น มือถือชนะ แต่ถ้า Nexus One กินไฟ 2 วัตต์ ก็ถือว่ายังมีคะแนนเทียบเคียงคอมพิวเตอร์ — NOTE ขอเสริมจากคอมเมนต์ที่คุณ gg ได้ท้วงติง (ขอขอบคุณไว้ ณ ที่นี้ด้วยนะครับ) คือ คุณ gg ให้ข้อมูลว่า Core i5 ที่คุณ gg ได้มามีสมรรถนะ 50 GFlops ซึ่งถ้าประสิทธิภาพเป็นเช่นนี้ เราจะได้ประสิทธิภาพการใช้ไฟที่ 125 MFlops/Watt อย่างไรก็ดี ประสิทธิภาพ 50 GFlops น่าจะเป็นการคำนวณ single precision (ย้ำอีกนะว่า “น่าจะ”) ซึ่งค่า GFlops ที่ผมใช้เปรียบเทียบในบทความนี้เป็นการคำนวณ double precision
  5. การบำรุงดูแลรักษา – เมื่อเราต่อมือถือเพื่อสร้างซูเปอร์คอม นั่นแปลว่า เราต้องอุทิศมือถือเกือบล้านเครื่องมาต่อกันให้เป็นระบบเดียวกัน หมายถึง มือถือทั้งหมดที่ต่อกันควรอยู่ใกล้กัน สมมติซะว่า เราถอดแบ็ตออก แล้วใช้ adapter แล้ววางมือถือใกล้กัน  ผมสงสัยอยู่เลยว่า ต้องใช้เนื้อที่เท่าไหร่และจัดวางเครื่องยังไงให้มือถือเกือบล้านเครื่องวางอย่างเป็นระเบียบ ยังไม่ได้นึกถึงปัญหาว่าเครือข่ายที่ใช้จะต้องออกแบบมาหน้าตาอย่างไร ต้องใช้ WiFi Hotspot กี่จุดถึงจะรองรับได้??? เอ … แล้วแอดมินเขาจะดูแลมือถือยังไงให้ทั่วถึงเนี่ย (เครียดว่ะ) อย่าง Tienhe-1A ประกอบไปด้วยเซิร์ฟเวอร์ 3,584 เครื่อง (อ้างอิงจาก wikipedia) การดูแลรักษาคงไม่ง่าย แต่ถ้ามือถือเกือบล้านเครื่องที่วางในที่เดียวกันเนี่ย มันยากกว่าอย่างมีนัยสำคัญแน่นอน(ฟันธง) แต่ถ้ามองในแง่ค่าใช้จ่ายรายปีในการบำรุงรักษามือถือเกือบล้านเครื่องอาจจะน้อยกว่า Tienhe-1A เพราะ Tienhe-1A ต้องลงทุน 20 ล้านเหรียญต่อปีในการบำรุงรักษา (ประมาณ 600 ล้านบาท) แต่มือถือล้านเครื่องน่าจะมีค่าใช้จ่ายรายปีในส่วนนี้น้อยกว่า (อีกครั้งว่าผมใช้คำว่า “น่าจะ”)

โดยสรุป สร้างซูเปอร์คอมพิวเตอร์ด้วยโทรศัพท์ไม่เหมาะสม ปัญหาที่ต้องพบมันเยอะกว่าประโยชน์ที่จะได้มา อย่างไรก็ดี โทรศัพท์มือถือจะมีประโยชน์ในแง่ volunteer computing เช่น สร้างเครือข่าย Peer-to-Peer เพื่อช่วยกันประมวลผล เป็นต้น ผมเชื่อว่ากระแส volunteer computing บนเครือข่ายมือถือจะเป็นเรื่องธรรมดามากในอนาคตอันใกล้ครับ

6 thoughts on “สร้างซูเปอร์คอมพิวเตอร์ด้วยโทรศัพท์มือถือ

  1. gg says:

    i5 เครื่องนึงก็ประมาณ 50Gflops กว่า แล้วน่อ
    125 MFlops/watt perf/watt คุ้มกว่ามือถือเยอะ +__+

    • ใช่ครับ ต่อคอมตั้งโต๊ะเป็นซูปเปอร์คอมคุ้มกว่าเยอะครับ

      ค่าการใช้ไฟที่ผมใช้ในบทความเป็นค่าสมมติที่ประมาณจาก watt ของคอมตั้งโต๊ะทั้งเครื่อง แต่ถ้าคำนึงแค่ watt ที่ใช้โดยโปรเซสเซอร์อย่างเดียว ต้องยอมรับเลยว่า processor ของคอมพิวเตอร์ทั่วๆไปรวมถึงเซิร์ฟเวอร์ให้ performance/watt ชนะขาดครับ

      • gg says:

        ไอ 125 MFlops/watt นี่ผมคิดสมมติจาก400wเป็นไฟทั้งเครื่องแล้วนะครับถ้า processor อย่างเดียวยิ่ง…. +__+

    • อ่าว จริงๆด้วยครับ ผมอ่านตกหล่นเอง🙂 ขอบคุณครับที่ท้วงติงครับ

      ผมได้ข้อมูลสมรรถนะของ Core i5 จากที่ไหนซะแห่งในเน็ตว่ามันรัน double precision ได้แค่ 10 GFlops ต้นๆครับ แต่ไม่ทราบว่ารุ่นไหน อย่างไรก็ดี ผมไม่เคยวัดสมรรถนะจริงน่ะครับ ไม่ทราบว่าคุณ gg ได้สมรรถนะที่เป็น double หรือ single precision ครับ ผมไม่เคยทดสอบ Core i5 ครับ ผมก็เพิ่งรู้จากคุณ gg ว่ามันเร็ว 50 GFlops

      • gg says:

        เฮือก +__+
        ไปเห็นตามเว็บมาอะครับที่เขาทดสอบด้วยไอ SiSoft SANDRA ครับ
        http://www.tomshardware.com/charts/desktop-cpu-charts-2010/Raw-Performance-SiSoftware-Sandra-2010-Pro-GFLOPS,2409.html
        ไม่รู้โปรแกรมนี้มัน benchmarkเป็นdoubleหรือ single precisionอะครับ
        แต่เห็นมันเยอะๆ คงจะ single precision แหละมั้งครับ
        ถ้าเป็น double precision คงเหลือแค่ 10Gflops จริงๆอย่างท่านว่าแหละมั้ง
        ผมก็ไม่แน่ใจอะครับ

    • ผมก็คิดๆอยู่ เพราะผมเคยคำนวณตามหลักทฤษฎีหรือ Rpeak แล้ว ด้วยสถาปัตยกรรมของ Core i5 ได้แค่ 10 – 20 GFlops กว่าๆเอง แต่ถ้าเป็น single precision มันสามารถคูณ 4 – 8 ได้เลยสำหรับ issue คำสั่ง floating point ได้เลยครับ ยิ่งถ้าเป็น integer มันคูณ​ไม่ต่ำกว่า 10 ครับ แต่ผมเคย benchmark ตัว Nehalem X5570 ด้วย Linpack แล้วได้ 70 GFlops จาก Rpeak 93 GFlops (แบบคำนวณ​ double precision) ผมก็เลยเดาด้วยว่า Core i5 ไม่น่าจะให้ประสิทธิภาพใกล้ Nehalem

      ขอบคุณที่แชร์ประสบการณ์นะครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s