Skip to content

Commit f57fc8c

Browse files
committed
set vae tile size via env var
1 parent cfd5382 commit f57fc8c

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

stable-diffusion.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,20 @@ class StableDiffusionGGML {
10931093
decode ? 3 : C,
10941094
x->ne[3]); // channels
10951095
int64_t t0 = ggml_time_ms();
1096+
1097+
int tile_size = 32;
1098+
// TODO: arg instead of env?
1099+
const char* SD_TILE_SIZE = getenv("SD_TILE_SIZE");
1100+
if (SD_TILE_SIZE != nullptr) {
1101+
std::string sd_tile_size_str = SD_TILE_SIZE;
1102+
try {
1103+
tile_size = std::stoi(sd_tile_size_str);
1104+
} catch (const std::invalid_argument&) {
1105+
LOG_WARN("Invalid");
1106+
} catch (const std::out_of_range&) {
1107+
LOG_WARN("OOR");
1108+
}
1109+
}
10961110
if (!use_tiny_autoencoder) {
10971111
if (decode) {
10981112
ggml_tensor_scale(x, 1.0f / scale_factor);
@@ -1104,7 +1118,7 @@ class StableDiffusionGGML {
11041118
auto on_tiling = [&](ggml_tensor* in, ggml_tensor* out, bool init) {
11051119
first_stage_model->compute(n_threads, in, decode, &out);
11061120
};
1107-
sd_tiling(x, result, 8, 32, 0.5f, on_tiling, decode);
1121+
sd_tiling(x, result, 8, tile_size, 0.5f, on_tiling, decode);
11081122
} else {
11091123
first_stage_model->compute(n_threads, x, decode, &result);
11101124
}

0 commit comments

Comments
 (0)