From c021841a52a7b71224b755bfbf779b05012b59d5 Mon Sep 17 00:00:00 2001
From: Tino Hager <tino.hager@nager.at>
Date: Tue, 10 Jul 2018 19:46:14 +0000
Subject: [PATCH] Get gpu count and name
---
src/yolo_v2_class.cpp | 53 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 34 insertions(+), 19 deletions(-)
diff --git a/src/yolo_v2_class.cpp b/src/yolo_v2_class.cpp
index 6147e3c..64f2afc 100644
--- a/src/yolo_v2_class.cpp
+++ b/src/yolo_v2_class.cpp
@@ -22,32 +22,24 @@
#define FRAMES 3
-int max_objects() { return C_SHARP_MAX_OBJECTS; }
+//static Detector* detector = NULL;
+static std::unique_ptr<Detector> detector;
-static Detector* detector;
-//static std::unique_ptr<Detector> detector;
-
-int init(const char *configurationFilename, const char *weightsFilename, int gpu) {
- std::string configurationFilenameString;
- configurationFilenameString = configurationFilename;
- std::string weightsFilenameString;
- weightsFilenameString = weightsFilename;
-
- detector = new Detector(configurationFilenameString, weightsFilenameString, gpu);
+int init(const char *configurationFilename, const char *weightsFilename, int gpu)
+{
+ detector.reset(new Detector(configurationFilename, weightsFilename, gpu));
return 1;
}
-int detect_image(const char *filename, bbox_t_container &container) {
- std::string filenameString;
- filenameString = filename;
-
- std::vector<bbox_t> detection = detector->detect(filenameString);
+int detect_image(const char *filename, bbox_t_container &container)
+{
+ std::vector<bbox_t> detection = detector->detect(filename);
for (size_t i = 0; i < detection.size() && i < C_SHARP_MAX_OBJECTS; ++i)
container.candidates[i] = detection[i];
return detection.size();
}
-int detect_image2(const uint8_t* data, const size_t data_length, bbox_t_container &container) {
+int detect_mat(const uint8_t* data, const size_t data_length, bbox_t_container &container) {
#ifdef OPENCV
std::vector<char> vdata(data, data + data_length);
cv::Mat image = imdecode(cv::Mat(vdata), 1);
@@ -62,11 +54,34 @@
}
int dispose() {
- detector->~Detector();
- //detector.reset();
+ //if (detector != NULL) delete detector;
+ //detector = NULL;
+ detector.reset();
return 1;
}
+int get_device_count() {
+#ifdef GPU
+ int count = 0;
+ cudaGetDeviceCount(&count);
+ return count;
+#else
+ return -1;
+#endif // GPU
+}
+
+int get_device_name(int gpu, char* deviceName) {
+#ifdef GPU
+ cudaDeviceProp prop;
+ cudaGetDeviceProperties(&prop, gpu);
+ std::string result = prop.name;
+ std::copy(result.begin(), result.end(), deviceName);
+ return 1;
+#else
+ return -1;
+#endif // GPU
+}
+
#ifdef GPU
void check_cuda(cudaError_t status) {
if (status != cudaSuccess) {
--
Gitblit v1.10.0