Skip to content

Commit df1e8db

Browse files
committed
cont : alternative initialization of global objects
ggml-ci
1 parent ae56ec2 commit df1e8db

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

ggml/src/ggml-metal.m

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
// globals
2424

25+
// initialized in ggml_backend_metal_reg
2526
static struct ggml_backend_reg g_ggml_backend_metal_reg;
2627
static struct ggml_backend_device g_ggml_backend_metal_device;
2728

@@ -3627,7 +3628,7 @@ static bool ggml_backend_metal_device_supports_buft(ggml_backend_dev_t dev, ggml
36273628
UNUSED(dev);
36283629
}
36293630

3630-
static const struct ggml_backend_device_i ggml_backend_metal_device_i = {
3631+
static struct ggml_backend_device_i ggml_backend_metal_device_i = {
36313632
/* .get_name = */ ggml_backend_metal_device_get_name,
36323633
/* .get_description = */ ggml_backend_metal_device_get_description,
36333634
/* .get_memory = */ ggml_backend_metal_device_get_memory,
@@ -3647,13 +3648,7 @@ static bool ggml_backend_metal_device_supports_buft(ggml_backend_dev_t dev, ggml
36473648

36483649
// backend registry
36493650

3650-
static struct ggml_backend_device g_ggml_backend_metal_device = (struct ggml_backend_device) {
3651-
/* .iface = */ ggml_backend_metal_device_i,
3652-
/* .reg = */ &g_ggml_backend_metal_reg,
3653-
/* .context = */ NULL,
3654-
};
3655-
3656-
static const char * ggml_backend_metal_reg_name(ggml_backend_reg_t reg) {
3651+
static const char * ggml_backend_metal_reg_get_name(ggml_backend_reg_t reg) {
36573652
return "Metal";
36583653

36593654
GGML_UNUSED(reg);
@@ -3674,18 +3669,27 @@ static ggml_backend_dev_t ggml_backend_metal_reg_device_get(ggml_backend_reg_t r
36743669
GGML_UNUSED(index);
36753670
}
36763671

3677-
static const struct ggml_backend_reg_i ggml_backend_metal_reg_i = {
3678-
/* .get_name = */ ggml_backend_metal_reg_name,
3672+
static struct ggml_backend_reg_i ggml_backend_metal_reg_i = {
3673+
/* .get_name = */ ggml_backend_metal_reg_get_name,
36793674
/* .device_count = */ ggml_backend_metal_reg_device_count,
36803675
/* .device_get = */ ggml_backend_metal_reg_device_get,
36813676
/* .get_proc_address = */ NULL,
36823677
};
36833678

3684-
static struct ggml_backend_reg g_ggml_backend_metal_reg = {
3685-
/* .iface = */ ggml_backend_metal_reg_i,
3686-
/* .context = */ NULL,
3687-
};
3688-
36893679
ggml_backend_reg_t ggml_backend_metal_reg(void) {
3680+
// TODO: make this thread-safe somehow?
3681+
{
3682+
g_ggml_backend_metal_reg = (struct ggml_backend_reg) {
3683+
/* .iface = */ ggml_backend_metal_reg_i,
3684+
/* .context = */ NULL,
3685+
};
3686+
3687+
g_ggml_backend_metal_device = (struct ggml_backend_device) {
3688+
/* .iface = */ ggml_backend_metal_device_i,
3689+
/* .reg = */ &g_ggml_backend_metal_reg,
3690+
/* .context = */ NULL,
3691+
};
3692+
}
3693+
36903694
return &g_ggml_backend_metal_reg;
36913695
}

0 commit comments

Comments
 (0)