refactoring of GPU module
This commit is contained in:
parent
6b6a63ba38
commit
04709a2793
@ -76,6 +76,8 @@ namespace cv
|
||||
NATIVE_DOUBLE = FEATURE_SET_COMPUTE_13
|
||||
};
|
||||
|
||||
// Gives information about what GPU archs this OpenCV GPU module was
|
||||
// compiled for
|
||||
class CV_EXPORTS TargetArchs
|
||||
{
|
||||
public:
|
||||
@ -91,6 +93,7 @@ namespace cv
|
||||
TargetArchs();
|
||||
};
|
||||
|
||||
// Gives information about the given GPU
|
||||
class CV_EXPORTS DeviceInfo
|
||||
{
|
||||
public:
|
||||
@ -132,11 +135,11 @@ namespace cv
|
||||
/////////////////////////// Multi GPU Manager //////////////////////////////
|
||||
|
||||
// Provides functionality for working with many GPUs
|
||||
class CV_EXPORTS MultiGpuMgr
|
||||
class CV_EXPORTS MultiGpuManager
|
||||
{
|
||||
public:
|
||||
MultiGpuMgr();
|
||||
~MultiGpuMgr();
|
||||
MultiGpuManager();
|
||||
~MultiGpuManager();
|
||||
|
||||
// Must be called before any other GPU calls
|
||||
void init();
|
||||
@ -144,14 +147,14 @@ namespace cv
|
||||
// Makes the given GPU active
|
||||
void gpuOn(int gpu_id);
|
||||
|
||||
// Finishes the piece of work with the current GPU
|
||||
// Finishes the piece of work on the current GPU
|
||||
void gpuOff();
|
||||
|
||||
static const int BAD_GPU_ID = -1;
|
||||
|
||||
private:
|
||||
void operator=(const MultiGpuMgr&);
|
||||
MultiGpuMgr(const MultiGpuMgr&);
|
||||
void operator=(const MultiGpuManager&);
|
||||
MultiGpuManager(const MultiGpuManager&);
|
||||
|
||||
class Impl;
|
||||
Ptr<Impl> impl_;
|
||||
|
@ -46,17 +46,17 @@
|
||||
|
||||
namespace cv { namespace gpu {
|
||||
|
||||
class MultiGpuMgr::Impl {};
|
||||
MultiGpuMgr::MultiGpuMgr() { throw_nogpu(); }
|
||||
void MultiGpuMgr::init() { throw_nogpu(); }
|
||||
void MultiGpuMgr::gpuOn(int) { throw_nogpu(); }
|
||||
void MultiGpuMgr::gpuOff() { throw_nogpu(); }
|
||||
class MultiGpuManager::Impl {};
|
||||
MultiGpuManager::MultiGpuManager() { throw_nogpu(); }
|
||||
MultiGpuManager::~MultiGpuManager() { throw_nogpu(); }
|
||||
void MultiGpuManager::init() { throw_nogpu(); }
|
||||
void MultiGpuManager::gpuOn(int) { throw_nogpu(); }
|
||||
void MultiGpuManager::gpuOff() { throw_nogpu(); }
|
||||
|
||||
}}
|
||||
|
||||
#else
|
||||
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <cuda.h>
|
||||
|
||||
@ -67,7 +67,7 @@ using namespace std;
|
||||
namespace cv { namespace gpu {
|
||||
|
||||
|
||||
class MultiGpuMgr::Impl
|
||||
class MultiGpuManager::Impl
|
||||
{
|
||||
public:
|
||||
Impl();
|
||||
@ -81,7 +81,7 @@ public:
|
||||
void gpuOn(int gpu_id)
|
||||
{
|
||||
if (gpu_id < 0 || gpu_id >= num_devices_)
|
||||
CV_Error(CV_StsBadArg, "MultiGpuMgr::gpuOn: GPU ID is out of range");
|
||||
CV_Error(CV_StsBadArg, "MultiGpuManager::gpuOn: GPU ID is out of range");
|
||||
cuSafeCall(cuCtxPushCurrent(contexts_[gpu_id]));
|
||||
}
|
||||
|
||||
@ -103,7 +103,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
MultiGpuMgr::Impl::Impl(): num_devices_(0)
|
||||
MultiGpuManager::Impl::Impl(): num_devices_(0)
|
||||
{
|
||||
num_devices_ = getCudaEnabledDeviceCount();
|
||||
contexts_.resize(num_devices_);
|
||||
@ -121,28 +121,28 @@ MultiGpuMgr::Impl::Impl(): num_devices_(0)
|
||||
}
|
||||
|
||||
|
||||
MultiGpuMgr::MultiGpuMgr() {}
|
||||
MultiGpuMgr::~MultiGpuMgr() {}
|
||||
MultiGpuManager::MultiGpuManager() {}
|
||||
MultiGpuManager::~MultiGpuManager() {}
|
||||
|
||||
|
||||
void MultiGpuMgr::init()
|
||||
void MultiGpuManager::init()
|
||||
{
|
||||
impl_ = Ptr<Impl>(new Impl());
|
||||
}
|
||||
|
||||
|
||||
void MultiGpuMgr::gpuOn(int gpu_id)
|
||||
void MultiGpuManager::gpuOn(int gpu_id)
|
||||
{
|
||||
if (impl_.empty())
|
||||
CV_Error(CV_StsNullPtr, "MultiGpuMgr::gpuOn: must be initialized before any calls");
|
||||
CV_Error(CV_StsNullPtr, "MultiGpuManager::gpuOn: must be initialized before any calls");
|
||||
impl_->gpuOn(gpu_id);
|
||||
}
|
||||
|
||||
|
||||
void MultiGpuMgr::gpuOff()
|
||||
void MultiGpuManager::gpuOff()
|
||||
{
|
||||
if (impl_.empty())
|
||||
CV_Error(CV_StsNullPtr, "MultiGpuMgr::gpuOff: must be initialized before any calls");
|
||||
CV_Error(CV_StsNullPtr, "MultiGpuManager::gpuOff: must be initialized before any calls");
|
||||
impl_->gpuOff();
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ using namespace cv::gpu;
|
||||
|
||||
struct Worker { void operator()(int device_id) const; };
|
||||
|
||||
MultiGpuMgr multi_gpu_mgr;
|
||||
MultiGpuManager multi_gpu_mgr;
|
||||
|
||||
int main()
|
||||
{
|
||||
|
@ -38,7 +38,7 @@ using namespace cv::gpu;
|
||||
|
||||
struct Worker { void operator()(int device_id) const; };
|
||||
|
||||
MultiGpuMgr multi_gpu_mgr;
|
||||
MultiGpuManager multi_gpu_mgr;
|
||||
|
||||
// GPUs data
|
||||
GpuMat d_left[2];
|
||||
|
Loading…
x
Reference in New Issue
Block a user