เป็นไปได้ไหมที่จะใช้ RAM จากคอมพิวเตอร์เครื่องอื่นเพื่อช่วยในการคำนวณแบบขนาน Mathematica Light Grid Server 7 ถ้าเป็นเช่นนั้นได้อย่างไร
เป็นไปได้ไหมที่จะใช้ RAM จากคอมพิวเตอร์เครื่องอื่นเพื่อช่วยในการคำนวณแบบขนาน Mathematica Light Grid Server 7 ถ้าเป็นเช่นนั้นได้อย่างไร
คำตอบ:
Mathematica ใช้การคำนวณแบบขนานโดยใช้หลายเมล็ด (หลายกระบวนการ) ซึ่งอาจทำงานบนเครื่องที่แตกต่างกัน มีเคอร์เนลหลักหนึ่งอันที่คุณโต้ตอบโดยตรงและมีหลาย subkernels (ควบคุมโดยเคอร์เนลหลัก) ที่ทำงานได้
ดังนั้นในระยะสั้น: คุณไม่สามารถเข้าถึงหน่วยความจำของเครื่องอื่น ๆได้โดยตรงแต่คุณสามารถใช้ประโยชน์จากมันได้อย่างเต็มที่ด้วยการรัน subkernel บนแต่ละเครื่อง
คุณไม่ได้พูดถึงปัญหาเฉพาะที่คุณกำลังพยายามแก้ไข แต่ถ้าคุณต้องการประมวลผลชุดข้อมูลขนาดใหญ่ที่ไม่พอดีกับหน่วยความจำของเครื่องหนึ่งแบบขนานคุณสามารถทำสิ่งนี้ได้:
ให้แต่ละ subkernels โหลด chunk และประมวลผลรับผลลัพธ์ที่ใช้หน่วยความจำไม่มาก
มีหลายวิธีในการควบคุมสถานีย่อยจากคู่มือทั้งหมดไปเป็นอัตโนมัติทั้งหมด ParallelEvaluate[]
จะให้การควบคุมที่ละเอียดยิ่งขึ้นแก่เคอร์เนลแต่ละตัว คุณยังสามารถใช้$KernelID$
ตัวแปรเพื่อตัดสินใจว่าส่วนใดของชุดข้อมูลที่ควรโหลดลงในแต่ละเคอร์เนล โปรดดูเอกสารประกอบสำหรับรายละเอียด
ในที่สุดผลลัพธ์จะถูกรวบรวมลงในเคอร์เนลหลัก (หากผลลัพธ์ไม่ได้ใช้หน่วยความจำมาก) หรือจะถูกเขียนลงดิสก์จากแต่ละ subkernel (ถ้าผลลัพธ์มีขนาดใหญ่เท่ากับข้อมูลอินพุต)
จุดหนึ่งที่สำคัญเพื่อป้องกันไม่ให้ชัดเจนตัวแปรจากการถูกใช้ร่วมกันโดยอัตโนมัติระหว่างเมล็ด (และการขึ้นหน่วยความจำที่มีคุณค่า) คุณจะต้องใส่ไว้ในบริบทที่แยกจากกันตามที่อธิบายไว้ที่นี่และการเชื่อมโยงนั้น