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 pushf
and 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.