  In this work we propose a highly optimized version of a simulated annealing
(SA) algorithm adapted to the more recently developed Graphic Processor Units
(GPUs). The programming has been carried out with CUDA toolkit, specially
designed for Nvidia GPUs. For this purpose, efficient versions of SA have been
first analyzed and adapted to GPUs. Thus, an appropriate sequential SA
algorithm has been developed as a starting point. Next, a straightforward
asynchronous parallel version has been implemented and then a specific and more
efficient synchronous version has been developed. A wide appropriate benchmark
to illustrate the performance properties of the implementation has been
considered. Among all tests, a classical sample problem provided by the
minimization of the normalized Schwefel function has been selected to compare
the behavior of the sequential, asynchronous, and synchronous versions, the
last one being more advantageous in terms of balance between convergence,
accuracy, and computational cost. Also, the implementation of a hybrid method
combining SA with a local minimizer method has been developed. Note that the
generic feature of the SA algorithm allows its application in a wide set of
real problems arising in a large variety of fields, such as biology, physics,
engineering, finance, and industrial processes.
