หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Intel Math Kernel Library บน Arduino

เรียนรู้วิธีการ integrate Intel MKL library เข้ากับ Arduino workflow ที่มีความคล่องตัวสูง

โปรเจกต์ Intel Math Kernel Library บน Arduino

รายการอุปกรณ์และเครื่องมือ

1x UP2 Board
-

รายละเอียดและวิธีทำ

หมายเหตุ: บทความนี้อาจจะเก่าเกินไป โปรดไปที่ ที่นี่ สำหรับเวอร์ชันที่ใหม่กว่า

ในบทเรียนนี้ เราจะมาเรียนรู้วิธีการรวม Sketch ของคุณเข้ากับไลบรารีของ Intel ที่ถูกปรับแต่งมาอย่างดีเยี่ยมสำหรับการคำนวณทางคณิตศาสตร์ที่หนักหน่วง (หรือที่เรียกสั้นๆ ว่า MKL)

ก่อนอื่น คุณต้องมี IoT gateway ที่เหมาะสมและมีพื้นที่ว่างใน Hard disk สักไม่กี่ GB (เพราะบางครั้งไลบรารีอาจมีขนาดใหญ่) ให้ทำตามส่วน Getting Started ของ Create เพื่อตั้งค่าให้ Gateway ของคุณพร้อมใช้งาน (ตัวอย่างเช่น เลือกใช้ Ubuntu distribution)

ทำไมฉันถึงต้องการพื้นที่เยอะขนาดนี้

(หรือที่เรียกอีกอย่างว่า: วิธีที่ฉันได้เรียนรู้ที่จะรัก shared libraries)

ในโลกของ Arduino ไลบรารีคือชุดของโค้ดที่ช่วยให้คุณโต้ตอบกับฮาร์ดแวร์บางชิ้นหรือดำเนินการเฉพาะทางได้

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

การตั้งค่า Board

โดยปกติแล้วไลบรารีจะถูกส่งผ่าน package manager หรือใช้ตัวติดตั้ง (เราจะใช้อย่างหลังในตัวอย่างนี้) ขั้นแรก ให้เข้าถึง Board ของคุณผ่าน SSH โดยใช้ IP address และ username/password ที่คุณกำหนดไว้ในตอนติดตั้ง ในการทำเช่นนี้ คุณสามารถใช้ Putty (หากคุณใช้ Windows) หรือ serial terminal โดยต้องตั้งค่า Port เป็น 22 เพื่อให้การล็อกอินผ่าน SSH ทำงานได้อย่างถูกต้อง

ตอนนี้เราต้องดาวน์โหลดแพ็กเกจ MKL ให้เปิด Browser ของคุณแล้วไปที่ https://software.intel.com/en-us/mkl คลิก "Free Download" และทำตามขั้นตอนการลงทะเบียนให้เรียบร้อย เลือก "Intel Performance Libraries for Linux" และคลิกขวาที่ "Intel Math Kernel Library" จากนั้นเลือก "Copy link address" (หรือคำที่ใกล้เคียง ขึ้นอยู่กับ Browser ของคุณ)

ตอนนี้ให้เปิด SSH shell อีกครั้ง แล้วพิมพ์:

wget 

แล้ววางลิงก์ที่คุณเพิ่งคัดลอกมา กด [Enter] และการดาวน์โหลดจะเริ่มขึ้น เมื่อดาวน์โหลดเสร็จแล้ว ให้แตกแพ็กเกจโดยพิมพ์:

tar xvf l_mkl_2017* 

ลอง cd เข้าไปในโฟลเดอร์ที่แตกไฟล์ออกมา (โดยปกติจะมีชื่อเดียวกับแพ็กเกจที่ดาวน์โหลดมาแต่ไม่มีนามสกุล) แล้วพิมพ์:

./install.sh

ทำตามคำแนะนำบนหน้าจอ และหลังจากนั้นไม่กี่นาที ระบบของคุณก็จะพร้อมใช้งาน

ถึงเวลาเขียนโค้ด!

