Apakah mungkin untuk menggabungkan kekuatan pemrosesan 2 komputer?

14

Berikut adalah beberapa pertanyaan, saya berharap Anda dapat mencerahkan saya.

  1. Apakah mungkin untuk menggabungkan kekuatan pemrosesan 2 komputer?
  2. Bagaimana saya melakukannya?
Wern Ancheta
sumber
7
1) Tentu saja. 2) Dengan susah payah.
Daniel R Hicks

Jawaban:

11

Tidak transparan di mana program yang sedang berjalan entah bagaimana dapat menggunakan mesin kedua untuk mengeksekusi kode, karena mereka secara logis terpisah dengan tidak ada cara bagi cpu untuk berkomunikasi atau mengakses memori satu sama lain.

Itu tidak berarti Anda tidak dapat menggabungkan kekuatan pemrosesan:

  1. Perangkat lunak tertentu mungkin memiliki komponen yang dapat dijalankan pada mesin lain, misalnya pelipatan protein, SETI @ home. Ini cenderung khusus, yaitu Anda tidak dapat memulai Excel dan memintanya untuk menggunakan komputer lain untuk perhitungan.
  2. Jika Anda melakukan tugas-tugas intensif prosesor, Anda dapat menggunakan mesin sekunder untuk menjalankannya, mis. Penyandian / pengodean ulang aliran video.

Jika Anda ingin memanfaatkan komputer sekunder dengan cara apa pun, dapat mengontrol jarak jauh sangat penting. Dua cara untuk melakukan ini adalah melalui semacam akses jarak jauh (RDP, VNC) atau sebagai alternatif sesuatu seperti sinergi +.

mindless.panda
sumber
1
Katakan misalnya saya memiliki 4GB RAM di laptop saya dan 4GB di PC saya, akankah RDP memungkinkan saya menjalankan progran dengan RAM 8GB?
TGamer
5

Salah satu baris saya yang paling sering digunakan - Ya dan Tidak!

Ya itu mungkin - untuk aplikasi tertentu yang dirancang untuk bekerja dengan cara ini. (Umumnya dikenal sebagai kluster - Bacaan lebih lanjut di sini )

Tidak, tidak mungkin (setidaknya sejauh yang saya tahu) untuk mengambil dua dari komputer rak, "mengikat" mereka bersama-sama dan mendapatkan memori gabungan, kekuatan pemrosesan dan yang lainnya.

William Hilsum
sumber
1
@ ~ dukun ya, dan saya katakan untuk aplikasi tertentu ... Karena pertanyaan itu ditandai Windows-7, saya berasumsi bahwa yang ia maksudkan adalah komputer setiap hari dengan program apa pun yang tidak aktif .... Pokoknya - Cluster Beowulf tidak memerlukan aplikasi yang ditulis khusus? ... Saya bukan ahli, tidak pernah menggunakannya, tapi saya cepat membaca beowulf.org/overview/index.html (terutama dua paragraf terakhir)
William Hilsum
maaf, hapus komentar saya sebelumnya setelah membaca ulang dan perhatikan Anda sudah ditautkan ke konsep pengelompokan. beowulfs dirancang di sekitar komponen yang tersedia, dan merupakan salah satu cara "mengikat" beberapa sistem secara bersamaan, tetapi Anda benar bahwa mereka tidak benar-benar bekerja untuk program yang tidak dirancang khusus untuk mereka.
quack quixote
4

Itu sangat mungkin! Tetapi menilai dari kesederhanaan pertanyaan Anda, saya berasumsi Anda hanya ingin menjalankan program yang secara ajaib akan membuat komputer Anda dua kali lebih cepat, yang tidak mungkin.

Anda perlu memahami bahwa ketika suatu program dijalankan, ia mempertahankan kondisinya dengan memprovokasi CPU untuk memindahkan memori antara HDD, RAM, dan register CPU, serta alamat pada berbagai komponen (seperti kartu video atau kartu jaringan). Masalah dengan menggunakan CPU dari komputer lain untuk membantu Anda adalah bahwa ia membutuhkan akses ke memori yang sama. Dan mempertahankan mirror image dari memori komputer Anda di komputer lain membutuhkan begitu banyak overhead sehingga dengan mudah mengalahkan tujuan mencoba menambahkan komputer lain untuk mendapatkan kinerja :)

