WIP: Move GPU initialization into a separate class
This introduces the DevicesManager
class, that is responsible for detection, initialization and management of the GPU hardware. The Class has separate implementations for CPU-only, CUDA and OpenCL builds. The DeviceInformation structure is moved to hardware subfolder, where this new manager is. Mostly, this commit is a plain movement of the code to a new location, with slight changes to the memory management and reconsideration of booleans. Introduction of this or similar class would simplify the hardware management in special cases as well, e.g. tests.
Future improvements:
- Make it into a class with private implementation (need to make MPI broadcast work).
- Make list of the devices into a vector (requires PImpling or inclusion of DeviceInformation header)
Edited by Artem Zhmurov