@isidorus/cpu 0.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +47 -0
  2. package/binding.gyp +103 -0
  3. package/dist/ts/_native.d.ts +13 -0
  4. package/dist/ts/_native.d.ts.map +1 -0
  5. package/dist/ts/_native.js +22 -0
  6. package/dist/ts/_native.js.map +1 -0
  7. package/dist/ts/graph.d.ts +91 -0
  8. package/dist/ts/graph.d.ts.map +1 -0
  9. package/dist/ts/graph.js +95 -0
  10. package/dist/ts/graph.js.map +1 -0
  11. package/dist/ts/index.d.ts +47 -0
  12. package/dist/ts/index.d.ts.map +1 -0
  13. package/dist/ts/index.js +58 -0
  14. package/dist/ts/index.js.map +1 -0
  15. package/dist/ts/inference-pool.d.ts +84 -0
  16. package/dist/ts/inference-pool.d.ts.map +1 -0
  17. package/dist/ts/inference-pool.js +625 -0
  18. package/dist/ts/inference-pool.js.map +1 -0
  19. package/dist/ts/inference_pool.d.ts +99 -0
  20. package/dist/ts/inference_pool.d.ts.map +1 -0
  21. package/dist/ts/inference_pool.js +370 -0
  22. package/dist/ts/inference_pool.js.map +1 -0
  23. package/dist/ts/install-libtensorflow.d.ts +34 -0
  24. package/dist/ts/install-libtensorflow.d.ts.map +1 -0
  25. package/dist/ts/install-libtensorflow.js +254 -0
  26. package/dist/ts/install-libtensorflow.js.map +1 -0
  27. package/dist/ts/ops/array_ops.d.ts +29 -0
  28. package/dist/ts/ops/array_ops.d.ts.map +1 -0
  29. package/dist/ts/ops/array_ops.js +54 -0
  30. package/dist/ts/ops/array_ops.js.map +1 -0
  31. package/dist/ts/ops/index.d.ts +5 -0
  32. package/dist/ts/ops/index.d.ts.map +1 -0
  33. package/dist/ts/ops/index.js +5 -0
  34. package/dist/ts/ops/index.js.map +1 -0
  35. package/dist/ts/ops/math_ops.d.ts +96 -0
  36. package/dist/ts/ops/math_ops.d.ts.map +1 -0
  37. package/dist/ts/ops/math_ops.js +277 -0
  38. package/dist/ts/ops/math_ops.js.map +1 -0
  39. package/dist/ts/ops/nn_ops.d.ts +130 -0
  40. package/dist/ts/ops/nn_ops.d.ts.map +1 -0
  41. package/dist/ts/ops/nn_ops.js +340 -0
  42. package/dist/ts/ops/nn_ops.js.map +1 -0
  43. package/dist/ts/ops/variable_ops.d.ts +128 -0
  44. package/dist/ts/ops/variable_ops.d.ts.map +1 -0
  45. package/dist/ts/ops/variable_ops.js +267 -0
  46. package/dist/ts/ops/variable_ops.js.map +1 -0
  47. package/dist/ts/session.d.ts +83 -0
  48. package/dist/ts/session.d.ts.map +1 -0
  49. package/dist/ts/session.js +81 -0
  50. package/dist/ts/session.js.map +1 -0
  51. package/package.json +63 -0
  52. package/scripts/install.js +100 -0
  53. package/scripts/test-install.js +82 -0
  54. package/scripts/test.js +45 -0
  55. package/src/native/addon.cc +12 -0
  56. package/src/native/graph.cc +442 -0
  57. package/src/native/graph.h +52 -0
  58. package/src/native/platform_tf.h +8 -0
  59. package/src/native/session.cc +716 -0
  60. package/src/native/session.h +92 -0
