Skip to content
Snippets Groups Projects
Commit f5b34717 authored by Cristian Lalescu's avatar Cristian Lalescu
Browse files

save/load precision dependent wisdom

parent a051dcc9
No related branches found
No related tags found
No related merge requests found
...@@ -39,12 +39,14 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base): ...@@ -39,12 +39,14 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base):
name = 'NavierStokes', name = 'NavierStokes',
work_dir = './', work_dir = './',
simname = 'test', simname = 'test',
fluid_precision = 'single'): fluid_precision = 'single',
fftw_plan_rigor = 'FFTW_MEASURE'):
super(NavierStokes, self).__init__( super(NavierStokes, self).__init__(
name = name, name = name,
work_dir = work_dir, work_dir = work_dir,
simname = simname, simname = simname,
dtype = fluid_precision) dtype = fluid_precision)
self.fftw_plan_rigor = fftw_plan_rigor
self.file_datasets_grow = """ self.file_datasets_grow = """
//begincpp //begincpp
H5::IntType ptrdiff_t_dtype(H5::PredType::NATIVE_INT64); //is this ok? H5::IntType ptrdiff_t_dtype(H5::PredType::NATIVE_INT64); //is this ok?
...@@ -205,7 +207,8 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base): ...@@ -205,7 +207,8 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base):
simname, simname,
nx, ny, nz, nx, ny, nz,
dkx, dky, dkz, dkx, dky, dkz,
dealias_type); dealias_type,
{1});
fs->nu = nu; fs->nu = nu;
fs->fmode = fmode; fs->fmode = fmode;
fs->famplitude = famplitude; fs->famplitude = famplitude;
...@@ -215,7 +218,7 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base): ...@@ -215,7 +218,7 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base):
fs->iteration = iteration; fs->iteration = iteration;
fs->read('v', 'c'); fs->read('v', 'c');
//endcpp //endcpp
""".format(self.C_dtype) """.format(self.C_dtype, self.fftw_plan_rigor)
self.fluid_loop = ('fs->step(dt);\n' + self.fluid_loop = ('fs->step(dt);\n' +
'if (fs->iteration % niter_out == 0)\n{\n' + 'if (fs->iteration % niter_out == 0)\n{\n' +
self.fluid_output + '\n}\n') self.fluid_output + '\n}\n')
......
...@@ -109,6 +109,33 @@ class fluid_particle_base(bfps.code): ...@@ -109,6 +109,33 @@ class fluid_particle_base(bfps.code):
'return file_problems;\n' 'return file_problems;\n'
'}\n') '}\n')
self.definitions += 'void do_stats()\n{\n' + self.stat_src + '}\n' self.definitions += 'void do_stats()\n{\n' + self.stat_src + '}\n'
# take care of wisdom
if self.dtype == np.float32:
fftw_prefix = 'fftwf_'
elif self.dtype == np.float64:
fftw_prefix = 'fftw_'
self.main_start += """
//begincpp
if (myrank == 0)
{{
char fname[256];
sprintf(fname, "%s_fftw_wisdom.txt", simname);
{0}import_wisdom_from_filename(fname);
}}
{0}mpi_broadcast_wisdom(MPI_COMM_WORLD);
//endcpp
""".format(fftw_prefix)
self.main_end = """
//begincpp
{0}mpi_gather_wisdom(MPI_COMM_WORLD);
if (myrank == 0)
{{
char fname[256];
sprintf(fname, "%s_fftw_wisdom.txt", simname);
{0}export_wisdom_to_filename(fname);
}}
//endcpp
""".format(fftw_prefix) + self.main_end
self.main = self.fluid_start self.main = self.fluid_start
if self.particle_species > 0: if self.particle_species > 0:
self.main += self.particle_start self.main += self.particle_start
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment