@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.
- package/README.md +47 -0
- package/binding.gyp +103 -0
- package/dist/ts/_native.d.ts +13 -0
- package/dist/ts/_native.d.ts.map +1 -0
- package/dist/ts/_native.js +22 -0
- package/dist/ts/_native.js.map +1 -0
- package/dist/ts/graph.d.ts +91 -0
- package/dist/ts/graph.d.ts.map +1 -0
- package/dist/ts/graph.js +95 -0
- package/dist/ts/graph.js.map +1 -0
- package/dist/ts/index.d.ts +47 -0
- package/dist/ts/index.d.ts.map +1 -0
- package/dist/ts/index.js +58 -0
- package/dist/ts/index.js.map +1 -0
- package/dist/ts/inference-pool.d.ts +84 -0
- package/dist/ts/inference-pool.d.ts.map +1 -0
- package/dist/ts/inference-pool.js +625 -0
- package/dist/ts/inference-pool.js.map +1 -0
- package/dist/ts/inference_pool.d.ts +99 -0
- package/dist/ts/inference_pool.d.ts.map +1 -0
- package/dist/ts/inference_pool.js +370 -0
- package/dist/ts/inference_pool.js.map +1 -0
- package/dist/ts/install-libtensorflow.d.ts +34 -0
- package/dist/ts/install-libtensorflow.d.ts.map +1 -0
- package/dist/ts/install-libtensorflow.js +254 -0
- package/dist/ts/install-libtensorflow.js.map +1 -0
- package/dist/ts/ops/array_ops.d.ts +29 -0
- package/dist/ts/ops/array_ops.d.ts.map +1 -0
- package/dist/ts/ops/array_ops.js +54 -0
- package/dist/ts/ops/array_ops.js.map +1 -0
- package/dist/ts/ops/index.d.ts +5 -0
- package/dist/ts/ops/index.d.ts.map +1 -0
- package/dist/ts/ops/index.js +5 -0
- package/dist/ts/ops/index.js.map +1 -0
- package/dist/ts/ops/math_ops.d.ts +96 -0
- package/dist/ts/ops/math_ops.d.ts.map +1 -0
- package/dist/ts/ops/math_ops.js +277 -0
- package/dist/ts/ops/math_ops.js.map +1 -0
- package/dist/ts/ops/nn_ops.d.ts +130 -0
- package/dist/ts/ops/nn_ops.d.ts.map +1 -0
- package/dist/ts/ops/nn_ops.js +340 -0
- package/dist/ts/ops/nn_ops.js.map +1 -0
- package/dist/ts/ops/variable_ops.d.ts +128 -0
- package/dist/ts/ops/variable_ops.d.ts.map +1 -0
- package/dist/ts/ops/variable_ops.js +267 -0
- package/dist/ts/ops/variable_ops.js.map +1 -0
- package/dist/ts/session.d.ts +83 -0
- package/dist/ts/session.d.ts.map +1 -0
- package/dist/ts/session.js +81 -0
- package/dist/ts/session.js.map +1 -0
- package/package.json +63 -0
- package/scripts/install.js +100 -0
- package/scripts/test-install.js +82 -0
- package/scripts/test.js +45 -0
- package/src/native/addon.cc +12 -0
- package/src/native/graph.cc +442 -0
- package/src/native/graph.h +52 -0
- package/src/native/platform_tf.h +8 -0
- package/src/native/session.cc +716 -0
- 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
|
+
};
|