Clusters of RISC OS machines
Jeffrey Lee (213) 6048 posts |
Before I get too far into developing my own solution, I’m wondering if anyone knows of any (still working) software for managing clusters of RISC OS machines? Essentially I just need an easy way of using a script or API to command the connected machines to run a program and send the output back to the controller. E.g. when optimising code, being able to quickly & easily run the same binary on N different CPUs/architectures will be very useful, with a post-processing step which merges the output into a single table of results. Currently I’ve cobbled something together using some existing bits of code I had lying around (network/telnet taskwindow server, a port of “telnet scripting language”, and some Obey+BASIC scripts so I can easily get the host machine to execute an arbitrary *command on the target machine). But it’s a bit crummy – there’s no status display to see which machines are available, it’ll need some extra work if I want to run things in parallel, and there’s insufficient protection against Wimp error boxes causing the clustered machines to get stuck (or other situations where user input is required) |
Rick Murray (539) 13840 posts |
Sounds like the sort of thing I might have had a crack at back in the days of Econet, had I had enough machines to make a “cluster”. ;-) Would you be willing to share your telnet TaskWindow server? I had a basic one back in the 26 bit days, but never got around to finding something similar for modern machines. I dimly recall writing one for Econet, but the sources to that were on the defunct MDFS… |
Steve Pampling (1551) 8170 posts |
I’m sure I’ve mentioned before but JaffaSoft had something that I think matches at least partly complete. It struck me that the concepts in that could be used to command processes on other cores as well as on other machines. |
John Sandgrounder (1650) 574 posts |
I am sure that your taskwindow server is a far better solution than mine, but I have a cluster of RISC OS and Raspbian machines working together using HTTP protocols for communication. (originally just Wget and Webserver scripts, but now having my own HTTP software written in BASIC) Mine is also a bit crummy – and it needs to know specific IP address (but it works across across the Internet) It is all very specific to my requirements, but I am confident it could be made more generalised. I also like the sound of your taskwindow server. |
Jeffrey Lee (213) 6048 posts |
Sure. I’m not sure why I never released it (I think it must be around 15 years old) – probably because I was too lazy to add password protection. But I’ve now added that (in a rudimentary form), so with a bit more polish it’s probably good enough for a release. I also have the feeling that when I searched for other telnet servers I found another one which looked like it was better – quite possibly Igor, which looks like it’s a bit more sophisticated than mine (it has a Wimp frontend). But since mine is written in BASIC (Igor is C) it’s a bit more of an “easily hackable, run anywhere” solution.
Yes, that rings a bell. With a service discovery system it could be a nice transport-agnostic way of allowing apps to communicate with each other. But without knowing more about which features are available (or were intended to be available in the full version) it’s a bit hard to tell whether it’s going to be useful for my purposes. And ideally I’d want a solution which works well with single-tasking programs – although my current system is built ontop of a networked task window, the only thing that runs in the task window is a “launcher” BASIC program which uses Wimp_StartTask to run the profiled code single-tasking, to avoid the time variance and performance loss that taskwindows introduce. Program output is redirected to a file, to allow it to be PRINTed back into the task window once execution is complete.
Yes, message queues are the fundamental concept in most concurrent/distributed systems. |
Andrew Rawnsley (492) 1445 posts |
For what it is worth, UniPrint/UniServer has a remote command-line feature which can be sent to any configured PC or RISC OS machine, with text output fed back (I think – it is years since I tried it). It is called “UniCom” in the front end. The main idea was that you could call PC .bat or other files (eg. playlists) to trigger events on the remote machines. |
Steve Pampling (1551) 8170 posts |
Clustered RO machines would be interesting. Clustering different OS versions would be even more interesting.
Perhaps a mail/call to the nice people/person at Jaffasoft? Might even get a donation of source. |
Jeffrey Lee (213) 6048 posts |
Ask and ye shall receive: http://www.phlamethrower.co.uk/riscos/index.php#util (look for NetTask) |
John Sandgrounder (1650) 574 posts |
Many thanks. I am not at home at the moment. So, no chance to try it just yet :( |
Bill Antonia (2466) 130 posts |
Not sure if this would be useful, something I wrote back in 1998 but have updated to run on 32 bit. It is something akin to Inetd, source code is included and example clients. There are a couple of modules, with source, both have had their SWIs registered. Inetd.zip |