+#if GMX_GPU_CUDA
+TEST(NbnxmSetupTest, canCreateKernelSetupGPU)
+{
+ NBKernelOptions nbKernelOptions;
+ Nbnxm::KernelSetup kernelSetup = createKernelSetupGPU(nbKernelOptions.useTabulatedEwaldCorr);
+ EXPECT_EQ(kernelSetup.kernelType, Nbnxm::KernelType::Gpu8x8x8);
+ EXPECT_EQ(kernelSetup.ewaldExclusionType, Nbnxm::EwaldExclusionType::Analytical);
+}
+
+TEST(NbnxmSetupTest, CanCreateDeviceStreamManager)
+{
+ const auto& testDeviceList = gmx::test::getTestHardwareEnvironment()->getTestDeviceList();
+ for (const auto& testDevice : testDeviceList)
+ {
+ const DeviceInformation& deviceInfo = testDevice->deviceInfo();
+ setActiveDevice(deviceInfo);
+ gmx::SimulationWorkload simulationWork = createSimulationWorkloadGpu();
+ EXPECT_NO_THROW(createDeviceStreamManager(deviceInfo, simulationWork));
+ }
+}
+
+TEST(NbnxmSetupTest, CanCreateNbnxmGPU)
+{
+ const auto& testDeviceList = gmx::test::getTestHardwareEnvironment()->getTestDeviceList();
+ for (const auto& testDevice : testDeviceList)
+ {
+ const DeviceInformation& deviceInfo = testDevice->deviceInfo();
+ setActiveDevice(deviceInfo);
+ size_t numParticles = 1;
+ NBKernelOptions nbKernelOptions;
+ std::vector<real> nonbondedParameters = { 1, 1 };
+ gmx::SimulationWorkload simulationWork = createSimulationWorkloadGpu();
+ interaction_const_t interactionConst = createInteractionConst(nbKernelOptions);
+ // set DeviceInformation and create the DeviceStreamManager
+ auto deviceStreamManager = createDeviceStreamManager(deviceInfo, simulationWork);
+ EXPECT_NO_THROW(createNbnxmGPU(
+ numParticles, nbKernelOptions, nonbondedParameters, interactionConst, *deviceStreamManager));
+ }
+}
+
+#endif
+