MCPcopy Create free account
hub / github.com/PABannier/sam3.cpp / main

Function main

tests/test_metal_encoder_checkpoints.cpp:85–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83}
84
85int main(int argc, char ** argv) {
86 if (argc < 2) {
87 fprintf(stderr, "Usage: %s <model.ggml> [ref_dir]\n", argv[0]);
88 fprintf(stderr, "Default ref_dir: tests/ref_phase3\n");
89 return 1;
90 }
91
92 const std::string model_path = argv[1];
93 const std::string ref_dir = argc >= 3 ? argv[2] : "tests/ref_phase3";
94
95 auto preprocessed = load_ref_f32(ref_dir + "/preprocessed");
96 if (preprocessed.data.empty()) {
97 fprintf(stderr, "failed to load %s/preprocessed.bin\n", ref_dir.c_str());
98 return 1;
99 }
100 if (preprocessed.shape.size() != 4) {
101 fprintf(stderr, "unexpected preprocessed shape rank: %zu\n", preprocessed.shape.size());
102 return 1;
103 }
104
105 const int img_size = preprocessed.shape[2];
106 std::vector<std::string> checkpoints = {
107 "dbg_patch_embed",
108 "dbg_after_pos_embed",
109 "dbg_ln_pre_norm",
110 "dbg_ln_pre_scale",
111 "dbg_after_ln_pre",
112 "dbg_block_15_norm1",
113 "dbg_block_15_attn_out",
114 "dbg_block_15_attn_proj",
115 "dbg_block_15_resid1",
116 "dbg_block_15_norm2",
117 "dbg_block_15_mlp",
118 };
119 for (int i = 0; i < 31; ++i) {
120 checkpoints.emplace_back("dbg_block_" + std::to_string(i) + "_out");
121 }
122 checkpoints.emplace_back("vit_output");
123 checkpoints.emplace_back("neck_trk_0");
124 checkpoints.emplace_back("neck_trk_1");
125 checkpoints.emplace_back("neck_trk_2");
126
127 const std::string cpu_dir = "/tmp/sam3_cpu_checkpoints";
128 const std::string metal_dir = "/tmp/sam3_metal_checkpoints";
129 ensure_dir(cpu_dir);
130 ensure_dir(metal_dir);
131
132 double cpu_ms = 0.0;
133 double metal_ms = 0.0;
134
135 fprintf(stderr, "\n=== CPU Run ===\n");
136 if (!run_backend(model_path, preprocessed.data, img_size, false, 8, checkpoints, cpu_dir, cpu_ms)) {
137 return 1;
138 }
139 fprintf(stderr, "CPU encoder wall time: %.1f ms\n", cpu_ms);
140
141 fprintf(stderr, "\n=== Metal Run ===\n");
142 if (!run_backend(model_path, preprocessed.data, img_size, true, 8, checkpoints, metal_dir, metal_ms)) {

Callers

nothing calls this directly

Calls 6

load_ref_f32Function · 0.85
ensure_dirFunction · 0.85
run_backendFunction · 0.70
format_shapeFunction · 0.70
compare_tensorsFunction · 0.70
numelMethod · 0.45

Tested by

no test coverage detected