// This evaluation function is the main runner of the training loop (7 evaluations per training step/iteration).
// We can run all evaluations per step in parallel. In order to do so, we need:
// (1) Clone the rotoselectKernel for each thread, i.e. each thread has an independent copy (because it will swap a gate for evaluation).
// (2) Clone the accelerator (simulator) which will run the circuit to evaluate the energy for this config.
// This will give us good speedup in the case that the simulator is not utilize all the CPU resources (i.e. if the simulator is not multithreaded by itself).