@@ -0,0 +1,92 @@
1
+ #pragma once
2
+ #include <napi.h>
3
+ #include "platform_tf.h"
4
+ #include <string>
5
+ #include <vector>
6
+ #include <cstdint>
7
+
8
+ // ----------------------------------------------------------------------------
9
+ // Platform CPU affinity abstractions
10
+ //
11
+ // AffinityMask: bitmask where bit N = 1 means "this thread may run on core N"
12
+ // Supports up to 64 cores. Sytems with > 64 cores need processor groups
13
+ // (Windows) or cpu_set_t extension (Linux) - not handled here
14
+ // ----------------------------------------------------------------------------
15
+ #ifdef _WIN32
16
+ #ifndef WIN32_LEAN_AND_MEAN
17
+ #define WIN32_LEAN_AND_MEAN
18
+ #endif
19
+ #include <windows.h>
20
+ using AffinityMask = DWORD_PTR;
21
+ #else
22
+ #include <sched.h>
23
+ #include <pthread.h>
24
+ using AffinityMask = uint64_t;
25
+ #endif // _WIN32
26
+
27
+ #ifndef ISIDORUS_STATUS_GUARD_DEFINED
28
+ #define ISIDORUS_STATUS_GUARD_DEFINED
29
+ struct StatusGuard
30
+ {
31
+ TF_Status *s;
32
+ StatusGuard() : s(TF_NewStatus()) {}
33
+ ~StatusGuard()
34
+ {
35
+ if (s)
36
+ TF_DeleteStatus(s);
37
+ }
38
+ bool ok() const { return TF_GetCode(s) == TF_OK; }
39
+ std::string message() const { return TF_Message(s); }
40
+ };
41
+ #endif
42
+
43
+ // ----------------------------------------------------------------------------
44
+ // Affinity helpers - declared here, defined in session.cc
45
+ // ----------------------------------------------------------------------------
46
+
47
+ // Get the affinity mask of the calling thread.
48
+ AffinityMask affinity_get();
49
+
50
+ // Set the affinity mask of the calling thread.
51
+ // Returns true on success.
52
+ bool affinity_set(AffinityMask mask);
53
+
54
+ // Build a mask covering cores [first_core, num_cores).
55
+ // e.g. affinity_mask_range(2, 6) = cores 2,3,4,5 (bits 2..5 set)
56
+ AffinityMask affinity_mask_range(int first_core, int num_cores);
57
+
58
+ // Build a mask covering all online cores.
59
+ AffinityMask affinity_mask_all();
60
+
61
+ // ----------------------------------------------------------------------------
62
+ // SessionWrap
63
+ // ----------------------------------------------------------------------------
64
+ class SessionWrap : public Napi::ObjectWrap<SessionWrap>
65
+ {
66
+ public:
67
+ static Napi::Object Init(Napi::Env env, Napi::Object exports);
68
+
69
+ explicit SessionWrap(const Napi::CallbackInfo &info);
70
+ ~SessionWrap() override;
71
+
72
+ // Affinity masks used by RunCtx - set in constructor, read in OnRunWork.
73
+ AffinityMask tf_affinity_mask_ = 0; // 0 = no restriction
74
+ AffinityMask full_affinity_mask_ = 0;
75
+
76
+ private:
77
+ TF_Graph *graph_ = nullptr;
78
+ TF_Session *session_ = nullptr;
79
+ Napi::ObjectReference graph_ref_;
80
+ int intra_op_threads_ = 1;
81
+ int inter_op_threads_ = 1;
82
+
83
+ void cleanup();
84
+
85
+ Napi::Value Run(const Napi::CallbackInfo &info);
86
+ Napi::Value RunAsync(const Napi::CallbackInfo &info);
87
+ Napi::Value Destroy(const Napi::CallbackInfo &info);
88
+ Napi::Value IntraOpThreads(const Napi::CallbackInfo &info);
89
+ Napi::Value InterOpThreads(const Napi::CallbackInfo &info);
90
+ Napi::Value TfAffinityMask(const Napi::CallbackInfo &info);
91
+ Napi::Value FullAffinityMask(const Napi::CallbackInfo &info);
92
+ };