ฉันจะแชร์หน่วยความจำสำหรับการคำนวณแบบขนานใน Mathematica ได้อย่างไร


2

เป็นไปได้ไหมที่จะใช้ RAM จากคอมพิวเตอร์เครื่องอื่นเพื่อช่วยในการคำนวณแบบขนาน Mathematica Light Grid Server 7 ถ้าเป็นเช่นนั้นได้อย่างไร


คุณพยายามทำอะไรกันแน่ โดยปกติแล้วการใช้ RAM โดยตรงบนคอมพิวเตอร์เครื่องอื่นนั้นไม่มีประโยชน์เนื่องจากความหน่วงแฝง แต่คุณสามารถสร้างแอปพลิเคชันแบบกระจายซึ่งจะได้รับส่วนแบ่งการโหลดของตัวเอง ฉันไม่ได้ใช้ Mathematica Light Grid Server 7 ดังนั้นฉันไม่สามารถแสดงความเห็นได้ว่านี่เป็นโซลูชั่นที่ใช้งานได้
AndrejaKo

วิธีการทำเช่นนี้ - คุณสามารถสร้างแอปพลิเคชันแบบกระจายซึ่งจะได้รับส่วนแบ่งของตัวเอง
Pipe

คำตอบ:


1

Mathematica ใช้การคำนวณแบบขนานโดยใช้หลายเมล็ด (หลายกระบวนการ) ซึ่งอาจทำงานบนเครื่องที่แตกต่างกัน มีเคอร์เนลหลักหนึ่งอันที่คุณโต้ตอบโดยตรงและมีหลาย subkernels (ควบคุมโดยเคอร์เนลหลัก) ที่ทำงานได้

ดังนั้นในระยะสั้น: คุณไม่สามารถเข้าถึงหน่วยความจำของเครื่องอื่น ๆได้โดยตรงแต่คุณสามารถใช้ประโยชน์จากมันได้อย่างเต็มที่ด้วยการรัน subkernel บนแต่ละเครื่อง

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

  1. ก่อนอื่นแบ่งข้อมูลออกเป็นกลุ่มที่จัดการได้
  2. ให้แต่ละ subkernels โหลด chunk และประมวลผลรับผลลัพธ์ที่ใช้หน่วยความจำไม่มาก

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

  3. ในที่สุดผลลัพธ์จะถูกรวบรวมลงในเคอร์เนลหลัก (หากผลลัพธ์ไม่ได้ใช้หน่วยความจำมาก) หรือจะถูกเขียนลงดิสก์จากแต่ละ subkernel (ถ้าผลลัพธ์มีขนาดใหญ่เท่ากับข้อมูลอินพุต)

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.