เป็นไปได้หรือไม่ที่จะรวมพลังการประมวลผลของคอมพิวเตอร์ 2 เครื่องเข้าด้วยกัน?


14

นี่เป็นคำถามสองสามข้อฉันหวังว่าคุณจะสามารถสอนฉันได้

  1. เป็นไปได้หรือไม่ที่จะรวมพลังการประมวลผลของคอมพิวเตอร์ 2 เครื่องเข้าด้วยกัน?
  2. ฉันต้องทำอย่างไร?

7
1) แน่นอน 2) ด้วยความยากลำบากอย่างมาก
Daniel R Hicks

คำตอบ:


11

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

ไม่ได้หมายความว่าคุณไม่สามารถรวมพลังการประมวลผล:

  1. ซอฟต์แวร์เฉพาะอาจมีส่วนประกอบที่สามารถทำงานกับเครื่องอื่นเช่นการพับโปรตีน SETI @ home สิ่งเหล่านี้มีแนวโน้มที่จะเฉพาะเช่นคุณไม่สามารถเริ่ม Excel และบอกให้ใช้คอมพิวเตอร์เครื่องอื่นในการคำนวณ
  2. หากคุณทำงานที่ต้องใช้ตัวประมวลผลสูงคุณสามารถใช้เครื่องรองเพื่อเรียกใช้งานเช่นการเข้ารหัส / เข้ารหัสวิดีโอสตรีม

หากคุณต้องการควบคุมคอมพิวเตอร์เครื่องที่สองในทางใดทางหนึ่งการควบคุมระยะไกลเป็นสิ่งสำคัญ สองวิธีในการทำเช่นนี้คือผ่านการเข้าถึงระยะไกล (RDP, VNC) หรือสิ่งอื่นเช่น synergy +


1
ตัวอย่างเช่นฉันมี RAM 4GB บนแล็ปท็อปของฉันและ 4GB บนพีซีของฉัน RDP จะอนุญาตให้ฉันเรียกใช้โปรแกรมที่มี RAM 8GB หรือไม่?
TGamer

5

บรรทัดที่ฉันใช้บ่อยที่สุด - ใช่และไม่ใช่!

ใช่เป็นไปได้ - สำหรับบางแอปพลิเคชันที่ออกแบบมาเพื่อทำงานด้วยวิธีนี้ (รู้จักกันทั่วไปว่าเป็นคลัสเตอร์ - อ่านเพิ่มเติมที่นี่ )

ไม่เป็นไปไม่ได้ (อย่างน้อยเท่าที่ฉันรู้) เพื่อถอดคอมพิวเตอร์ชั้นวาง "รวมกัน" เข้าด้วยกันและรับหน่วยความจำรวมพลังการประมวลผลและทุกอย่างอื่น


1
@ ~ นักต้มตุ๋นใช่แล้วและฉันบอกว่าสำหรับบางแอปพลิเคชัน ... เนื่องจากคำถามถูกติดแท็ก Windows-7 ฉันคิดว่าเขาหมายถึงคอมพิวเตอร์ทุกวันโดยไม่ต้องมีชั้นวางโปรแกรมเลย .... แอปพลิเคชันที่เขียนขึ้นเป็นพิเศษ ... ฉันไม่ใช่ผู้เชี่ยวชาญไม่เคยใช้ แต่ฉันอ่านbeowulf.org/overview/index.html (โดยเฉพาะอย่างยิ่งสองย่อหน้าสุดท้าย)
William Hilsum

ขออภัยลบความคิดเห็นก่อนหน้าของฉันหลังจากอ่านซ้ำและสังเกตว่าคุณได้เชื่อมโยงกับแนวคิดการจัดกลุ่มแล้ว beowulfs ได้รับการออกแบบโดยใช้ส่วนประกอบที่ไม่ได้วางจำหน่ายและเป็นวิธีหนึ่งในการ "ผูก" หลาย ๆ ระบบเข้าด้วยกัน แต่คุณคิดว่ามันไม่ได้ผลกับโปรแกรมที่ไม่ได้ออกแบบมาโดยเฉพาะสำหรับพวกเขา
ต้มตุ๋น quixote

4

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

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

แต่ประเภทของสิ่งต่าง ๆ ที่สามารถแยกได้ระหว่างคอมพิวเตอร์หลาย ๆ เครื่องคือการแสดงผลภาพหรือการคำนวณทางคณิตศาสตร์บางอย่างซึ่งสามารถทำงานได้อย่างอิสระ


3

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


ฉันกลัวว่าการสื่อสารระหว่างโฮสต์จะเป็นปัญหาคอขวด
gronostaj

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

2

ฉันเห็นด้วยกับคำตอบอื่น ๆ :

  • หากคุณมีเวิร์กบุ๊ก Excel ขนาดใหญ่และมีหลายแผ่นและคุณต้องการให้สามารถเรียกใช้ Excel ได้อย่างรวดเร็วเป็นสองเท่า (การอัปเดตสูตรและสถานการณ์จำลองการเรียกใช้แมโคร ฯลฯ ) คุณไม่มีโชค
  • หากคุณมีแอปพลิเคชันแบบกำหนดเองที่แบ่งพาร์ติชันได้ง่ายเช่นการค้นหาสแควร์รูทของจำนวนเต็มตั้งแต่ 1 ถึง 1,000,000 คุณควรแยกปัญหาออกเป็นชิ้น ๆ และแจกจ่ายให้ง่าย
  • หากคุณมีแอปพลิเคชันที่กำหนดเองเช่นการคำนวณ 1,000,000 หลักแรกของπ (pi) คุณอาจทำได้ถ้าคุณเข้าใจพื้นที่ปัญหาเพียงพอ

หากคุณกำลังพูดถึงการพัฒนาซอฟต์แวร์เพื่อให้ทำงานในสภาพแวดล้อมแบบกระจาย (คอมพิวเตอร์หลายเครื่อง) ต่อไปนี้เป็นคำแนะนำ:

  • ใช้ขั้นตอนระยะไกลสาย (RPCs) เช่นเดียวกับที่คุณสามารถสร้างโฮสต์ให้เป็นไฟล์เซิร์ฟเวอร์หรือเว็บเซิร์ฟเวอร์ RPCs ช่วยให้คุณสร้างเครื่องเซิร์ฟเวอร์ CPU โดยพื้นฐานแล้ว แนวคิดคุณจะมีเครื่องจักรหลักหนึ่งเครื่องซึ่งจะเป็นไคลเอนต์ RPC และจะเรียกใช้ฟังก์ชันไลบรารีที่จะดำเนินการอย่างโปร่งใสบนเซิร์ฟเวอร์ ในรูปแบบที่ง่ายที่สุดสถาปัตยกรรมนี้จะไม่ให้ประโยชน์ด้านประสิทธิภาพใด ๆ แก่คุณเนื่องจากมีเพียง CPU เดียวเท่านั้นที่กำลังดำเนินการในทันที อย่างไรก็ตามในโมเดลอะซิงโครนัสไคลเอ็นต์สามารถเริ่มโพรซีเดอร์แบบรีโมตบนเซิร์ฟเวอร์จากนั้นทำสิ่งอื่นขณะที่เซิร์ฟเวอร์กำลังทำงาน
  • ใช้ภาษาที่ออกแบบสำหรับการประมวลผลแบบขนานเช่นUnified ขนาน C (UPC) นี่คือส่วนขยายของภาษา C พร้อมสิ่งอำนวยความสะดวกสำหรับข้อมูลแบบกระจายและการเรียกใช้งานพร้อมกัน อ้างอิง:
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.