Telekine is a system that removes timing information from communication with the GPU.
Telekine assumes that the GPU computation itself is protected by a Trusted Execution Environment (TEE). There are not currently any GPU TEEs on the market.
Much of the API remoting code was generated by an early version of AvA. Development of that project has diverged, so we provide the specification used (hip.nw.cpp) for documentation purposes but you should not expect it to work with current AvA.
The files that were generated by AvA have the form: *_nw_*.*
.
Please take a look at our publications for more details about the design:
- Tyler Hunt, Zhipeng Jia, Vance Miller, Ariel Szekely, Yige Hu, Christopher J. Rossbach, and Emmett Witchel. Telekine: Secure Computing with Cloud GPUs. In NSDI 2020.
- ROCm 1.8
To build the client and the server run:
make
This will generate libguestlib.so
and manager_tcp
. manager_tcp
should be
run on the machine with the GPU; it facilitates API forwarding over the network.
libguestlib.so
should be either linked into the application in place of the
Hip/ROCm libraries, or preloaded with LD_PRELOAD
. We've provided the script
lgm_run
which handles preloading the library for you.
Both manager_tcp
and lgm_run
take arguments that are explained in cli help.