ในยุคที่การประมวลผลบน GPU บนเว็บมีการพัฒนาอย่างรวดเร็ว WebMonkeys ถือเป็นจุดสังเกตทางประวัติศาสตร์ที่น่าสนใจ ไลบรารี JavaScript นี้ ถูกออกแบบมาเพื่อทำให้การประมวลผลแบบขนานบน GPU ในเบราว์เซอร์เป็นเรื่องง่าย โดยเสนอวิธีที่ตรงไปตรงมาให้นักพัฒนาใช้พลังการประมวลผลกราฟิกโดยไม่ต้องจัดการกับความซับซ้อนของ WebGL อย่างไรก็ตาม จากการสนทนาในชุมชนเมื่อเร็วๆ นี้ พบว่าโปรเจกต์นี้ไม่ได้รับการดูแลตั้งแต่ปี 2017 ซึ่งทำให้เกิดคำถามเกี่ยวกับความเกี่ยวข้องในปัจจุบันและทางเลือกอื่นในการพัฒนาเว็บสมัยใหม่
สัญญาของการประมวลผล GPU อย่างง่าย
WebMonkeys ถูกสร้างขึ้นด้วยแนวทางที่ตรงไปตรงมาสำหรับการประมวลผลบน GPU มันช่วยให้นักพัฒนาสามารถสร้างงานแบบขนานหลายพันงานบน GPU โดยใช้ API แบบเรียบง่ายที่อิงกับการดำเนินการบนอาร์เรย์ ต่างจากการเขียนโปรแกรม WebGL แบบดั้งเดิม ซึ่งต้องใช้ความรู้อันซับซ้อนเกี่ยวกับการทำ texture mapping และการเขียนโปรแกรม shader โดย WebMonkeys ได้ลดทอนความซับซ้อนเหล่านี้ด้วยการดำเนินการคล้ายอาร์เรย์อย่างง่าย
ไลบรารีนี้ทำงานโดยแปลงการดำเนินการอาร์เรย์ JavaScript เป็นโค้ด WebGL shader จัดการกระบวนการซับซ้อนในการแปลงข้อมูลระหว่างรูปแบบ CPU และ GPU นั่นหมายความว่านักพัฒนาสามารถเขียนโค้ดเช่น monkeys.work(16, nums(i) := nums(i) * nums(i);)
เพื่อยกกำลังสองตัวเลขแบบขนาน โดยไม่ต้องกังวลเกี่ยวกับไปป์ไลน์กราฟิกที่อยู่เบื้องหลัง
สถานะการดูแลรักษาและทางเลือกสมัยใหม่
แม้จะมีแนวทางที่สง่างาม แต่ WebMonkeys ไม่ได้รับการพัฒนาต่อตั้งแต่ปี 2017 ตามที่สมาชิกในชุมชนได้ชี้ให้เห็น การถูกทอดทิ้งนี้สร้างความท้าทายอย่างมีนัยสำคัญสำหรับนักพัฒนาที่ต้องการใช้การประมวลผล GPU ในโปรเจกต์เว็บปัจจุบัน
น่าเสียดายที่ไม่มีการดูแลรักษาตั้งแต่ปี 2017... มีโปรเจกต์อื่นที่ทำอะไรคล้ายกันบนเบราว์เซอร์ปัจจุบันไหม?
ชุมชนได้ชี้ให้เห็นว่า WebGPU เป็นเทคโนโลยีที่สืบทอดที่มีแนวโน้มมากที่สุด ปัจจุบันอยู่ในสถานะร่างและยังไม่ได้รับการสนับสนุนอย่างกว้างขวาง WebGPU เป็นตัวแทนอนาคตของการประมวลผล GPU บนเว็บด้วยการรองรับ compute shader โดยตรง ต่างจากการลดทอนระดับสูงของ WebMonkeys, WebGPU เสนอการควบคุมทรัพยากร GPU โดยตรงมากขึ้น แม้จะมีความชันในการเรียนรู้ที่สูงกว่า
ช่องว่างระหว่างการลดทอนความซับซ้อนและประสิทธิภาพ
ประเด็นที่เกิดขึ้นซ้ำในการสนทนาของชุมชนคือความตึงเครียดระหว่างการลดทอนความซับซ้อนและประสิทธิภาพในการประมวลผล GPU ในขณะที่ WebMonkeys เสนอจุดเริ่มต้นที่เข้าถึงได้ นักพัฒนาบางคนโต้แย้งว่าการใช้ประโยชน์จาก GPU อย่างมีประสิทธิภาพจริงๆ ต้องอาศัยความเข้าใจที่ลึกซึ้งเกี่ยวกับสถาปัตยกรรมฮาร์ดแวร์ที่อยู่เบื้องหลัง
ตามที่ผู้แสดงความคิดเห็นคนหนึ่งได้กล่าวไว้ การปรับโค้ด GPU ให้เหมาะสมมักจำเป็นต้องคิดในแง่ของสถาปัตยกรรม GPU - พิจารณาขนาดกลุ่มงาน เค้าโครงบัฟเฟอร์ และรูปแบบการเข้าถึงหน่วยความจำ สิ่งนี้บ่งชี้ว่าในขณะที่การลดทอนความซับซ้อนระดับสูงเช่น WebMonkeys มีคุณค่าสำหรับการศึกษาและการสร้างต้นแบบ การประมวลผล GPU ระดับการผลิตอาจต้องใช้ความรู้ที่เฉพาะเจาะจงมากขึ้น
นอกเหนือจากกราฟิก: คำสัญญาที่ยังไม่เป็นจริงของการประมวลผล GPU เพื่อวัตถุประสงค์ทั่วไป
บางทีประเด็นที่น่าสนใจที่สุดในการสนทนาของชุมชนอาจเป็นเรื่องเกี่ยวกับนัยสำคัญที่กว้างขึ้นของการประมวลผล GPU ที่เข้าถึงได้ ผู้แสดงความคิดเห็นบางคนเสียใจที่อุตสาหกรรมคอมพิวเตอร์หันไปใช้สถาปัตยกรรม GPU เฉพาะทางแทนที่จะเป็นการประมวลผลแบบหลายคอร์เพื่อวัตถุประสงค์ทั่วไปอย่างแท้จริง การเฉพาะทางนี้ได้สร้างอุปสรรคสำหรับแนวทางการคำนวณบางอย่าง โดยเฉพาะในด้านเช่น genetic programming และวิธีการ AI ทางเลือกที่ไม่เหมาะกับโมเดลการเขียนโปรแกรม GPU ปัจจุบัน
การสนทนาชี้ให้เห็นว่าสถาปัตยกรรม GPU ปัจจุบัน แม้จะมีประสิทธิภาพสำหรับงานเฉพาะเช่นเครือข่ายประสาทเทียม อาจจำกัดนวัตกรรมในกระบวนทัศน์การคำนวณอื่นๆ ที่จะได้รับประโยชน์จากการทำงานแบบขนานจำนวนมากโดยไม่มีข้อจำกัดของโมเดลการเขียนโปรแกรมที่เน้นกราฟิก
ในขณะที่เทคโนโลยีเว็บยังคงพัฒนาต่อไป ช่องว่างที่เกิดจากความเรียบง่ายของ WebMonkeys ยังคงไม่ได้รับการเติมเต็ม ในขณะที่ WebGPU สัญญาว่าจะมีความสามารถมากขึ้น ชุมชนให้คุณค่ากับโซลูชันที่สมดุลระหว่างพลังและการเข้าถึงได้อย่างชัดเจน ในตอนนี้ นักพัฒนาที่ต้องการความเรียบง่ายแบบ WebMonkeys ในเบราว์เซอร์สมัยใหม่อาจจำเป็นต้องสร้างการลดทอนความซับซ้อนของตัวเองบนเทคโนโลยีใหม่เช่น WebGPU หรือสำรวจแนวทางอื่นสำหรับการประมวลผลแบบขนานบนเว็บ
อ้างอิง: WebMonkeys