Add 'sycl' devices to the context (#9691)
Co-authored-by: Dmitry Razdoburdin <>
This commit is contained in:
committed by
GitHub
parent
d4d7097acc
commit
f41a08fda8
@@ -45,4 +45,97 @@ TEST(Context, ErrorInit) {
|
||||
ASSERT_NE(msg.find("foo"), std::string::npos);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Context, SYCL) {
|
||||
Context ctx;
|
||||
// Default SYCL device
|
||||
{
|
||||
ctx.UpdateAllowUnknown(Args{{"device", "sycl"}});
|
||||
ASSERT_EQ(ctx.Device(), DeviceOrd::SyclDefault());
|
||||
ASSERT_EQ(ctx.Ordinal(), -1);
|
||||
|
||||
std::int32_t flag{0};
|
||||
ctx.DispatchDevice([&] { flag = -1; }, [&] { flag = 1; }, [&] { flag = 2; });
|
||||
ASSERT_EQ(flag, 2);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << ctx.Device();
|
||||
ASSERT_EQ(ss.str(), "sycl:-1");
|
||||
}
|
||||
|
||||
// SYCL device with idx
|
||||
{
|
||||
ctx.UpdateAllowUnknown(Args{{"device", "sycl:42"}});
|
||||
ASSERT_EQ(ctx.Device(), DeviceOrd::SyclDefault(42));
|
||||
ASSERT_EQ(ctx.Ordinal(), 42);
|
||||
|
||||
std::int32_t flag{0};
|
||||
ctx.DispatchDevice([&] { flag = -1; }, [&] { flag = 1; }, [&] { flag = 2; });
|
||||
ASSERT_EQ(flag, 2);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << ctx.Device();
|
||||
ASSERT_EQ(ss.str(), "sycl:42");
|
||||
}
|
||||
|
||||
// SYCL cpu
|
||||
{
|
||||
ctx.UpdateAllowUnknown(Args{{"device", "sycl:cpu"}});
|
||||
ASSERT_EQ(ctx.Device(), DeviceOrd::SyclCPU());
|
||||
ASSERT_EQ(ctx.Ordinal(), -1);
|
||||
|
||||
std::int32_t flag{0};
|
||||
ctx.DispatchDevice([&] { flag = -1; }, [&] { flag = 1; }, [&] { flag = 2; });
|
||||
ASSERT_EQ(flag, 2);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << ctx.Device();
|
||||
ASSERT_EQ(ss.str(), "sycl:cpu:-1");
|
||||
}
|
||||
|
||||
// SYCL cpu with idx
|
||||
{
|
||||
ctx.UpdateAllowUnknown(Args{{"device", "sycl:cpu:42"}});
|
||||
ASSERT_EQ(ctx.Device(), DeviceOrd::SyclCPU(42));
|
||||
ASSERT_EQ(ctx.Ordinal(), 42);
|
||||
|
||||
std::int32_t flag{0};
|
||||
ctx.DispatchDevice([&] { flag = -1; }, [&] { flag = 1; }, [&] { flag = 2; });
|
||||
ASSERT_EQ(flag, 2);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << ctx.Device();
|
||||
ASSERT_EQ(ss.str(), "sycl:cpu:42");
|
||||
}
|
||||
|
||||
// SYCL gpu
|
||||
{
|
||||
ctx.UpdateAllowUnknown(Args{{"device", "sycl:gpu"}});
|
||||
ASSERT_EQ(ctx.Device(), DeviceOrd::SyclGPU());
|
||||
ASSERT_EQ(ctx.Ordinal(), -1);
|
||||
|
||||
std::int32_t flag{0};
|
||||
ctx.DispatchDevice([&] { flag = -1; }, [&] { flag = 1; }, [&] { flag = 2; });
|
||||
ASSERT_EQ(flag, 2);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << ctx.Device();
|
||||
ASSERT_EQ(ss.str(), "sycl:gpu:-1");
|
||||
}
|
||||
|
||||
// SYCL gpu with idx
|
||||
{
|
||||
ctx.UpdateAllowUnknown(Args{{"device", "sycl:gpu:42"}});
|
||||
ASSERT_EQ(ctx.Device(), DeviceOrd::SyclGPU(42));
|
||||
ASSERT_EQ(ctx.Ordinal(), 42);
|
||||
|
||||
std::int32_t flag{0};
|
||||
ctx.DispatchDevice([&] { flag = -1; }, [&] { flag = 1; }, [&] { flag = 2; });
|
||||
ASSERT_EQ(flag, 2);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << ctx.Device();
|
||||
ASSERT_EQ(ss.str(), "sycl:gpu:42");
|
||||
}
|
||||
}
|
||||
} // namespace xgboost
|
||||
|
||||
Reference in New Issue
Block a user