The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
sd_ctx() now logs
all behavioural parameters from R at startup, the resolved
weight-residency mode (resident vs streamed when
offload_params_to_cpu/params_backend put
params on a different backend), and a running summary of weight data
re-uploaded to the GPU each pass — making silent performance regimes
visible.model_type = "flux2",
with auto-detection from tensors/filename.llm_path argument in sd_ctx() for LLM
text encoders (Qwen3 for FLUX.2 Klein, Mistral-Small for full
FLUX.2).mask argument in
sd_img2img() regenerates only the masked region. Accepts a
PNG path, a numeric matrix, or an SD image (white = generate). Works on
plain SD/SDXL/FLUX 1/2 weights via the denoise mask. New helper
sd_load_mask().sd_generate()’s auto-routing (CFG,
VAE tiling, highres-fix), fixing FLUX.2 VAE-decode crashes.meta_backend argument in sd_ctx():
runs the diffusion model through the ggml meta backend for multi-GPU
tensor split (a single model sharded across all GPUs). Requires ggmlR
>= 0.7.8; falls back to the normal single-backend path otherwise. The
Shiny GUI enables it automatically for FLUX.2.vae_conv_direct now defaults to TRUE — VAE
decoder uses GGML_OP_CONV_2D (direct convolution via
conv2d_mm.comp) instead of the legacy IM2COL + MUL_MAT
path.coopmat_support is available; scalar FMA
fallback used otherwise.sd_app() launches an interactive Shiny application
for image generation.
std::thread: the
UI remains responsive during image generation, with a live progress bar
and ETA display.sd_generate_async() — launches generation in a
background C++ thread.sd_generate_poll() — checks completion status (atomic
flags).sd_generate_result() — retrieves results after
completion.step,
steps, pct, elapsed,
eta_sec), read by Shiny via later::later()
polling.Rprintf,
R_CheckUserInterrupt) are suppressed in the worker thread
to prevent stack corruption.tools/patch_sd_sources.sh rewritten: all
sed calls replaced with perl -pi -e for
cross-platform compatibility (macOS BSD sed + Linux GNU sed).undefined symbol: ggml_backend_vk_get_device_count load
error on CRAN Fedora (clang and gcc). Root cause: ggmlR’s shared library
(ggmlR.so) was built with Vulkan, but the static library
(libggml.a) shipped without Vulkan objects. The old
configure relied on ggml_vulkan_status() which
queries ggmlR.so — it reported “AVAILABLE”, causing sd2R to
compile with -DSD_USE_VULKAN against a
libggml.a that lacked the symbols. Now
configure checks nm libggml.a for a defined
(T) symbol directly, ignoring the runtime ggmlR check
entirely.device_layout parameter in sd_ctx():
distribute sub-models across multiple Vulkan GPUs without separate
processes.
"mono" — all on one GPU (default,
backward-compatible)."split_encoders" — CLIP/T5 on GPU 1, diffusion + VAE on
GPU 0."split_vae" — CLIP/T5 + VAE on GPU 1, diffusion on GPU
0."encoders_cpu" — text encoders on CPU, diffusion + VAE
on GPU.diffusion_gpu, clip_gpu,
vae_gpu integer arguments for manual device assignment
(override presets).sd_profile_start() / sd_profile_stop() —
control event capture.sd_profile_get() — raw event data frame.sd_profile_summary() — formatted summary with durations
and percentages.text_encode (with
text_encode_clip and text_encode_t5
sub-stages), sampling, vae_decode,
vae_encode, model loading.print.sd_profile().sd_pipeline() / sd_node() — sequential
graph-based pipeline. Node types: "txt2img",
"img2img", "upscale",
"save".sd_run_pipeline(pipeline, ctx) — execute pipeline with
a single context.sd_save_pipeline() / sd_load_pipeline() —
JSON serialization.diffusion_model_path,
vae_path, clip_l_path, t5xxl_path
in sd_ctx().cfg_scale auto-defaults to 1.0 for Flux
(guidance-distilled models).sd_generate() now defaults
width/height to init image dimensions when not
specified explicitly.configure.win rewritten to use template approach
(Makevars.win.in → Makevars.win), matching
ggmlR pattern.sd_generate() Entry Pointsd_generate() — single function for all generation
modes. Automatically selects the optimal strategy (direct, tiled
sampling, or highres fix) based on output resolution and available
VRAM.vram_gb parameter in sd_ctx(): set once,
auto-routing handles the rest.sd_generate_multi_gpu() — parallel generation
across multiple Vulkan GPUs via callr, one process per GPU,
with progress reporting.sd_highres_fix() — classic two-pass highres
pipeline: txt2img at native resolution → upscale → tiled img2img
refinement.hr_strength parameter (default 0.4) controls refinement
intensity.sd_img2img_tiled() — img2img with MultiDiffusion
tiled sampling for large images.vae_mode parameter: "normal",
"tiled", "auto" (default). Auto-tiles when
image area exceeds threshold.vae_tile_rel_x / vae_tile_rel_y for
adaptive tile sizing.sd_txt2img_highres() — patch-based generation for
2K, 4K+ images.model_type parameter in sd_ctx():
"sd1", "sd2", "sdxl",
"flux", "sd3".sd_txt2img_tiled() — tiled diffusion sampling at
any resolution. VRAM bounded by tile size, not output resolution.sd_ctx() — create model context.sd_generate() — unified entry point.sd_txt2img(), sd_img2img() — low-level
generation.sd_save_image(), sd_system_info().These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.