32template <
typename System>
struct GPU;
38template <
typename FloatType, std::size_t rows_per_block,
39 std::size_t cols_per_block, std::size_t trotters_per_block>
40struct GPU<system::ChimeraTransverseGPU<FloatType, rows_per_block,
41 cols_per_block, trotters_per_block>> {
47 system::ChimeraTransverseGPU<
FloatType, rows_per_block, cols_per_block,
60 template <curandRngType_t rng_type>
61 inline static void update(
63 utility::cuda::CurandWrapper<FloatType, rng_type> &random_number_engine,
64 const utility::TransverseFieldUpdaterParameter ¶meter) {
67 random_number_engine.generate_uniform(system.info.rows * system.info.cols *
68 system.info.trotters *
69 system.info.chimera_unitsize,
72 system::chimera_cuda::metropolis_interface<
73 FloatType, rows_per_block, cols_per_block, trotters_per_block>(
74 0, system.spin.get(), system.dev_random.get(),
75 system.interaction.J_out_p.get(), system.interaction.J_out_n.get(),
76 system.interaction.J_in_04.get(), system.interaction.J_in_15.get(),
77 system.interaction.J_in_26.get(), system.interaction.J_in_37.get(),
78 system.interaction.h.get(), system.info, system.grid, system.block,
79 parameter.beta, system.gamma, parameter.s);
82 random_number_engine.generate_uniform(system.info.rows * system.info.cols *
83 system.info.trotters *
84 system.info.chimera_unitsize,
87 system::chimera_cuda::metropolis_interface<
88 FloatType, rows_per_block, cols_per_block, trotters_per_block>(
89 1, system.spin.get(), system.dev_random.get(),
90 system.interaction.J_out_p.get(), system.interaction.J_out_n.get(),
91 system.interaction.J_in_04.get(), system.interaction.J_in_15.get(),
92 system.interaction.J_in_26.get(), system.interaction.J_in_37.get(),
93 system.interaction.h.get(), system.info, system.grid, system.block,
94 parameter.beta, system.gamma, parameter.s);
102template <
typename FloatType, std::size_t rows_per_block,
103 std::size_t cols_per_block>
105 system::ChimeraClassicalGPU<FloatType, rows_per_block, cols_per_block>> {
111 system::ChimeraClassicalGPU<FloatType, rows_per_block, cols_per_block>;
123 template <curandRngType_t rng_type>
124 inline static void update(
126 utility::cuda::CurandWrapper<FloatType, rng_type> &random_number_engine,
127 const utility::ClassicalUpdaterParameter ¶meter) {
130 return GPU<typename CIsing::Base>::update(
131 system, random_number_engine,
132 utility::TransverseFieldUpdaterParameter(parameter.beta, 1));
Definition algorithm.hpp:24
double FloatType
Note:
Definition compile_config.hpp:37