Tetapi jenis hal yang dapat dibagi antara beberapa komputer adalah rendering gambar atau perhitungan matematis yang dapat bekerja secara independen.

Nippysaurus
sumber
3

Jika yang Anda cari adalah metode untuk menggabungkan kekuatan pemrosesan dari dua PC menjadi satu, cara "termudah" untuk melakukannya adalah dengan mengkonfigurasi keduanya sebagai host mesin virtual menggunakan perangkat lunak seperti VMWare ESXi (Sebelum diperingatkan ini akan membutuhkan perangkat untuk memiliki perangkat keras yang kompatibel) dan membuat grup sumber daya atau cluster dan membuat mesin virtual yang menggunakan sumber daya dari kedua komputer. Ini TIDAK akan memberi Anda kecepatan 2x penuh (Anda akan kehilangan sumber daya karena virtualisasi) dan merupakan solusi terbatas karena kemungkinan persyaratan kompatibilitas tetapi ini adalah jawaban yang paling "benar" untuk pertanyaan Anda. Mesin virtual akan bertindak seperti PC tunggal dengan kekuatan pemrosesan kedua host dikurangi biaya yang diperlukan untuk mempertahankan virtualisasi.

George Spiceland
sumber
Saya khawatir komunikasi antara host akan menjadi hambatan.
gronostaj
1
Ya, komunikasi antara host dapat menjadi hambatan, ini adalah bagian dari biaya overhead yang terlibat. Jaringan non-gigabit akan menjadi penyebab utama hal ini, tetapi mengingat ketersediaan gigabit yang murah dan produktif saya tidak merasa seperti ini terutama menghukum. Namun itu berlaku untuk semua pemrosesan jaringan yang terdistribusi, dan VM adalah skenario yang jauh lebih dapat digunakan dengan kerumitan yang jauh lebih sedikit daripada Panggilan Prosedur Jarak Jauh dan aplikasi yang dibuat khusus yang didedikasikan untuk komputasi jaringan terdistribusi (apa yang harus dilakukan).
George Spiceland
2

Saya setuju dengan jawaban lain:

  • Jika Anda memiliki buku kerja Excel yang sangat besar dan multi-sheet, dan Anda ingin dapat menjalankan Excel dua kali lebih cepat (memperbarui formula dan skenario, menjalankan makro, dll.), Anda kurang beruntung.
  • Jika Anda memiliki aplikasi khusus yang mudah dipartisi, seperti menemukan akar kuadrat dari setiap bilangan bulat dari 1 hingga 1.000.000, seharusnya mudah bagi Anda untuk memecahkan masalah menjadi beberapa bagian dan mendistribusikannya.
  • Jika Anda memiliki aplikasi khusus seperti menghitung 1.000.000 digit pertama π (pi), Anda mungkin dapat melakukannya, jika Anda cukup memahami ruang masalahnya.

Jika Anda berbicara tentang mengembangkan perangkat lunak untuk dijalankan dalam lingkungan yang terdistribusi (multi-komputer), berikut adalah beberapa saran:

  • Gunakan panggilan prosedur jarak jauh (RPC) . Sama seperti Anda dapat membuat host menjadi file server atau server web, RPC memungkinkan Anda untuk membuat mesin, pada dasarnya, server CPU. Secara konseptual, Anda akan memiliki satu mesin master, yang akan menjadi klien RPC, dan itu akan memanggil fungsi pustaka yang secara transparan akan dieksekusi di server. Dalam bentuknya yang paling sederhana, arsitektur ini tidak akan memberi Anda manfaat kinerja apa pun, karena hanya satu CPU yang akan dijalankan setiap saat. Namun, dalam model asinkron, klien dapat memulai prosedur jarak jauh di server dan kemudian melakukan hal-hal lain saat server sedang berjalan.
  • Gunakan bahasa yang dirancang untuk pemrosesan paralel, seperti Unified Parallel C (UPC) . Ini adalah perpanjangan dari bahasa C dengan fasilitas untuk data terdistribusi dan eksekusi simultan. Referensi:
Scott
sumber