Announcement

Collapse
No announcement yet.

More core กับ More AVX คุณคิดว่าอันไหนจะมีอนาคตกว่ากัน?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • More core กับ More AVX คุณคิดว่าอันไหนจะมีอนาคตกว่ากัน?

    ขอเริ่มจากสรุปคร่าวๆถึงการพัฒนา CPU ในระยะ 3 ปีมานี้... AMD เน้นเพิ่มคอร์อย่างมาก จน Intel ต้องยอมเพิ่มคอร์มาแข่งด้วย แต่ Intel ก็ยังพยายามจะไม่เพิ่มคอร์ โดยใน CPU รุ่นต่อๆไปจะสู้ด้วย AVX ที่กว้างขึ้นแทน (Ice Lake เป็นต้นไปจะรองรับ AVX 512 บิต)

    2020-01-26 Zen IPC.jpg

    อย่างที่ทราบกัน ว่าการพัฒนา CPU ให้เพิ่มคล็อกได้สูงๆนั้นทำได้ยาก แต่ละเจนเพิ่มคล็อกได้แค่นิดหน่อย ส่วนการปรับปรุงสถาปัตยกรรมให้มี IPC สูงขึ้นก็ไม่ง่ายเช่นกัน เพราะมันคือการมองหาจุดที่เป็นคอขวดใน CPU แล้วปรับปรุงมัน โดยต้องระวังไม่ไปสร้างคอขวดอื่นๆเพิ่มเข้ามา และระวังไม่ให้เพิ่มพื้นที่ Die หรือเพิ่มการใช้พลังงานมากเกินไป และถึงแม้จะทำสำเร็จด้วยดี ก็ยากจะเพิ่มสมรรถนะในแบบก้าวกระโดด (ยกเว้นบางยุคเช่น Excavator --> Zen ที่เปลี่ยนสถาปัตยกรรมใหม่ โดยตั้งเป้าเพิ่ม IPC ไว้ถึง 40% แต่ทำได้ทะลุเป้าที่ 52%) สุดท้ายก็มาสู่วิธีที่โปรแกรมเมอร์ต่างไม่ชอบ นั่นคือ "เพิ่มคอร์" กับ "เพิ่มชุดคำสั่ง"

    2020-01-26 Multithread.jpg

    ทั้งสองวิธีคือความพยายามที่จะรองรับการประมวลผลแบบขนาน โดยการเพิ่มคอร์จะขนานในแบบ Task-level โดยแบ่งงานออกเป็นงานย่อยๆแล้วประมวลผลไปพร้อมๆกัน ส่วนการเพิ่มชุดคำสั่งจะขนานในแบบ Instruction-level โดยเมื่อจัดข้อมูลเป็นชุดๆตามรูปแบบที่รองรับ (เช่น AVX ก็ต้องจัดข้อมูลในรูปเวกเตอร์) จะทำให้ประมวลผลข้อมูล "ทั้งชุด" ได้ในคำสั่งเดียว จากเดิมที่ต้องประมวลผลข้อมูลทีละตัว ซึ่งทั้งการเพิ่มคอร์และชุดคำสั่งต่างก็เพิ่มสมรรถนะได้มหาศาล แต่ก็ต้องแลกมาด้วยความเครียดของโปรแกรมเมอร์ที่ต้องเขียนโปรแกรมให้รองรับมัน และแก้บักที่เกิดจากมัน

    แล้วคุณคิดว่าวิธีไหนดูจะมีอนาคตมากกว่ากัน?

  • #2
    ท่านนกแสก ดูการตั้งกระทู้ของท่านแต่ละเรื่อง ระบบการคิดของท่าน
    ท่านเป็นคนที่มีสติปัญญามากเลย
    ผมแอบอ่านเอาความคิดของท่าน มาคิดต่อยอดต่อไปได้เรื่อยๆ เลย

    ส่วนเรื่องให้ถามเรื่องความเห็น ผมไม่ขอตอบ
    ผมก็จะแอบอ่านท่านอื่นที่มีความเห็นอย่างไรบ้าง อีกเช่นกัน
    มาสรุปในใจอีกที
    Last edited by Dasd; 26 Jan 2020, 07:46:19.

    Comment


    • #3
      more core
      ง่ายสำหรับทุกระดับ ตั้งแต่ผู้ผลิตถึงผู้พัฒนาซอฟท์แวร์ สามารถทำซอฟท์แวร์มัลติคอร์มัลติเธรด (โปรแกรมเฉพาะทาง) หรือ ซิงเกิ้ลเธรดแบบพูลใหญ่ๆ (อย่างเกมส์)
      การพัฒนาซอฟท์แวร์ไม่ต้องปรับเปลี่ยนมากนัก ขอแค่ผู้ผลิตซีพียูเพิ่มคล็อคเพิ่ม ipc ให้มากขึ้นแค่นั้น
      แต่การพัฒนาซอฟท์แวร์ให้เรียกใช้หัวใช้หางให้ครบๆ มันก็มีความยากในตัวของมันอยู่ (ส่วนใหญ่ก็เขียนแบบซิ้งเกิลเธรดแบบขนาน มากกว่ามัลติเธรดแท้ๆ)

      avx
      - ไม่ว่าจะ 256 หรือ 512 ผู้พัฒนาซอฟท์แวร์ก็ต้องเขียนซอฟท์แวร์ให้รองรับด้วย ไม่เขียนให้เรียกใช้ชุดคำสั่ง avx ซีพียูก็เอาไปใช้ไม่เป็นหรอกน่ะ
      (แต่บางกลุ่มก็โม้ โดยที่ไม่รู้ว่าต้องเขียนซอฟท์แวร์ให้เรียกใช้ด้วย คิดแค่ว่ามีแล้วเดี๋ยวซีพียูก็จัดการประมวลผลเอง)
      - ตอนนี้โปรแกรมบ้านๆ โปรแกรมสามัญประจำบ้าน มีตัวไหนเรียกใช้ avx 256 บ้าง ยิ่้ง 512 ยิ่งน้อยเข้าไปใหญ่ อย่าลืมว่า ซีพียู ส่วนใหญ่ในโลก ไม่ได้รองรับ avx 256/512 ทุกตัว
      (อย่าเอาว่าตัวเองใช้รุ่นใหม่แล้วคนส่วนใหญ่จะใช้ซีพียูรุ่นใหม่เหมือนตัวเองซะทั้งหมด)
      - การพัฒนาซอฟท์แวร์ให้รองรับ avx 256/512 มันเสียเวลา เพิ่มต้นทุนในการพัฒนาซอฟท์แวร์ ทั้งเงิน ทั้งเวลา (ความยากก็เป็นส่วนนึง)
      - avx 512 คงได้เห็นในซอฟท์แวร์พวก deep learning เสียมากกว่า
      Last edited by Crazy_O; 26 Jan 2020, 11:33:48.

      Comment


      • #4
        ชอบรูปหมา่ครับ เห็นภาพมากเลย

        Comment


        • #5
          ถ้าโปรแกรมออกแบบมาให้เรียกใช้ชุดคำสั่งทำงานได้ ความต้องการพลังในการประมวลผลก็ลดลง

          จำนวน core กับชุดคำสั่งเป็นของที่ต้องพัฒนาคู่ๆกันไปครับ

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

          ชุดคำสั่ง AVX นั้นไม่ค่อยมีใครเขียนมาเรียกใช้เลยโดยเฉพาะโปรแกรมทั่วๆไปที่เราใช้งาน แต่ถ้าทิศทางความต้องการมันไร้ความจำเป็นอย่างสิ้นเชิง ผมก็ไม่รู้ว่าองค์กรมูลค่าหลายพันล้านจะสิ้นคิดไปทำไม ? หรือจริงๆเพราะเราไม่รู้ต่างหาก ?

          Comment


          • #6
            Originally posted by Crazy_O View Post
            .
            .
            .
            .
            - avx 512 คงได้เห็นในซอฟท์แวร์พวก deep learning เสียมากกว่า
            สุดท้ายแล้วเขียนให้ GPU รันง่ายกว่า + มีการรองรับสูงกว่าครับ

            Comment


            • #7
              Originally posted by Dasd View Post
              ท่านนกแสก ดูการตั้งกระทู้ของท่านแต่ละเรื่อง ระบบการคิดของท่าน
              ท่านเป็นคนที่มีสติปัญญามากเลย
              ผมแอบอ่านเอาความคิดของท่าน มาคิดต่อยอดต่อไปได้เรื่อยๆ เลย

              ส่วนเรื่องให้ถามเรื่องความเห็น ผมไม่ขอตอบ
              ผมก็จะแอบอ่านท่านอื่นที่มีความเห็นอย่างไรบ้าง อีกเช่นกัน
              มาสรุปในใจอีกที
              เว่อร์ไปครับ พวกนักเขียนเก่งๆในสื่อ IT ของฝรั่งนี่สิเปรื่องจริง เซียนคอมพ์บางท่าน (คนไทย) ที่ผมตามดูใน Youtube ก็เก่งเว่อร์ ผมเทียบคนพวกนั้นไม่ติดเลย

              Comment


              • #8
                ตอนนี้ intel อยู่กึ่งกลางสงครามครับ
                ชุดคำสั่ง AVX ยอดเยี่ยมแต่ตอนนี้โดน Cuda กินเรียบในองค์กรเซิฟเวอร์ วิทยาศาสตร์ deep learning
                และ cpu คอร์เทรดเน้นๆปริมาณแรงควายก็สู้ Amd ไม่ได้ต่อให้แรงกว่าแต่น้อยกว่าก็ไม่ไหว

                Amazon AWS ตอนนี้ใช้ CPU Amd+Gpu ของ nvidia ที่เป็น cuda core ครับ
                หลายเซิฟcloud ก็ใช้แบบนี้ก็ แรงเถื่อนๆ ไปสบายไปไม่ต้องไปcode เยอะมากมาย

                AMD ตอนนี้สังเกตว่าการ์ดจอสู้ไม่ได้เลยเน้นแค่เกมเน้นๆตอนนี้เป็นตลาด consumer

                Comment


                • #9
                  Originally posted by Crazy_O View Post
                  more core
                  ง่ายสำหรับทุกระดับ ตั้งแต่ผู้ผลิตถึงผู้พัฒนาซอฟท์แวร์ สามารถทำซอฟท์แวร์มัลติคอร์มัลติเธรด (โปรแกรมเฉพาะทาง) หรือ ซิงเกิ้ลเธรดแบบพูลใหญ่ๆ (อย่างเกมส์)
                  การพัฒนาซอฟท์แวร์ไม่ต้องปรับเปลี่ยนมากนัก ขอแค่ผู้ผลิตซีพียูเพิ่มคล็อคเพิ่ม ipc ให้มากขึ้นแค่นั้น
                  แต่การพัฒนาซอฟท์แวร์ให้เรียกใช้หัวใช้หางให้ครบๆ มันก็มีความยากในตัวของมันอยู่ (ส่วนใหญ่ก็เขียนแบบซิ้งเกิลเธรดแบบขนาน มากกว่ามัลติเธรดแท้ๆ)

                  avx
                  - ไม่ว่าจะ 256 หรือ 512 ผู้พัฒนาซอฟท์แวร์ก็ต้องเขียนซอฟท์แวร์ให้รองรับด้วย ไม่เขียนให้เรียกใช้ชุดคำสั่ง avx ซีพียูก็เอาไปใช้ไม่เป็นหรอกน่ะ
                  (แต่บางกลุ่มก็โม้ โดยที่ไม่รู้ว่าต้องเขียนซอฟท์แวร์ให้เรียกใช้ด้วย คิดแค่ว่ามีแล้วเดี๋ยวซีพียูก็จัดการประมวลผลเอง)
                  - ตอนนี้โปรแกรมบ้านๆ โปรแกรมสามัญประจำบ้าน มีตัวไหนเรียกใช้ avx 256 บ้าง ยิ่้ง 512 ยิ่งน้อยเข้าไปใหญ่ อย่าลืมว่า ซีพียู ส่วนใหญ่ในโลก ไม่ได้รองรับ avx 256/512 ทุกตัว
                  (อย่าเอาว่าตัวเองใช้รุ่นใหม่แล้วคนส่วนใหญ่จะใช้ซีพียูรุ่นใหม่เหมือนตัวเองซะทั้งหมด)
                  - การพัฒนาซอฟท์แวร์ให้รองรับ avx 256/512 มันเสียเวลา เพิ่มต้นทุนในการพัฒนาซอฟท์แวร์ ทั้งเงิน ทั้งเวลา (ความยากก็เป็นส่วนนึง)
                  - avx 512 คงได้เห็นในซอฟท์แวร์พวก deep learning เสียมากกว่า
                  เห็นด้วยครับ การรองรับ multi core มันยืดหยุ่นกว่า การรองรับ AVX จริงๆ เพียงแต่บางงานมันคำนวณตัวเลขหนักมาก จนการเพิ่มคอร์ก็เอาไม่อยู่


                  Originally posted by devilblaze View Post
                  ถ้าโปรแกรมออกแบบมาให้เรียกใช้ชุดคำสั่งทำงานได้ ความต้องการพลังในการประมวลผลก็ลดลง

                  จำนวน core กับชุดคำสั่งเป็นของที่ต้องพัฒนาคู่ๆกันไปครับ

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

                  ชุดคำสั่ง AVX นั้นไม่ค่อยมีใครเขียนมาเรียกใช้เลยโดยเฉพาะโปรแกรมทั่วๆไปที่เราใช้งาน แต่ถ้าทิศทางความต้องการมันไร้ความจำเป็นอย่างสิ้นเชิง ผมก็ไม่รู้ว่าองค์กรมูลค่าหลายพันล้านจะสิ้นคิดไปทำไม ? หรือจริงๆเพราะเราไม่รู้ต่างหาก ?
                  AVX เป็นชุดคำสั่งที่ทรงพลังมาก ขนาดที่ว่าหลายคนไปเทียบกับการคำนวณด้วย GPU (CUDA, OpenCL) เลยครับ จริงๆสองอย่างนี้ใช้ประโยชน์ด้านเดียวกัน นั่นคือ "คำนวณข้อมูลคราวละมากๆด้วยคำสั่งซ้ำๆเพียงไม่กี่คำสั่ง" แต่ AVX กับ GPU ก็มีจุดแข็งและข้อจำกัดต่างกัน
                  - AVX ใช้ RAM ระบบที่อาจเพิ่มได้มากกว่า 128GB จึงรองรับข้อมูลขนาดมหาศาลได้ (ได้เปรียบในงาน Big Data) ส่วน RAM ของการ์ดจอ แค่ 32GB ก็ยากแล้ว
                  - GPU สร้างมารองรับตัวเลขทศนิยมแบบ Float (32bit) เป็นหลัก และกราฟฟิกเกมก็ใช้ตัวเลขประเภทนี้ แต่พอเจอตัวเลขแบบ Double (64bit) จะคำนวณช้ากว่า Float หลายเท่า
                  - AVX รองรับตัวเลขได้ยืดหยุ่นตั้งแต่ 8bit ยัน 128bit เช่นกรณี AVX256 จะประมวลผลเลข 64bit ได้คราวละ 4 ตัว (64x4 = 256)
                  - GPU สามารถเพิ่มการ์ดลงในเครื่องได้ง่ายๆ ตามจำนวนสล็อต PCI-e ที่มีอยู่
                  - GPU ต้องพึ่งพาไดร์เวอร์

                  Comment


                  • #10
                    Originally posted by Sumomo View Post
                    ตอนนี้ intel อยู่กึ่งกลางสงครามครับ
                    ชุดคำสั่ง AVX ยอดเยี่ยมแต่ตอนนี้โดน Cuda กินเรียบในองค์กรเซิฟเวอร์ วิทยาศาสตร์ deep learning
                    และ cpu คอร์เทรดเน้นๆปริมาณแรงควายก็สู้ Amd ไม่ได้ต่อให้แรงกว่าแต่น้อยกว่าก็ไม่ไหว

                    Amazon AWS ตอนนี้ใช้ CPU Amd+Gpu ของ nvidia ที่เป็น cuda core ครับ
                    หลายเซิฟcloud ก็ใช้แบบนี้ก็ แรงเถื่อนๆ ไปสบายไปไม่ต้องไปcode เยอะมากมาย

                    AMD ตอนนี้สังเกตว่าการ์ดจอสู้ไม่ได้เลยเน้นแค่เกมเน้นๆตอนนี้เป็นตลาด consumer
                    อาจเพราะเหตุนี้ Intel จึงต้องฮึดสู้ พัฒนา GPU ของตัวเองอีกครั้ง... แต่ตามที่ผมพูดไปตะกี้ GPU กับ AVX มีจุดเด่นต่างกัน

                    Comment


                    • #11
                      เทคโนโลนยีมันไปทาง HSA นานแล้วนะครับ ทั้ง MOBILE + server
                      ตั้งแต่ยุครุ่งเรื่องของ ARM ในช่วง 5 ปีหลังมานี้ เห็นๆว่าเมื่อปีสองปีที่ผ่านมา
                      ก็มีการพยายามเขียนโปรแกรมให้เรียกใช้ IGPU เข้ามาช่วยประมวลผล

                      ซึ่ง HSA มันสามารถ MIX cluster ของ CPU+GPU ขเ้าด้วยกันได้แล้วนี่ครับ
                      ส่วน Progreamning Framwork มันเป็น OOP over interpreter
                      แบบ JAVA ซึ่งก็อาศัย VM ในการ Complie ซึ่งถ้า VW รองรับ nativeMAchine code ตัวใหน
                      มันก็ดึงมาใช้ได้เลย

                      แนวโน้มมันไปทาง More core นานมากแล้ว ดู TASK manager สิ มันมี TASK ย่อยมากมาย
                      การมี Core มากมันจำเป็นกว่า สมัยนี้ CPU 2 core แทบไม่มีที่ยืน ปี-2 ปีข้างหน้า
                      Pentium celeron athlon ก็จะมาแบบ 4 core base แล้วตาม Roadmap

                      Comment


                      • #12
                        ผมเป็นสายsoftware นะ ตอบเลยว่าอยู่ ที่SDK จะรองรับ

                        ถ้า SDK เดิมๆไม่รองรับ ชุกคำสั่งใหม่ more core แรงกว่า แต่ถ้ารองรับแล้ว more AVX ก็แรงกว่าได้เช่นอยู่
                        ที่นี้ขึ้นอยู่กับ software ตัวนั้นแล้วละ ว่า รองรับอะไร อันนี้ต้องดู เป็น Case by Case

                        ที่นี้อยนากให้แยก เรื่องCUDA ออกมา เพราะกลุ่มเป้าหมาย ของsoftware จะใช้ AVX และ CUDA เขาแยกกัน


                        AVX แรงsoftware เฉพาะกลุ่ม
                        core แรงโดยภาพรวม

                        Comment


                        • #13
                          Originally posted by ssk View Post
                          เทคโนโลนยีมันไปทาง HSA นานแล้วนะครับ ทั้ง MOBILE + server
                          ตั้งแต่ยุครุ่งเรื่องของ ARM ในช่วง 5 ปีหลังมานี้ เห็นๆว่าเมื่อปีสองปีที่ผ่านมา
                          ก็มีการพยายามเขียนโปรแกรมให้เรียกใช้ IGPU เข้ามาช่วยประมวลผล

                          ซึ่ง HSA มันสามารถ MIX cluster ของ CPU+GPU ขเ้าด้วยกันได้แล้วนี่ครับ
                          ส่วน Progreamning Framwork มันเป็น OOP over interpreter
                          แบบ JAVA ซึ่งก็อาศัย VM ในการ Complie ซึ่งถ้า VW รองรับ nativeMAchine code ตัวใหน
                          มันก็ดึงมาใช้ได้เลย

                          แนวโน้มมันไปทาง More core นานมากแล้ว ดู TASK manager สิ มันมี TASK ย่อยมากมาย
                          การมี Core มากมันจำเป็นกว่า สมัยนี้ CPU 2 core แทบไม่มีที่ยืน ปี-2 ปีข้างหน้า
                          Pentium celeron athlon ก็จะมาแบบ 4 core base แล้วตาม Roadmap
                          ที่ ARM ผลักดัน HSA (CPU + GPU + ISP) ก็มาจากแรงหนุนของอุตสาหกรรมมือถือครับ โดยเฉพาะตลาดมือถือที่บ้ากล้องอย่างในปัจจุบัน ทำให้ ISP (Image Processor ที่ใช้สำหรับแอพกล้อง) สำคัญพอๆกับ GPU เลย และแน่นอน เมื่อผลักดัน HSA ได้สำเร็จ ชุดคำสั่งแบบ AVX ก็แทบหมดอนาคต

                          Comment


                          • #14
                            Originally posted by best0032001 View Post
                            ....
                            ... ที่นี้อยนากให้แยก เรื่องCUDA ออกมา เพราะกลุ่มเป้าหมาย ของsoftware จะใช้ AVX และ CUDA เขาแยกกัน..
                            ...
                            จริงๆแล้วทั้ง AVX และ GPU หวังเพิ่มพลังคำนวณตัวเลขเหมือนกันครับ แต่ที่กลุ่มเป้าหมายแยกกันก็เพราะทั้งสองมีข้อจำกัดต่างกัน แม้ว่างานหลายๆอย่างมันใช้ได้ทั้งคู่
                            - GPU พลังประมวลผลตัวเลขสูงขนาดที่เรนเดอร์กราฟฟิกเกมแบบเรียลไทม์ได้ และความเรียลไทม์ของมันทำให้ GPU มีแววจะเป็นอนาคตของชิพรถยนต์ไร้คนขับด้วย
                            - AVX ได้เปรียบเรื่องหน่วยความจำที่มากกว่า ผมยกตัวอย่าง ระบบแนะนำสินค้าบนร้านค้าออนไลน์ (เช่น Ebay, Lazada) มีขนาดฐานข้อมูลสินค้า 500GB+ นึกดูถ้ามีแรมมากพอ ระบบแนะนำฯแทบไม่ต้องเสียเวลาสลับไปค้นใน SAN Storage เลย ถ้าได้ลองเว็บพวกนี้ดูจะรู้ว่าระบบแนะนำของมันฉลาดใช้ได้เลย ตอบสนองเร็วด้วย ผมมองว่าในตอนนี้ AVX ตอบโจทย์ด้าน Big Data มากกว่า

                            Comment


                            • #15
                              ความรู้ล้วนๆๆ หลายท่านมาตอบก็จากสายพัฒนาโปรแกรมด้วย

                              เสียดายท่าน นกแสก ทราบไม้ว่า amd ล้มโปรเจค opteron ARM ไปแล้วใช่ไม้ครับ
                              น่าจะเหลือ ควอลคอม กับ สายจีนหลายจ้าวอย่างหัวเว่ยก็จะมาลุยใครอีก nvidia ที่จะมาลงในตลาด server arm
                              แทนช่วงนี้อินเทล ผลิตซีอ้อนส่งไม่ทัน อีปิคส์ไม่ต้องพูดผลิตได้จำกัดอยู่แล้วครับ


                              AWS ก็เพิ่ม ARM server เข้ามาในองค์กรที่ให้บริการและ
                              AWS Graviton processors deliver the best price performance for your cloud workloads, optimized for a range of general-purpose, compute, memory, and storage-intensive workloads.


                              อีกข่าวนี้ลองอ่านดู เริ่มโตกันทีละนิดละน้อยละ
                              Last edited by micronz; 28 Jan 2020, 14:20:54.

                              Comment

                              Working...
                              X