Skip to content

Commit 387de9f

Browse files
authored
Merge pull request #1805 from luxonis/dev_mt_isGPUAvailable
Add hasGPU on device test
2 parents f59679d + 8df0be1 commit 387de9f

11 files changed

Lines changed: 153 additions & 1 deletion

File tree

bindings/python/src/DeviceBindings.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,6 +1020,13 @@ void DeviceBindings::bind(pybind11::module& m, void* pCallstack) {
10201020
return d.isNeuralDepthSupported();
10211021
},
10221022
DOC(dai, DeviceBase, isNeuralDepthSupported))
1023+
.def(
1024+
"hasGPU",
1025+
[](DeviceBase& d) {
1026+
py::gil_scoped_release release;
1027+
return d.hasGPU();
1028+
},
1029+
DOC(dai, DeviceBase, hasGPU))
10231030
.def(
10241031
"getSupportedDeviceModels",
10251032
[](DeviceBase& d) {

cmake/Depthai/DepthaiDeviceRVC4Config.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot")
44

55
# "version if applicable"
6-
set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+28ccaa69a10aa51f93a00171259772802cf6bd1b")
6+
set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+fbdb9dd70158a009537e2a84a6d1e83f069c79cf")

examples/cpp/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ add_subdirectory(NeuralNetwork)
149149
add_subdirectory(Remapping)
150150
add_subdirectory(RecordReplay)
151151
add_subdirectory(RVC2)
152+
addsubdirectory(RVC4)
152153
add_subdirectory(StereoDepth)
153154
add_subdirectory(Script)
154155
add_subdirectory(SpatialDetectionNetwork)

examples/cpp/RVC4/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
project(rvc4_examples)
2+
cmake_minimum_required(VERSION 3.10)
3+
4+
add_subdirectory(GPUStereo)
5+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
project(rvc4_gpu_stereo_examples)
2+
cmake_minimum_required(VERSION 3.10)
3+
4+
dai_add_example(check_device_gpu check_device_gpu.cpp ON OFF)
5+
dai_set_example_test_labels(check_device_gpu rvc4)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <iostream>
2+
#include <string>
3+
4+
#include <argparse/argparse.hpp>
5+
6+
#include "depthai/depthai.hpp"
7+
8+
int main(int argc, char** argv) {
9+
argparse::ArgumentParser program("check_device_gpu", "1.0.0");
10+
program.add_description("Print basic device GPU availability info.");
11+
program.add_argument("--device", "-d")
12+
.default_value(std::string(""))
13+
.help("Device IP address / device ID (default: auto-discover)");
14+
15+
try {
16+
program.parse_args(argc, argv);
17+
} catch(const std::runtime_error& err) {
18+
std::cerr << err.what() << '\n';
19+
std::cerr << program;
20+
return EXIT_FAILURE;
21+
}
22+
23+
const auto deviceArg = program.get<std::string>("--device");
24+
dai::Device device = deviceArg.empty() ? dai::Device() : dai::Device(deviceArg);
25+
26+
std::cout << "Product: " << device.getProductName() << std::endl;
27+
std::cout << "Platform: " << device.getPlatformAsString() << std::endl;
28+
std::cout << "GPU available: " << (device.hasGPU() ? "true" : "false") << std::endl;
29+
return 0;
30+
}
31+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env python3
2+
"""Print basic device GPU availability info."""
3+
4+
import argparse
5+
6+
import depthai as dai
7+
8+
9+
parser = argparse.ArgumentParser(description="Check device GPU availability")
10+
parser.add_argument("--device", "-d", type=str, default=None, help="Device IP address (default: auto-discover)")
11+
args = parser.parse_args()
12+
13+
device = dai.Device(args.device) if args.device else dai.Device()
14+
15+
print("Product:", device.getProductName())
16+
print("Platform:", device.getPlatformAsString())
17+
print("GPU available:", device.hasGPU())
18+

include/depthai/device/DeviceBase.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,6 +1002,14 @@ class DeviceBase {
10021002
*/
10031003
bool isNeuralDepthSupported();
10041004

1005+
/**
1006+
* Checks if a GPU is available on the device.
1007+
*
1008+
* @note This is only meaningful on RVC4 platforms.
1009+
* @returns True if supported, false otherwise
1010+
*/
1011+
bool hasGPU();
1012+
10051013
/**
10061014
* Returns the subset of device zoo models currently available on the device.
10071015
*

src/device/DeviceBase.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,6 +1523,11 @@ bool DeviceBase::isNeuralDepthSupported() {
15231523
return pimpl->rpcCallChecked<bool>("isNeuralDepthSupported");
15241524
}
15251525

1526+
bool DeviceBase::hasGPU() {
1527+
if(getPlatform() != Platform::RVC4) return false;
1528+
return pimpl->rpcCallChecked<bool>("hasGPU");
1529+
}
1530+
15261531
std::vector<DeviceModelZoo> DeviceBase::getSupportedDeviceModels() {
15271532
return pimpl->rpcCallChecked<std::vector<DeviceModelZoo>>("getSupportedDeviceModels");
15281533
}

tests/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,10 @@ dai_set_test_labels(resolutions_test ondevice) # TODO(jakob) Make the test runna
645645
dai_add_test(serialization_test src/onhost_tests/serialization_test.cpp)
646646
dai_set_test_labels(serialization_test ondevice rvc2_all ci)
647647

648+
# GPU availability test
649+
dai_add_test(gpu_availability_test src/ondevice_tests/gpu_availability_test.cpp)
650+
dai_set_test_labels(gpu_availability_test ondevice rvc4)
651+
648652
# Subnode test
649653
dai_add_test(subnode_test src/ondevice_tests/pipeline/subnode_test.cpp)
650654
dai_set_test_labels(subnode_test ondevice rvc2_all rvc4 rvc4rgb ci)

0 commit comments

Comments
 (0)