เปิด Create ด้วยตัวอย่างที่เตรียมไว้ให้ เราจะมาสาธิตฟังก์ชันที่มีประโยชน์มากของไลบรารี MKL ซึ่งช่วยในการประมวลผลโค้ดแบบขนาน (parallelizing) โดยไม่ต้องกังวลเรื่อง Threads หรืออะไรที่ใกล้เคียงกัน

ในตัวอย่างนี้ จะมีการคูณเมทริกซ์โดยใช้ฟังก์ชันที่ถูกปรับแต่งมาแล้วอย่าง cblas_dgemm ที่รวมอยู่ใน MKL ฟังก์ชันนี้ถูกปรับแต่งให้เหมาะกับแพลตฟอร์มฮาร์ดแวร์ของ Intel ที่หลากหลาย โดยใช้ฟังก์ชัน vectorization ล่าสุดที่มีอยู่ใน CPU เป้าหมาย (เช่น AVX, SSE4 และอื่นๆ)

แต่จะเกิดอะไรขึ้นถ้าเรามีสถาปัตยกรรมแบบ Multicore? เราจะเสียประสิทธิภาพไปมากเพราะฟังก์ชันทำงานเพียง Thread เดียว ทั้งที่ปัญหาที่ต้องแก้นั้นสามารถ "แยกส่วน" ออกเป็นปัญหาย่อยๆ หลายอันได้ ซึ่งเหมาะอย่างยิ่งสำหรับการทำ Parallelization

การใช้ mkl_set_num_threads จะช่วยให้เราสั่งให้ไลบรารีทำงานบนหลาย Threads (และ Cores) ได้โดยไม่ต้องออกแรงเขียนโปรแกรมเพิ่มเติมเลย

ตัวอย่างนี้จะทำการคำนวณแบบเดิมโดยใช้จำนวน Thread ต่างๆ ตั้งแต่ 1 ไปจนถึงจำนวน Core ของ CPU เป้าหมาย (อาจเป็นสองเท่าหากเปิดใช้งาน HyperThreading) และทำการทดสอบประสิทธิภาพ (benchmark) ในการทำงานแต่ละรอบ

มาปลดปล่อยพลังกัน

เมื่อพร้อมแล้ว ให้เปิด Monitor ที่แผงด้านซ้าย กด "Upload" และรอสักครู่เพื่อให้การ Upload และ Sketch เริ่มทำงาน ผลลัพธ์ของโปรแกรมจะถูกพิมพ์ออกมาที่ Monitor

เราได้เรียนรู้อะไรบ้าง?

ถ้าเราดูที่ผลลัพธ์ การทำงานบนสอง Threads จะให้ประสิทธิภาพเกือบเป็นสองเท่าเมื่อเทียบกับ Thread เดียว (แน่นอนว่าบนโปรเซสเซอร์แบบ Dual Core) ผลกระทบต่อประสิทธิภาพอาจไม่เท่ากับ x2 พอดีเป๊ะ เพราะมีขั้นตอนส่วนเกิน (overhead) เล็กน้อยเมื่อเริ่มใช้งาน Thread เพิ่มเติม และผลกระทบนี้จะมากขึ้นหากเวลาที่ใช้ประมวลผลสั้นมากๆ แต่ถ้าเวลาส่วนใหญ่ถูกใช้ไปกับการคำนวณตัวเลข ความเร็วที่เพิ่มขึ้นจะเข้าใกล้ขีดจำกัดสูงสุดตามทฤษฎี

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: intel-math-kernel-library-on-arduino-601702
2450 บาท
PromptPay QR Code

ประเมินราคาอัตโนมัติ + Reference Code

อยากได้งานคล้ายโปรเจคนี้ ให้ AI ประเมินราคาก่อน

กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ

คำถามให้ AI ประเมินแม่นขึ้น

หลังส่งฟอร์ม ระบบจะโชว์ Reference Code ให้ copy แล้วกด Add LINE เพื่อคุยต่อ ข้อมูลส่วนตัวจะไม่ถูกส่งเข้า GA4

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...