RAVR wrote: ↑Sat Jun 09, 2018 5:29 am
Hello,
I have a "Theoretical Concept" that is a little different in the area of "Supercomputer RPi".
Create special GUI that consists of the standard GUI but "software multithreaded support" is replaced with remote CPU accessed via ethernet. The more remote CPUs available the more "Logical Treads" open for execution use.
Ultimate Goal - is to allow unmodified software to run natively on the enhanced environment.
Host RPi = Controls all operations and assigns the accessible remote RPi(s) [Both CPUs and their RAM] via ethernet (wireless or hardwired port) as part of the GUI as "Logical Thread(s)" also all user I/O and all storage.
Remote RPi aka "Logical Thread" = OS is setup as a remote (User interface hardware remotely accessed and display output redirected to Host RPi) showing the Remote's display as a Window on the Host System GUI. Boot off local SD card but don't share it with the software being executed by the host system
In the second stage of development add local hardware resources. Useful for multiple "hats" accessible to various programs.
Support software being executed on specific Remote RPi(s) based on TCP/IP address.
Note: This may have to be done in the kernel of the Host RPi rather than in the GUI; a much more difficult task.
Thank you for reading my post and your input.
I know this would be a very large task that I have no skill to accomplish as I have very little skill in writing source code however it is the idea that is important not the theorist's skill.
Your idea of having the graphical window of a remotely executing program appear as a local window was one of the features of the X Window system developed in the 80's at MIT as part of project
Athena. While the Raspbian desktop runs on top of X Windows, many recent applications and toolkits were built without regard to performance when running on a remote server. Therefore, what used to work well is not longer practical for the kind of distributed computing you describe.
A slightly different approach to running graphical applications on remote systems has been taken by Microsoft: Remote desktop essentially makes a video of a program running remotely and displays the video in a window on the local machine. In seamless mode the remote programs appear alongside the local ones in much the way you have described.
Note that seamless mode is relatively new and remote desktop, as the name suggests, is more commonly used to make the entire screen of the remote computer appear on the local computer rather than just the interface for a single program. Raspbian includes a program called RealVNC which similarly allows the entire screen of a remote Pi to appear on the local computer. It does not, however, support the seamless mode needed for a distributed computing system in which the remote and local programs all appear together on the same screen.
There is a program on Linux which does allow graphical programs running on remote systems to seamlessly appear alongside programs running on the local machine and alongside those running on other remote hosts. It is called
Xpra. Although Xpra works well enough on x86 computers, it is not efficient enough to work well on a Raspberry Pi. Still, for what it is worth, it would not be difficult to create a few menu items in the standard Raspbian desktop that would start load-balanced Xpra sessions on remote machines in response to the click of a mouse.