Skip to content

Commit acbb3d6

Browse files
committed
test will search for queues with compute capabilities
Signed-off-by: Matthias Möller <m_moeller@live.de>
1 parent 7969663 commit acbb3d6

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

test/TestAsyncOperations.cpp

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,32 @@
88
#include "kompute/logger/Logger.hpp"
99
#include "shaders/Utils.hpp"
1010

11+
namespace {
12+
std::vector<uint32_t>
13+
distinctFamilyQueueIndices(const vk::PhysicalDevice& device)
14+
{
15+
const std::vector<vk::QueueFamilyProperties> allQueueFamilyProperties =
16+
device.getQueueFamilyProperties();
17+
std::vector<uint32_t> distinctQueuesIndices;
18+
19+
for (uint32_t i = 0; i < allQueueFamilyProperties.size(); i++) {
20+
if (allQueueFamilyProperties[i].queueFlags &
21+
(vk::QueueFlagBits::eCompute)) {
22+
distinctQueuesIndices.push_back(i);
23+
}
24+
}
25+
return distinctQueuesIndices;
26+
}
27+
}
28+
1129
TEST(TestAsyncOperations, TestManagerParallelExecution)
1230
{
13-
// This test is built for NVIDIA 1650. It assumes:
14-
// * Queue family 0 and 2 have compute capabilities
31+
// This test assumes:
32+
// * There are at least 2 different Queue families with compute capabilities
1533
// * GPU is able to process parallel shader code across different families
16-
uint32_t size = 10;
34+
constexpr uint32_t size = 10;
1735

18-
uint32_t numParallel = 2;
36+
constexpr uint32_t numParallel = 2;
1937

2038
std::string shader(R"(
2139
#version 450
@@ -79,7 +97,18 @@ TEST(TestAsyncOperations, TestManagerParallelExecution)
7997
EXPECT_EQ(inputsSyncB[i]->vector<float>(), resultSync);
8098
}
8199

82-
kp::Manager mgrAsync(0, { 0, 2 });
100+
constexpr uint32_t deviceId =
101+
0u; // device 0 exists, because "mgr" could be created already
102+
auto queues = distinctFamilyQueueIndices(
103+
mgr.getVkInstance()->enumeratePhysicalDevices().at(deviceId));
104+
if (queues.size() < numParallel) {
105+
GTEST_SKIP() << "GPU does not support multiple compute queues. Only "
106+
<< queues.size() << " are supported. Skipping test.";
107+
}
108+
109+
queues.resize(numParallel);
110+
111+
kp::Manager mgrAsync(deviceId, std::move(queues));
83112

84113
std::vector<std::shared_ptr<kp::Memory>> inputsAsyncB;
85114

0 commit comments

Comments
 (0)