Loading graph_driver/xrays.cpp +11 −10 Original line number Diff line number Diff line Loading @@ -63,7 +63,8 @@ int main(int argc, const char * argv[]) { + std::min(thread_number, num_rays%num_threads); std::mt19937_64 engine((thread_number + 1)*static_cast<uint64_t> (std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()))); std::uniform_real_distribution<double> real_dist(0.6, 1.0); std::uniform_real_distribution<base> real_dist(0.6, 1.0); std::normal_distribution<base> norm_dist(600.0, 10.0); std::uniform_int_distribution<size_t> int_dist(0, local_num_rays - 1); auto omega = graph::variable<cpu> (local_num_rays, "\\omega"); Loading @@ -79,7 +80,7 @@ int main(int argc, const char * argv[]) { // Inital conditions. for (size_t j = 0; j < local_num_rays; j++) { omega->set(j, 600.0); omega->set(j, norm_dist(engine)); } x->set(backend::base_cast<cpu> (0.0)); Loading @@ -89,15 +90,15 @@ int main(int argc, const char * argv[]) { ky->set(backend::base_cast<cpu> (0.0)); kz->set(backend::base_cast<cpu> (0.0)); //auto eq = equilibrium::make_slab_density<cpu> (); auto eq = equilibrium::make_no_magnetic_field<cpu> (); auto eq = equilibrium::make_slab_density<cpu> (); //auto eq = equilibrium::make_no_magnetic_field<cpu> (); solver::split_simplextic<dispersion::bohm_gross<cpu>> //solver::split_simplextic<dispersion::bohm_gross<cpu>> //solver::rk4<dispersion::bohm_gross<cpu>> //solver::rk4<dispersion::simple<cpu>> //solver::rk4<dispersion::ordinary_wave<cpu>> //solver::rk4<dispersion::extra_ordinary_wave<cpu>> //solver::rk4<dispersion::cold_plasma<cpu>> solver::rk4<dispersion::cold_plasma<cpu>> solve(omega, kx, ky, kz, x, y, z, t, 60.0/num_times, eq); solve.init(kx); solve.compile(num_rays); Loading @@ -119,18 +120,18 @@ int main(int argc, const char * argv[]) { const size_t sample = int_dist(engine); if (thread_number == 0 && false) { if (thread_number == 0) { std::cout << "Omega " << omega->evaluate().at(sample) << std::endl; } for (size_t j = 0; j < num_times; j++) { if (thread_number == 0 && false) { if (thread_number == 0) { solve.print(sample); } solve.step(); } if (thread_number == 0 && false) { if (thread_number == 0) { solve.print(sample); } else { solve.sync(); Loading graph_framework/jit.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,8 @@ namespace jit { graph::map_nodes<BACKEND> setters) { const size_t test_size = inputs[0]->size(); source_buffer << std::setprecision(jit::max_digits10<typename BACKEND::base> ()); create_preamble(name); add_kernel_argument(to_string('v', inputs[0].get()), 0); Loading graph_framework/node.hpp +2 −4 Original line number Diff line number Diff line Loading @@ -346,12 +346,10 @@ namespace graph { stream << " " << registers[this] << " = "; if constexpr (jit::is_complex<typename BACKEND::base> ()) { jit::add_type<BACKEND> (stream); stream << std::setprecision(jit::max_digits10<typename BACKEND::base> ()) << " (" << std::real(temp) << "," stream << " (" << std::real(temp) << "," << std::imag(temp) << ")"; } else { stream << std::setprecision(jit::max_digits10<typename BACKEND::base> ()) << temp; stream << temp; } stream << ";" << std::endl; } Loading Loading
graph_driver/xrays.cpp +11 −10 Original line number Diff line number Diff line Loading @@ -63,7 +63,8 @@ int main(int argc, const char * argv[]) { + std::min(thread_number, num_rays%num_threads); std::mt19937_64 engine((thread_number + 1)*static_cast<uint64_t> (std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()))); std::uniform_real_distribution<double> real_dist(0.6, 1.0); std::uniform_real_distribution<base> real_dist(0.6, 1.0); std::normal_distribution<base> norm_dist(600.0, 10.0); std::uniform_int_distribution<size_t> int_dist(0, local_num_rays - 1); auto omega = graph::variable<cpu> (local_num_rays, "\\omega"); Loading @@ -79,7 +80,7 @@ int main(int argc, const char * argv[]) { // Inital conditions. for (size_t j = 0; j < local_num_rays; j++) { omega->set(j, 600.0); omega->set(j, norm_dist(engine)); } x->set(backend::base_cast<cpu> (0.0)); Loading @@ -89,15 +90,15 @@ int main(int argc, const char * argv[]) { ky->set(backend::base_cast<cpu> (0.0)); kz->set(backend::base_cast<cpu> (0.0)); //auto eq = equilibrium::make_slab_density<cpu> (); auto eq = equilibrium::make_no_magnetic_field<cpu> (); auto eq = equilibrium::make_slab_density<cpu> (); //auto eq = equilibrium::make_no_magnetic_field<cpu> (); solver::split_simplextic<dispersion::bohm_gross<cpu>> //solver::split_simplextic<dispersion::bohm_gross<cpu>> //solver::rk4<dispersion::bohm_gross<cpu>> //solver::rk4<dispersion::simple<cpu>> //solver::rk4<dispersion::ordinary_wave<cpu>> //solver::rk4<dispersion::extra_ordinary_wave<cpu>> //solver::rk4<dispersion::cold_plasma<cpu>> solver::rk4<dispersion::cold_plasma<cpu>> solve(omega, kx, ky, kz, x, y, z, t, 60.0/num_times, eq); solve.init(kx); solve.compile(num_rays); Loading @@ -119,18 +120,18 @@ int main(int argc, const char * argv[]) { const size_t sample = int_dist(engine); if (thread_number == 0 && false) { if (thread_number == 0) { std::cout << "Omega " << omega->evaluate().at(sample) << std::endl; } for (size_t j = 0; j < num_times; j++) { if (thread_number == 0 && false) { if (thread_number == 0) { solve.print(sample); } solve.step(); } if (thread_number == 0 && false) { if (thread_number == 0) { solve.print(sample); } else { solve.sync(); Loading
graph_framework/jit.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,8 @@ namespace jit { graph::map_nodes<BACKEND> setters) { const size_t test_size = inputs[0]->size(); source_buffer << std::setprecision(jit::max_digits10<typename BACKEND::base> ()); create_preamble(name); add_kernel_argument(to_string('v', inputs[0].get()), 0); Loading
graph_framework/node.hpp +2 −4 Original line number Diff line number Diff line Loading @@ -346,12 +346,10 @@ namespace graph { stream << " " << registers[this] << " = "; if constexpr (jit::is_complex<typename BACKEND::base> ()) { jit::add_type<BACKEND> (stream); stream << std::setprecision(jit::max_digits10<typename BACKEND::base> ()) << " (" << std::real(temp) << "," stream << " (" << std::real(temp) << "," << std::imag(temp) << ")"; } else { stream << std::setprecision(jit::max_digits10<typename BACKEND::base> ()) << temp; stream << temp; } stream << ";" << std::endl; } Loading