Skip to content

Commit 7ba7b3a

Browse files
committed
Fix compile issue in demos/video/chapel-webcam.
1 parent d359193 commit 7ba7b3a

9 files changed

Lines changed: 113 additions & 23 deletions

File tree

bridge/include/bridge.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ typedef double float64_t;
1515
typedef char bool_t;
1616
typedef unsigned char uint8_t;
1717
typedef unsigned int uint32_t;
18+
typedef unsigned long long uint64_t;
1819

1920
typedef struct bridge_tensor_t {
2021
float* data;
@@ -24,6 +25,17 @@ typedef struct bridge_tensor_t {
2425
} bridge_tensor_t;
2526

2627

28+
typedef struct bridge_pt_model_t {
29+
uint64_t pt_module;
30+
} bridge_pt_model_t;
31+
32+
typedef struct test_struct_t {
33+
int* field;
34+
} test_struct_t;
35+
36+
37+
void hello_world(void);
38+
2739
typedef struct nil_scalar_tensor_t {
2840
float scalar;
2941
bridge_tensor_t tensor;
@@ -36,6 +48,10 @@ float* unsafe(const float* arr);
3648
bridge_tensor_t load_tensor_from_file(const uint8_t* file_path);
3749
bridge_tensor_t load_tensor_dict_from_file(const uint8_t* file_path,const uint8_t* tensor_key);
3850
bridge_tensor_t load_run_model(const uint8_t* model_path, bridge_tensor_t input);
51+
52+
bridge_pt_model_t load_model(const uint8_t* model_path);
53+
bridge_tensor_t model_forward(bridge_pt_model_t model, bridge_tensor_t input);
54+
3955
bridge_tensor_t resize(bridge_tensor_t input,int height,int width);
4056
bridge_tensor_t imagenet_normalize(bridge_tensor_t input);
4157

bridge/lib/bridge.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,40 @@ extern "C" bridge_tensor_t load_run_model(const uint8_t* model_path, bridge_tens
130130
return torch_to_bridge(output);
131131
}
132132

133+
134+
extern "C" bridge_pt_model_t load_model(const uint8_t* model_path) {
135+
std::string mp(reinterpret_cast<const char*>(model_path));
136+
std::cout << "Loading model from path: " << mp << std::endl;
137+
std::cout.flush();
138+
139+
bridge_pt_model_t model_wrapper;
140+
torch::jit::Module* pt_module = new torch::jit::Module(); // = (torch::jit::Module*) model_wrapper.pt_module;
141+
try {
142+
*pt_module = torch::jit::load(mp);
143+
std::cout << "Model loaded successfully!" << std::endl;
144+
model_wrapper.pt_module = (uint64_t) pt_module;
145+
} catch (const c10::Error& e) {
146+
std::cerr << "error loading the model\n" << e.msg();
147+
}
148+
149+
return model_wrapper;
150+
}
151+
152+
extern "C" bridge_tensor_t model_forward(bridge_pt_model_t model, bridge_tensor_t input) {
153+
auto t_input = bridge_to_torch(input);
154+
std::vector<torch::jit::IValue> inputs;
155+
inputs.push_back(t_input);
156+
torch::jit::Module* pt_module = (torch::jit::Module*) model.pt_module;
157+
auto output = pt_module->forward(inputs).toTensor();
158+
return torch_to_bridge(output);
159+
}
160+
161+
162+
extern "C" void hello_world(void) {
163+
std::cout << "Hello from C++!" << std::endl;
164+
std::cout.flush();
165+
}
166+
133167
extern "C" bridge_tensor_t increment3(bridge_tensor_t arr) {
134168
auto t = bridge_to_torch(arr);
135169
// Increment the tensor

demos/video/chapel-webcam/Makefile

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,41 @@ all: main
77
# chpl --library --library-makefile --library-cmakelists smol.chpl
88

99

10-
CHAI_DIR = `cd ../../.. && pwd`
10+
CHAI_DIR := $(shell cd ../../.. && pwd)
11+
12+
# BRIDGE_CFLAGS = \
13+
# -I$(CHAI_DIR)/bridge/include \
14+
# $(CHAI_DIR)/build/libbridge_objs.a
15+
1116

1217
BRIDGE_CFLAGS = \
13-
-I $(CHAI_DIR)/bridge/include \
14-
$(CHAI_DIR)/build/libbridge_objs.a
18+
-I $(CHAI_DIR)/bridge/include
1519

1620
BRIDGE_LDFLAGS = \
1721
-L $(CHAI_DIR)/build \
1822
-L $(CHAI_DIR)/libtorch/lib \
1923
-Wl,-rpath,$(CHAI_DIR)/libtorch/lib
2024

25+
TORCH_LDFLAGS = \
26+
-L $(CHAI_DIR)/libtorch/lib \
27+
-Wl,-rpath,$(CHAI_DIR)/libtorch/lib
28+
2129
LIB_GEN_CMD = \
2230
chpl \
31+
smol.chpl \
2332
--library \
2433
--dynamic \
2534
--library-dir lib \
2635
--library-makefile \
2736
--library-cmakelists \
2837
--no-munge-with-ids \
2938
-M ../../../lib \
30-
smol.chpl \
3139
--ccflags "$(BRIDGE_CFLAGS)" \
3240
--ldflags "$(BRIDGE_LDFLAGS)"
41+
42+
43+
# --ccflags "$(BRIDGE_CFLAGS)" \
44+
# --ldflags "$(BRIDGE_LDFLAGS)"
3345
# --savec lib/savec \
3446
3547

@@ -47,12 +59,12 @@ libsmol: smol.chpl
4759
$(LIB_GEN_CMD)
4860

4961

50-
OPENCV_CFLAGS = `pkg-config --cflags opencv4`
51-
OPENCV_LDFLAGS = `pkg-config --cflags --libs opencv4`
62+
OPENCV_CFLAGS := $(shell pkg-config --cflags opencv4)
63+
OPENCV_LDFLAGS := $(shell pkg-config --cflags --libs opencv4)
5264

5365
main: main.cpp smol_wrapper.h lib/libsmol.so
5466
@echo $(OPENCV_CFLAGS)
55-
$(CHPL_LINKER) $(CHPL_CFLAGS) $(OPENCV_CFLAGS) -std=c++20 -fPIC main.cpp -o main $(CHPL_LDFLAGS) $(OPENCV_LDFLAGS) $(BRIDGE_LDFLAGS)
67+
$(CHPL_LINKER) $(CHPL_CFLAGS) $(OPENCV_CFLAGS) $(BRIDGE_CFLAGS) -std=c++20 -fPIC main.cpp -o main $(CHPL_LDFLAGS) $(OPENCV_LDFLAGS) $(BRIDGE_LDFLAGS)
5668

5769
clean:
5870
rm -f maincpp maincpp.o main.o main

demos/video/chapel-webcam/lib/Makefile.smol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ CHPL_THIRD_PARTY = /opt/homebrew/Cellar/chapel/2.4.0_1/libexec/third-party
66

77
CHPL_HOME = /opt/homebrew/Cellar/chapel/2.4.0_1/libexec
88

9-
CHPL_CFLAGS = -Ilib -Wno-unused -Wno-uninitialized -Wno-pointer-sign -Wno-incompatible-pointer-types -Wno-tautological-compare -I/opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/internal -I/opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/packages -I$(CHPL_RUNTIME_INCL)/localeModels/flat -I$(CHPL_RUNTIME_INCL)/localeModels -I$(CHPL_RUNTIME_INCL)/comm/none -I$(CHPL_RUNTIME_INCL)/comm -I$(CHPL_RUNTIME_INCL)/tasks/qthreads -I$(CHPL_RUNTIME_INCL)/. -I$(CHPL_RUNTIME_INCL)/./qio -I$(CHPL_RUNTIME_INCL)/./atomics/cstdlib -I$(CHPL_RUNTIME_INCL)/./mem/jemalloc -I$(CHPL_THIRD_PARTY)/utf8-decoder -I$(CHPL_THIRD_PARTY)/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/include -Wno-error=unused-variable -I$(CHPL_THIRD_PARTY)/re2/install/darwin-arm64-native-llvm-none/include -I. -I/opt/homebrew/Cellar/gmp/6.3.0/include -I/opt/homebrew/Cellar/hwloc/2.12.0/include -I/opt/homebrew/Cellar/jemalloc/5.3.0/include -I/opt/homebrew/include
9+
CHPL_CFLAGS = -Ilib -Wno-unused -Wno-uninitialized -Wno-pointer-sign -Wno-incompatible-pointer-types -Wno-tautological-compare -I/opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/internal -I/opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/packages -I../../../lib -I$(CHPL_RUNTIME_INCL)/localeModels/flat -I$(CHPL_RUNTIME_INCL)/localeModels -I$(CHPL_RUNTIME_INCL)/comm/none -I$(CHPL_RUNTIME_INCL)/comm -I$(CHPL_RUNTIME_INCL)/tasks/qthreads -I$(CHPL_RUNTIME_INCL)/. -I$(CHPL_RUNTIME_INCL)/./qio -I$(CHPL_RUNTIME_INCL)/./atomics/cstdlib -I$(CHPL_RUNTIME_INCL)/./mem/jemalloc -I$(CHPL_THIRD_PARTY)/utf8-decoder -I$(CHPL_THIRD_PARTY)/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/include -Wno-error=unused-variable -I$(CHPL_THIRD_PARTY)/re2/install/darwin-arm64-native-llvm-none/include -I. -I/opt/homebrew/Cellar/gmp/6.3.0/include -I/opt/homebrew/Cellar/hwloc/2.12.0/include -I/opt/homebrew/Cellar/jemalloc/5.3.0/include -I/opt/homebrew/include
1010

11-
CHPL_LDFLAGS = -Llib -lsmol -ltorch -ltorch_cpu -lc10 -ltorch_global_deps -L$(CHPL_RUNTIME_LIB)/darwin/llvm/arm64/cpu-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-cstdlib/hwloc-system/re2-bundled/fs-none/lib_pic-none/san-none -lchpl -L$(CHPL_THIRD_PARTY)/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -Wl,-rpath,$(CHPL_THIRD_PARTY)/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -lqthread -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -L$(CHPL_THIRD_PARTY)/re2/install/darwin-arm64-native-llvm-none/lib -lre2 -Wl,-rpath,$(CHPL_THIRD_PARTY)/re2/install/darwin-arm64-native-llvm-none/lib -lm -lpthread -L/opt/homebrew/Cellar/gmp/6.3.0/lib -lgmp -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -Wl,-rpath,/opt/homebrew/Cellar/hwloc/2.12.0/lib -lhwloc -L/opt/homebrew/Cellar/jemalloc/5.3.0/lib -Wl,-rpath,/opt/homebrew/Cellar/jemalloc/5.3.0/lib -ljemalloc -L/opt/homebrew/lib
11+
CHPL_LDFLAGS = -Llib -lsmol -ltorch -ltorch_cpu -lc10 -ltorch_global_deps -lbridge_objs -L$(CHPL_RUNTIME_LIB)/darwin/llvm/arm64/cpu-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-cstdlib/hwloc-system/re2-bundled/fs-none/lib_pic-none/san-none -lchpl -L$(CHPL_THIRD_PARTY)/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -Wl,-rpath,$(CHPL_THIRD_PARTY)/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -lqthread -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -L$(CHPL_THIRD_PARTY)/re2/install/darwin-arm64-native-llvm-none/lib -lre2 -Wl,-rpath,$(CHPL_THIRD_PARTY)/re2/install/darwin-arm64-native-llvm-none/lib -lm -lpthread -L/opt/homebrew/Cellar/gmp/6.3.0/lib -lgmp -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -Wl,-rpath,/opt/homebrew/Cellar/hwloc/2.12.0/lib -lhwloc -L/opt/homebrew/Cellar/jemalloc/5.3.0/lib -Wl,-rpath,/opt/homebrew/Cellar/jemalloc/5.3.0/lib -ljemalloc -L/opt/homebrew/lib
1212

1313
CHPL_COMPILER = /opt/homebrew/Cellar/llvm@19/19.1.7/bin/clang
1414

demos/video/chapel-webcam/lib/smol.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ set(CHPL_THIRD_PARTY /opt/homebrew/Cellar/chapel/2.4.0_1/libexec/third-party)
66

77
set(CHPL_HOME /opt/homebrew/Cellar/chapel/2.4.0_1/libexec)
88

9-
set(smol_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR} /opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/internal /opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/packages ${CHPL_RUNTIME_INCL}/localeModels/flat ${CHPL_RUNTIME_INCL}/localeModels ${CHPL_RUNTIME_INCL}/comm/none ${CHPL_RUNTIME_INCL}/comm ${CHPL_RUNTIME_INCL}/tasks/qthreads ${CHPL_RUNTIME_INCL}/. ${CHPL_RUNTIME_INCL}/./qio ${CHPL_RUNTIME_INCL}/./atomics/cstdlib ${CHPL_RUNTIME_INCL}/./mem/jemalloc ${CHPL_THIRD_PARTY}/utf8-decoder ${CHPL_THIRD_PARTY}/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/include -Wno-error=unused-variable ${CHPL_THIRD_PARTY}/re2/install/darwin-arm64-native-llvm-none/include . /opt/homebrew/Cellar/gmp/6.3.0/include /opt/homebrew/Cellar/hwloc/2.12.0/include /opt/homebrew/Cellar/jemalloc/5.3.0/include /opt/homebrew/include)
9+
set(smol_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR} /opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/internal /opt/homebrew/Cellar/chapel/2.4.0_1/libexec/modules/packages ../../../lib ${CHPL_RUNTIME_INCL}/localeModels/flat ${CHPL_RUNTIME_INCL}/localeModels ${CHPL_RUNTIME_INCL}/comm/none ${CHPL_RUNTIME_INCL}/comm ${CHPL_RUNTIME_INCL}/tasks/qthreads ${CHPL_RUNTIME_INCL}/. ${CHPL_RUNTIME_INCL}/./qio ${CHPL_RUNTIME_INCL}/./atomics/cstdlib ${CHPL_RUNTIME_INCL}/./mem/jemalloc ${CHPL_THIRD_PARTY}/utf8-decoder ${CHPL_THIRD_PARTY}/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/include -Wno-error=unused-variable ${CHPL_THIRD_PARTY}/re2/install/darwin-arm64-native-llvm-none/include . /opt/homebrew/Cellar/gmp/6.3.0/include /opt/homebrew/Cellar/hwloc/2.12.0/include /opt/homebrew/Cellar/jemalloc/5.3.0/include /opt/homebrew/include)
1010

11-
set(smol_LINK_LIBS -L${CMAKE_CURRENT_LIST_DIR} -lsmol -ltorch -ltorch_cpu -lc10 -ltorch_global_deps -L${CHPL_RUNTIME_LIB}/darwin/llvm/arm64/cpu-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-cstdlib/hwloc-system/re2-bundled/fs-none/lib_pic-none/san-none -lchpl -L${CHPL_THIRD_PARTY}/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -Wl,-rpath,${CHPL_THIRD_PARTY}/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -lqthread -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -L${CHPL_THIRD_PARTY}/re2/install/darwin-arm64-native-llvm-none/lib -lre2 -Wl,-rpath,${CHPL_THIRD_PARTY}/re2/install/darwin-arm64-native-llvm-none/lib -lm -lpthread -L/opt/homebrew/Cellar/gmp/6.3.0/lib -lgmp -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -Wl,-rpath,/opt/homebrew/Cellar/hwloc/2.12.0/lib -lhwloc -L/opt/homebrew/Cellar/jemalloc/5.3.0/lib -Wl,-rpath,/opt/homebrew/Cellar/jemalloc/5.3.0/lib -ljemalloc -L/opt/homebrew/lib -lsmol)
11+
set(smol_LINK_LIBS -L${CMAKE_CURRENT_LIST_DIR} -lsmol -ltorch -ltorch_cpu -lc10 -ltorch_global_deps -lbridge_objs -L${CHPL_RUNTIME_LIB}/darwin/llvm/arm64/cpu-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-cstdlib/hwloc-system/re2-bundled/fs-none/lib_pic-none/san-none -lchpl -L${CHPL_THIRD_PARTY}/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -Wl,-rpath,${CHPL_THIRD_PARTY}/qthread/install/darwin-arm64-native-llvm-none-flat-jemalloc-system/lib -lqthread -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -L${CHPL_THIRD_PARTY}/re2/install/darwin-arm64-native-llvm-none/lib -lre2 -Wl,-rpath,${CHPL_THIRD_PARTY}/re2/install/darwin-arm64-native-llvm-none/lib -lm -lpthread -L/opt/homebrew/Cellar/gmp/6.3.0/lib -lgmp -L/opt/homebrew/Cellar/hwloc/2.12.0/lib -Wl,-rpath,/opt/homebrew/Cellar/hwloc/2.12.0/lib -lhwloc -L/opt/homebrew/Cellar/jemalloc/5.3.0/lib -Wl,-rpath,/opt/homebrew/Cellar/jemalloc/5.3.0/lib -ljemalloc -L/opt/homebrew/lib -lsmol)
1212

1313
set(CHPL_COMPILER /opt/homebrew/Cellar/llvm@19/19.1.7/bin/clang)
1414
set(CHPL_LINKER /opt/homebrew/Cellar/llvm@19/19.1.7/bin/clang++)

demos/video/chapel-webcam/lib/smol.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
#include "wctype.h"
33
#include "ctype.h"
44
#include "ImageHelper/stb_image_helper.h"
5+
#include "bridge.h"
6+
void chpl__init_Bridge(int64_t _ln,
7+
int32_t _fn);
58
void chpl__init_NDArray(int64_t _ln,
69
int32_t _fn);
710
void chpl__init_Standard(int64_t _ln,
@@ -15,7 +18,6 @@ void chpl__init_ndarrayRandom(int64_t _ln,
1518
void chpl__init_smol(int64_t _ln,
1619
int32_t _fn);
1720
int64_t square(int64_t x);
18-
int64_t sumArray(chpl_external_array * a);
1921
void printArray(chpl_external_array * a);
2022
chpl_external_array getNewFrame(chpl_external_array * frame,
2123
int64_t height,

demos/video/chapel-webcam/main.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,11 @@ int main(int argc, char* argv[]) {
141141

142142
square(3);
143143

144-
int64_t array[4] = {1,2,3,4};
145-
chpl_external_array array_ptr = chpl_make_external_array_ptr(&array,4);
146-
int64_t sum = sumArray(&array_ptr);
147-
chpl_free_external_array(array_ptr);
148-
printf("sum: %d\n", sum);
144+
// int64_t array[4] = {1,2,3,4};
145+
// chpl_external_array array_ptr = chpl_make_external_array_ptr(&array,4);
146+
// int64_t sum = sumArray(&array_ptr);
147+
// chpl_free_external_array(array_ptr);
148+
// printf("sum: %d\n", sum);
149149

150150

151151
int64_t matrix[2][3] = { {1, 4, 2}, {3, 6, 8} };

demos/video/chapel-webcam/smol.chpl

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import Utilities as utils;
22

33
use NDArray;
4+
import Bridge;
45

56
export proc square(x: int): int {
67
writeln(x, " * ", x, " = ", x * x);
78
return x * x;
89
}
910

10-
export proc sumArray(a: [] int): int {
11-
var sum: int = 0;
12-
for x in a do
13-
sum += x;
14-
return sum;
15-
}
11+
// export proc sumArray(a: [] int): int {
12+
// var sum: int = 0;
13+
// for x in a do
14+
// sum += x;
15+
// return sum;
16+
// }
1617

1718
export proc printArray(a: [] int): void {
1819
writeln(a);
@@ -32,7 +33,16 @@ proc getTime() {
3233

3334
const startTime = getTime();
3435

36+
config const modelPath: string;
37+
38+
use CTypes;
39+
const fpPtr: c_ptr(uint(8)) = c_ptrToConst(modelPath) : c_ptr(uint(8));
40+
const model = Bridge.load_model(fpPtr);
41+
42+
43+
3544
export proc getNewFrame(ref frame: [] real(32),height: int, width: int,channels: int): [] real(32) {
45+
Bridge.hello_world();
3646

3747
const t = getTime() - startTime;
3848
const shape = (height,width,channels);

lib/Bridge.chpl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Bridge {
22
// require "bridge.h";
33
// require "-ltorch";
44
require "-ltorch", "-ltorch_cpu", "-lc10", "-ltorch_global_deps";
5+
require "bridge.h", "-lbridge_objs";
56

67
import Utilities as util;
78
use Utilities.Standard;
@@ -17,6 +18,15 @@ module Bridge {
1718
var created_by_c: bool;
1819
}
1920

21+
extern record bridge_pt_model_t {
22+
var pt_module: uint(64);
23+
}
24+
extern record test_struct_t {
25+
var field: c_ptr(int(32));
26+
}
27+
28+
extern proc hello_world(): void;
29+
2030
extern record nil_scalar_tensor_t {
2131
var scalar: real(32);
2232
var tensor: bridge_tensor_t;
@@ -51,6 +61,12 @@ module Bridge {
5161
model_path: string_t,
5262
in input: bridge_tensor_t): bridge_tensor_t;
5363

64+
extern proc load_model(model_path: string_t): bridge_pt_model_t;
65+
66+
extern proc model_forward(
67+
in model: bridge_pt_model_t,
68+
in input: bridge_tensor_t): bridge_tensor_t;
69+
5470

5571
extern proc convolve2d(
5672
in input: bridge_tensor_t,

0 commit comments

Comments
 (0)