[llvm] [libsycl] Add lit configuration files and basic test (PR #177407)
Kseniya Tikhomirova via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 10 04:51:51 PST 2026
================
@@ -0,0 +1,122 @@
+// REQUIRES: any-device
+// RUN: %clangxx %sycl_options %s -o %t.out
+// RUN: %t.out
+//
+// Tests platform::get_devices for each device type.
+
+#include <sycl.hpp>
+
+#include <algorithm>
+#include <iostream>
+
+std::string BackendToString(sycl::backend Backend) {
+ switch (Backend) {
+ case sycl::backend::opencl:
+ return "opencl";
+ case sycl::backend::level_zero:
+ return "level_zero";
+ case sycl::backend::cuda:
+ return "cuda";
+ case sycl::backend::hip:
+ return "hip";
+ default:
+ return "unknown";
+ }
+}
+
+std::string DeviceTypeToString(sycl::info::device_type DevType) {
+ switch (DevType) {
+ case sycl::info::device_type::all:
+ return "device_type::all";
+ case sycl::info::device_type::cpu:
+ return "device_type::cpu";
+ case sycl::info::device_type::gpu:
+ return "device_type::gpu";
+ case sycl::info::device_type::accelerator:
+ return "device_type::accelerator";
+ case sycl::info::device_type::custom:
+ return "device_type::custom";
+ case sycl::info::device_type::automatic:
+ return "device_type::automatic";
+ case sycl::info::device_type::host:
+ return "device_type::host";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+std::string GenerateDeviceDescription(sycl::info::device_type DevType,
+ const sycl::platform &Platform) {
+ return std::string(DeviceTypeToString(DevType)) + " (" +
+ BackendToString(Platform.get_backend()) + ")";
+}
+
+template <typename T1, typename T2>
+int Check(const T1 &LHS, const T2 &RHS, std::string TestName) {
+ if (LHS != RHS) {
+ std::cerr << "Failed check " << LHS << " != " << RHS << ": " << TestName
+ << std::endl;
+ return 1;
+ }
+ return 0;
+}
+
+int CheckDeviceType(const sycl::platform &P, sycl::info::device_type DevType,
+ std::vector<sycl::device> &AllDevices) {
+ assert(DevType != sycl::info::device_type::all);
+ int Failures = 0;
+
+ std::vector<sycl::device> Devices = P.get_devices(DevType);
+
+ if (DevType == sycl::info::device_type::automatic) {
+ if (AllDevices.empty()) {
+ Failures += Check(Devices.size(), 0,
+ "No devices reported for device_type::all query, but "
+ "device_type::automatic returns a device.");
+ } else {
+ Failures += Check(Devices.size(), 1,
+ "Number of devices for device_type::automatic query.");
+ if (Devices.size())
+ Failures += Check(
+ std::count(AllDevices.begin(), AllDevices.end(), Devices[0]), 1,
+ "Device is in the set of device_type::all devices in the "
+ "platform.");
+ }
+ return Failures;
+ }
+
+ // Count devices with the type;
----------------
KseniyaTikhomirova wrote:
https://github.com/llvm/llvm-project/pull/177407/commits/17361e09b9b7d072e080a07f16f8c29e00f5d06d
https://github.com/llvm/llvm-project/pull/177407
More information about the llvm-commits
mailing list