diff --git a/benchmarks/benchmark_base.py b/benchmarks/benchmark_base.py index febbf7d6743..4fc87332353 100644 --- a/benchmarks/benchmark_base.py +++ b/benchmarks/benchmark_base.py @@ -394,3 +394,22 @@ def geometry(self): v_inner=np.array([-1, -1], dtype=np.float64), v_outer=np.array([-1, -1], dtype=np.float64), ) + + + @property + def estimators(self): + return radfield_mc_estimators.RadiationFieldMCEstimators( + j_estimator=np.array([0.0, 0.0], dtype=np.float64), + nu_bar_estimator=np.array([0.0, 0.0], dtype=np.float64), + j_blue_estimator=np.array( + [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], dtype=np.float64 + ), + Edotlu_estimator=np.array( + [[0.0, 0.0, 1.0], [0.0, 0.0, 1.0]], dtype=np.float64 + ), + photo_ion_estimator=np.empty((0, 0), dtype=np.float64), + stim_recomb_estimator=np.empty((0, 0), dtype=np.float64), + bf_heating_estimator=np.empty((0, 0), dtype=np.float64), + stim_recomb_cooling_estimator=np.empty((0, 0), dtype=np.float64), + photo_ion_estimator_statistics=np.empty((0, 0), dtype=np.int64), + ) diff --git a/benchmarks/run_tardis.py b/benchmarks/run_tardis.py index 8fca11f6030..6fcb2f7d244 100644 --- a/benchmarks/run_tardis.py +++ b/benchmarks/run_tardis.py @@ -4,8 +4,6 @@ from benchmarks.benchmark_base import BenchmarkBase from tardis import run_tardis -from tardis.io.configuration.config_reader import Configuration - class BenchmarkRunTardis(BenchmarkBase): """ @@ -14,12 +12,8 @@ class BenchmarkRunTardis(BenchmarkBase): def __init__(self): super().__init__() - self.config = None - - def setup(self): filename = "data/tardis_configv1_benchmark.yml" - path = self.get_relative_path(filename) - self.config = Configuration.from_yaml(path) + self.path = self.get_relative_path(filename) def time_run_tardis(self): - run_tardis(self.config, log_level="ERROR", show_progress_bars=False) + run_tardis(self.path, log_level="ERROR", show_progress_bars=False) diff --git a/benchmarks/transport_geometry_calculate_distances.py b/benchmarks/transport_geometry_calculate_distances.py index c14a0fc7efc..4f5829f40b8 100644 --- a/benchmarks/transport_geometry_calculate_distances.py +++ b/benchmarks/transport_geometry_calculate_distances.py @@ -14,18 +14,9 @@ class BenchmarkTransportGeometryCalculateDistances(BenchmarkBase): def model(self): return 5.2e7 - @parameterize( - { - "Packet params": [ - {"mu": 0.3, "r": 7.5e14}, - {"mu": -0.3, "r": 7.5e13}, - {"mu": -0.3, "r": 7.5e14}, - ] - } - ) - def time_calculate_distance_boundary(self, packet_params): - mu = packet_params["mu"] - r = packet_params["r"] + def time_calculate_distance_boundary(self): + mu = 0.3 + r = 7.5e14 calculate_distances.calculate_distance_boundary( r, mu, self.geometry.r_inner[0], self.geometry.r_outer[0] diff --git a/benchmarks/transport_montecarlo_numba_formal_integral_p.py b/benchmarks/transport_montecarlo_numba_formal_integral_p.py index e8a69008a11..1014926b12f 100644 --- a/benchmarks/transport_montecarlo_numba_formal_integral_p.py +++ b/benchmarks/transport_montecarlo_numba_formal_integral_p.py @@ -12,7 +12,8 @@ from tardis.io.configuration.config_reader import Configuration from tardis.model.geometry.radial1d import NumbaRadial1DGeometry - +# Error in all functions: Terminating: fork() called from a process already using GNU OpenMP, this is unsafe. +@skip_benchmark class BenchmarkMontecarloMontecarloNumbaNumbaFormalIntegral(BenchmarkBase): """ Class to benchmark the numba formal integral function. @@ -53,16 +54,14 @@ def __init__(self): def time_intensity_black_body(self, parameters): nu = parameters["nu"] temperature = parameters["temperature"] - func = formal_integral.intensity_black_body - func(nu, temperature) + formal_integral.intensity_black_body(nu, temperature) @parameterize({"N": (1e2, 1e3, 1e4, 1e5)}) def time_trapezoid_integration(self, n): - func = formal_integral.trapezoid_integration h = 1.0 data = np.random.random(int(n)) - func(data, h) + formal_integral.trapezoid_integration(data, h) @staticmethod def calculate_z(r, p): @@ -106,6 +105,8 @@ def time_explosion(self): # time taken for a photon to move 1 cm return 1 / c.c.cgs.value + # Error: Terminating: fork() called from a process already using GNU OpenMP, this is unsafe. + @skip_benchmark @parameterize({"p": [0.0, 0.5, 1.0], "Test data": TESTDATA}) def time_calculate_z(self, p, test_data): func = formal_integral.calculate_z @@ -121,7 +122,6 @@ def time_populate_z_photosphere(self, p, test_data): formal_integral.FormalIntegrator( self.formal_integral_geometry(test_data), None, None ) - func = formal_integral.populate_z r_inner = self.formal_integral_geometry(test_data).r_inner self.formal_integral_geometry(test_data).r_outer @@ -129,7 +129,7 @@ def time_populate_z_photosphere(self, p, test_data): oz = np.zeros_like(r_inner) oshell_id = np.zeros_like(oz, dtype=np.int64) - func( + formal_integral.populate_z( self.formal_integral_geometry(test_data), self.formal_integral_geometry(test_data), p, @@ -159,6 +159,8 @@ def time_populate_z_shells(self, p, test_data) -> None: oshell_id, ) + # Error: Terminating: fork() called from a process already using GNU OpenMP, this is unsafe. + @skip_benchmark @parameterize( { "Parameters": [ @@ -174,6 +176,8 @@ def time_calculate_p_values(self, Parameters): # Benchmark for functions in FormalIntegrator class + # Error: Terminating: fork() called from a process already using GNU OpenMP, this is unsafe. + @skip_benchmark def time_FormalIntegrator_functions(self): self.FormalIntegrator.calculate_spectrum( self.Simulation.transport.transport_state.spectrum.frequency @@ -181,6 +185,6 @@ def time_FormalIntegrator_functions(self): self.FormalIntegrator.make_source_function() self.FormalIntegrator.generate_numba_objects() self.FormalIntegrator.formal_integral( - self.Simulation.transport.transport_state.spectrum.frequency, + self.Simulation.transport.transport_state.spectrum.frequency, 1000 ) diff --git a/benchmarks/transport_montecarlo_numba_interface.py b/benchmarks/transport_montecarlo_numba_interface.py index f75c016ba6a..ac8f79791f6 100644 --- a/benchmarks/transport_montecarlo_numba_interface.py +++ b/benchmarks/transport_montecarlo_numba_interface.py @@ -23,72 +23,4 @@ def time_opacity_state_initialize(self, input_params): line_interaction_type, self.verysimple_disable_line_scattering, self.verysimple_continuum_processes_enabled, - ) - - - @parameterize( - { - "parameters": [ - { - "nus": [3.0e15, 0.0, 1e15, 1e5], - "energies": [0.4, 0.1, 0.6, 1e10], - "initial_mus": [0.1, 0, 1, 0.9], - "initial_rs": [3e42, 4.5e45, 0, 9.0e40], - "last_interaction_in_nus": np.array( - [3.0e15, 0.0, 1e15, 1e5], dtype=np.float64 - ), - "last_interaction_types": np.array([1, 1, 3, 2], dtype=np.int64), - "last_interaction_in_ids": np.array([100, 0, 1, 1000], dtype=np.int64), - "last_interaction_out_ids": np.array( - [1201, 123, 545, 1232], dtype=np.int64 - ), - "last_interaction_shell_ids": np.array([2, -1, 6, 0], dtype=np.int64) - } - ] - } - ) - def time_VPacketCollection_add_packet(self, parameters): - verysimple_3vpacket_collection = self.verysimple_3vpacket_collection - - nus = parameters["nus"] - energies = parameters["energies"] - initial_mus = parameters["initial_mus"] - initial_rs = parameters["initial_rs"] - last_interaction_in_nus = parameters["last_interaction_in_nus"] - last_interaction_types = parameters["last_interaction_types"] - last_interaction_in_ids = parameters["last_interaction_in_ids"] - last_interaction_out_ids = parameters["last_interaction_out_ids"] - last_interaction_shell_ids = parameters["last_interaction_shell_ids"] - - for ( - nu, - energy, - initial_mu, - initial_r, - last_interaction_in_nu, - last_interaction_type, - last_interaction_in_id, - last_interaction_out_id, - last_interaction_shell_id, - ) in zip( - nus, - energies, - initial_mus, - initial_rs, - last_interaction_in_nus, - last_interaction_types, - last_interaction_in_ids, - last_interaction_out_ids, - last_interaction_shell_ids, - ): - verysimple_3vpacket_collection.add_packet( - nu, - energy, - initial_mu, - initial_r, - last_interaction_in_nu, - last_interaction_type, - last_interaction_in_id, - last_interaction_out_id, - last_interaction_shell_id, - ) + ) \ No newline at end of file diff --git a/benchmarks/transport_montecarlo_opacities.py b/benchmarks/transport_montecarlo_opacities.py index 4514cf8fa65..c5fe0196f47 100644 --- a/benchmarks/transport_montecarlo_opacities.py +++ b/benchmarks/transport_montecarlo_opacities.py @@ -89,16 +89,3 @@ def time_pair_creation_opacity_calculation( calculate_opacity.pair_creation_opacity_calculation( energy, ejecta_density, iron_group_fraction ) - - @parameterize( - { - "Energy": [ - 511.0, - 255.5, - 0.0, - 511.0e7, - ] - } - ) - def time_kappa_calculation(self, energy): - calculate_opacity.kappa_calculation(energy) \ No newline at end of file diff --git a/benchmarks/transport_montecarlo_packet.py b/benchmarks/transport_montecarlo_packet.py index bbbb2640ad9..dd3ca959c31 100644 --- a/benchmarks/transport_montecarlo_packet.py +++ b/benchmarks/transport_montecarlo_packet.py @@ -23,24 +23,6 @@ class BenchmarkMontecarloMontecarloNumbaPacket(BenchmarkBase): Class to benchmark the numba packet function. """ - @property - def estimators(self): - return radfield_mc_estimators.RadiationFieldMCEstimators( - j_estimator=np.array([0.0, 0.0], dtype=np.float64), - nu_bar_estimator=np.array([0.0, 0.0], dtype=np.float64), - j_blue_estimator=np.array( - [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], dtype=np.float64 - ), - Edotlu_estimator=np.array( - [[0.0, 0.0, 1.0], [0.0, 0.0, 1.0]], dtype=np.float64 - ), - photo_ion_estimator=np.empty((0, 0), dtype=np.float64), - stim_recomb_estimator=np.empty((0, 0), dtype=np.float64), - bf_heating_estimator=np.empty((0, 0), dtype=np.float64), - stim_recomb_cooling_estimator=np.empty((0, 0), dtype=np.float64), - photo_ion_estimator_statistics=np.empty((0, 0), dtype=np.int64), - ) - @parameterize( { "Parameters": [ diff --git a/benchmarks/transport_montecarlo_single_packet_loop.py b/benchmarks/transport_montecarlo_single_packet_loop.py index 3bea2b1b3e6..a92418e40d2 100644 --- a/benchmarks/transport_montecarlo_single_packet_loop.py +++ b/benchmarks/transport_montecarlo_single_packet_loop.py @@ -4,6 +4,7 @@ from benchmarks.benchmark_base import BenchmarkBase from tardis.transport.montecarlo import single_packet_loop +from asv_runner.benchmarks.mark import skip_benchmark class BenchmarkMontecarloMontecarloNumbaVpacket(BenchmarkBase): @@ -11,13 +12,14 @@ class BenchmarkMontecarloMontecarloNumbaVpacket(BenchmarkBase): Class to benchmark the single packet loop function. """ + @skip_benchmark def time_single_packet_loop(self): single_packet_loop.single_packet_loop( self.packet, self.verysimple_numba_radial_1d_geometry, self.verysimple_time_explosion, self.verysimple_opacity_state, - self.verysimple_radfield_mc_estimators, + self.estimators, self.verysimple_packet_collection, self.rpacket_tracker, self.montecarlo_configuration diff --git a/benchmarks/transport_montecarlo_vpacket.py b/benchmarks/transport_montecarlo_vpacket.py index 6a5be565661..b4e844781cc 100644 --- a/benchmarks/transport_montecarlo_vpacket.py +++ b/benchmarks/transport_montecarlo_vpacket.py @@ -3,7 +3,7 @@ """ import numpy as np -from asv_runner.benchmarks.mark import parameterize +from asv_runner.benchmarks.mark import parameterize, skip_benchmark import tardis.transport.montecarlo.vpacket as vpacket from benchmarks.benchmark_base import BenchmarkBase @@ -144,6 +144,7 @@ def time_trace_bad_vpacket(self): continuum_processes_enabled, ) + @skip_benchmark @parameterize( { "Paramters": [