#include "devicetransfers.h"
#include "gromacs/gpu_utils/cudautils.cuh"
-#include "gromacs/hardware/device_management.h"
-#include "gromacs/hardware/gpu_hw_info.h"
+#include "gromacs/hardware/device_information.h"
#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/gmxassert.h"
} // namespace
-void doDeviceTransfers(const gmx_gpu_info_t& gpuInfo, ArrayRef<const char> input, ArrayRef<char> output)
+void doDeviceTransfers(const DeviceInformation& deviceInfo, ArrayRef<const char> input, ArrayRef<char> output)
{
GMX_RELEASE_ASSERT(input.size() == output.size(), "Input and output must have matching size");
- const auto compatibleGpus = getCompatibleGpus(gpuInfo);
- if (compatibleGpus.empty())
- {
- std::copy(input.begin(), input.end(), output.begin());
- return;
- }
cudaError_t status;
- const auto* device = getDeviceInfo(gpuInfo, compatibleGpus[0]);
- int oldDeviceId;
+ int oldDeviceId;
status = cudaGetDevice(&oldDeviceId);
throwUponFailure(status, "getting old device id");
- status = cudaSetDevice(device->id);
+ status = cudaSetDevice(deviceInfo.id);
throwUponFailure(status, "setting device id to the first compatible GPU");
void* devicePointer;