I'm working on an academic research topic that requires quite a lot of computation. I'm building the software in C++. When I'm at the university, I will have access to a beefy server, but for my time at home, I would like to execute my code on my Windows gaming PC, which is quite a bit faster than my 5yo MacBook Pro.
So, is there a tool that allows me to take a Mach-O binary (OS X binary) from memory, move it to the Windows PC over the network, and continue execution there. I believe this might be possible, since:
- I'm only relying on header-only libraries (STL, Eigen).
- Not doing multithreading.
- No OS X-specific calls are made (no syscalls)
I think of it as: x86 is x86: just copy the code in memory as-is. On the target machine, allocate an identical virtual address space, transfer x86 processor state (using
popf instructions), and resume computations.
If something like this exists, it would probably involve linking against a library that has two calls like:
moveToSlave(): pause local computation, and move the entire binary to the other machine.
moveToMaster(): pause remote execution (which is local on the remote machine), and transfer the updated memory state back to the master (my laptop).
I know it's a long shot, and such software would be highly experimental.