fix: rng performance

This commit is contained in:
2025-12-07 17:14:40 -05:00
parent 3954fd7f24
commit b96381c56e
+6 -4
View File
@@ -3,6 +3,7 @@
#include <gsl/gsl_rng.h> #include <gsl/gsl_rng.h>
#include <gsl/gsl_spline.h> #include <gsl/gsl_spline.h>
#include <gsl/gsl_monte_miser.h> #include <gsl/gsl_monte_miser.h>
#include <math.h>
#include <stdio.h> #include <stdio.h>
#include "render.h" #include "render.h"
@@ -101,11 +102,10 @@ int pixel_render(const System *system, int i, int j, const Spline_data spline_da
int render(System *system, double *buffer, int pixel_render_max, double pixel_render_err, double chi_rela_err) { int render(System *system, double *buffer, int pixel_render_max, double pixel_render_err, double chi_rela_err) {
double h = (system->H)*(system->w)/(system->W); double h = (system->H)*(system->w)/(system->W);
double tanpsi2 = (system->w)*(system->w)+h*h; //double tanpsi2 = (system->w)*(system->w)+h*h;
double cotpsi2 = 1/tanpsi2; //double cotpsi2 = 1/tanpsi2;
//double bmax = R0/sqrt(f(R0)*(1+cotpsi2)); //double bmax = R0/sqrt(f(R0)*(1+cotpsi2));
double rmax = sqrt(tanpsi2); double rmax = hypot(system->w, h);
gsl_rng *r = gsl_rng_alloc(gsl_rng_default);
double *x=NULL; double *x=NULL;
double *y = NULL; double *y = NULL;
@@ -122,6 +122,7 @@ int render(System *system, double *buffer, int pixel_render_max, double pixel_re
{ {
gsl_interp_accel *acc = gsl_interp_accel_alloc(); gsl_interp_accel *acc = gsl_interp_accel_alloc();
Spline_data spline_data = {spline, acc}; Spline_data spline_data = {spline, acc};
gsl_rng *r = gsl_rng_alloc(gsl_rng_default);
#pragma omp for #pragma omp for
for(int j = 0; j < H; j++) { for(int j = 0; j < H; j++) {
@@ -131,6 +132,7 @@ int render(System *system, double *buffer, int pixel_render_max, double pixel_re
} }
gsl_interp_accel_free(acc); gsl_interp_accel_free(acc);
gsl_rng_free(r);
} }
return 0; return 0;
} }