entrypoint.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "entrypoint.hpp"
  2. namespace tf_lib {
  3. using namespace tensorflow;
  4. using namespace tensorflow::shape_inference;
  5. REGISTER_OP("MyDummy")
  6. .Input("input: int32")
  7. .Output("output: int32")
  8. .SetShapeFn([](InferenceContext* c) {
  9. c->set_output(0, c->input(0));
  10. return Status::OK();
  11. });
  12. ;
  13. REGISTER_KERNEL_BUILDER(Name("MyDummy").Device(DEVICE_CPU), DummyOp);
  14. REGISTER_OP("MyDummyBig")
  15. .Input("input: int32")
  16. .Output("output: int32")
  17. .SetShapeFn([](InferenceContext* c) {
  18. c->set_output(0, c->input(0));
  19. return Status::OK();
  20. });
  21. ;
  22. REGISTER_KERNEL_BUILDER(Name("MyDummyBig").Device(DEVICE_CPU), DummyBigOp);
  23. ConnectionManager connectionManager;
  24. bool hasInitialized = false;
  25. std::mutex initMu;
  26. void init() {
  27. std::unique_lock<std::mutex> initLock(initMu);
  28. if(hasInitialized)
  29. return;
  30. std::ifstream configStream("config.json");
  31. nlohmann::json config;
  32. configStream >> config;
  33. auto fpgas = config["fpgas"];
  34. for(uint i=0; i<fpgas.size(); i++) {
  35. string ip = fpgas[i]["ip"];
  36. const uint port = fpgas[i]["port"];
  37. connectionManager.addFPGA(ip.c_str(), port);
  38. printf("added fpga %u at %s:%u\n", i, ip.c_str(), port);
  39. }
  40. connectionManager.start();
  41. printf("fpga server started\n");
  42. hasInitialized = true;
  43. }
  44. void __attribute__ ((constructor)) construct(void) {
  45. printf("fpga library loaded\n");
  46. }
  47. }