Skip to content

Commit

Permalink
Fixed bug that resets the values of use_threads in APES.
Browse files Browse the repository at this point in the history
  • Loading branch information
vitenti committed Jun 16, 2023
1 parent 372c802 commit 313fdc3
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions numcosmo/math/ncm_fit_esmcmc_walker_apes.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ enum
PROP_K_TYPE,
PROP_OVER_SMOOTH,
PROP_USE_INTERP,
PROP_USE_THREADS,
};

struct _NcmFitESMCMCWalkerAPESPrivate
Expand All @@ -108,6 +109,7 @@ struct _NcmFitESMCMCWalkerAPESPrivate
NcmFitESMCMCWalkerAPESKType k_type;
gdouble over_smooth;
gboolean use_interp;
gboolean use_threads;
gboolean constructed;
};

Expand Down Expand Up @@ -138,6 +140,7 @@ ncm_fit_esmcmc_walker_apes_init (NcmFitESMCMCWalkerAPES *apes)
self->k_type = NCM_FIT_ESMCMC_WALKER_APES_KTYPE_LEN;
self->over_smooth = 0.0;
self->use_interp = FALSE;
self->use_threads = FALSE;
self->constructed = FALSE;

g_ptr_array_set_free_func (self->thetastar, (GDestroyNotify) ncm_vector_free);
Expand All @@ -164,6 +167,9 @@ _ncm_fit_esmcmc_walker_apes_set_property (GObject *object, guint prop_id, const
case PROP_USE_INTERP:
ncm_fit_esmcmc_walker_apes_use_interp (apes, g_value_get_boolean (value));
break;
case PROP_USE_THREADS:
ncm_fit_esmcmc_walker_apes_set_use_threads (apes, g_value_get_boolean (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
Expand Down Expand Up @@ -191,6 +197,9 @@ _ncm_fit_esmcmc_walker_apes_get_property (GObject *object, guint prop_id, GValue
case PROP_USE_INTERP:
g_value_set_boolean (value, ncm_fit_esmcmc_walker_apes_interp (apes));
break;
case PROP_USE_THREADS:
g_value_set_boolean (value, ncm_fit_esmcmc_walker_apes_get_use_threads (apes));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
Expand Down Expand Up @@ -298,6 +307,14 @@ ncm_fit_esmcmc_walker_apes_class_init (NcmFitESMCMCWalkerAPESClass *klass)
TRUE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB));

g_object_class_install_property (object_class,
PROP_USE_THREADS,
g_param_spec_boolean ("use-threads",
NULL,
"Whether to use threads when building the posterior approximation",
FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB));

walker_class->set_size = &_ncm_fit_esmcmc_walker_apes_set_size;
walker_class->get_size = &_ncm_fit_esmcmc_walker_apes_get_size;
walker_class->set_nparams = &_ncm_fit_esmcmc_walker_apes_set_nparams;
Expand Down Expand Up @@ -408,6 +425,9 @@ _ncm_fit_esmcmc_walker_apes_set_sys (NcmFitESMCMCWalker *walker)
ncm_stats_dist_set_over_smooth (self->sd0, self->over_smooth);
ncm_stats_dist_set_over_smooth (self->sd1, self->over_smooth);

ncm_stats_dist_set_use_threads (self->sd0, self->use_threads);
ncm_stats_dist_set_use_threads (self->sd1, self->use_threads);

for (i = 0; i < self->size; i++)
{
NcmVector *thetastar_i = ncm_vector_new (self->nparams);
Expand Down Expand Up @@ -944,8 +964,13 @@ ncm_fit_esmcmc_walker_apes_set_use_threads (NcmFitESMCMCWalkerAPES *apes, gboole
{
NcmFitESMCMCWalkerAPESPrivate * const self = apes->priv;

ncm_stats_dist_set_use_threads (self->sd0, use_threads);
ncm_stats_dist_set_use_threads (self->sd1, use_threads);
self->use_threads = use_threads;

if (self->constructed)
{
ncm_stats_dist_set_use_threads (self->sd0, self->use_threads);
ncm_stats_dist_set_use_threads (self->sd1, self->use_threads);
}
}

/**
Expand All @@ -962,6 +987,7 @@ ncm_fit_esmcmc_walker_apes_get_use_threads (NcmFitESMCMCWalkerAPES *apes)
gboolean use_threads0 = ncm_stats_dist_get_use_threads (self->sd0);
gboolean use_threads1 = ncm_stats_dist_get_use_threads (self->sd1);

g_assert (self->use_threads == use_threads0);
g_assert (use_threads0 == use_threads1);

return use_threads0;
Expand Down

0 comments on commit 313fdc3

Please sign in to comment.