2011-02-22 21:43:26 +01:00
Initalization and Information
=============================
.. highlight :: cpp
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::getCudaEnabledDeviceCount
2011-03-23 11:56:20 +01:00
gpu::getCudaEnabledDeviceCount
2011-02-22 21:43:26 +01:00
----------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: int gpu::getCudaEnabledDeviceCount()
2011-02-22 21:43:26 +01:00
2011-02-26 12:05:10 +01:00
Returns number of CUDA-enabled devices installed. It is to be used before any other GPU functions calls. If OpenCV is compiled without GPU support this function returns 0.
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::setDevice
2011-03-23 11:56:20 +01:00
gpu::setDevice
2011-02-22 21:43:26 +01:00
------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: void gpu::setDevice(int device)
2011-02-22 21:43:26 +01:00
Sets device and initializes it for the current thread. Call of this function can be omitted, but in this case a default device will be initialized on fist GPU usage.
2011-02-26 12:05:10 +01:00
:param device: index of GPU device in system starting with 0.
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::getDevice
2011-03-23 11:56:20 +01:00
gpu::getDevice
2011-02-22 21:43:26 +01:00
------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: int gpu::getDevice()
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
Returns the current device index, which was set by :cpp:func: `gpu::setDevice` or initialized by default.
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. index :: gpu::GpuFeature
2011-02-22 21:43:26 +01:00
gpu::GpuFeature
---------------
2011-02-28 22:26:43 +01:00
.. c:type :: gpu::GpuFeature
2011-02-22 21:43:26 +01:00
2011-02-26 12:05:10 +01:00
GPU compute features. ::
2011-02-22 21:43:26 +01:00
enum GpuFeature
{
COMPUTE_10, COMPUTE_11,
COMPUTE_12, COMPUTE_13,
COMPUTE_20, COMPUTE_21,
ATOMICS, NATIVE_DOUBLE
};
2011-02-28 22:26:43 +01:00
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. index :: gpu::DeviceInfo
2011-02-22 21:43:26 +01:00
gpu::DeviceInfo
---------------
2011-03-23 11:56:20 +01:00
.. cpp:class :: gpu::DeviceInfo
2011-02-22 21:43:26 +01:00
2011-02-26 12:05:10 +01:00
This class provides functionality for querying the specified GPU properties. ::
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
class DeviceInfo
2011-02-22 21:43:26 +01:00
{
public:
DeviceInfo();
DeviceInfo(int device_id);
2011-02-26 12:05:10 +01:00
2011-02-22 21:43:26 +01:00
string name() const;
2011-02-26 12:05:10 +01:00
2011-02-22 21:43:26 +01:00
int majorVersion() const;
int minorVersion() const;
2011-02-26 12:05:10 +01:00
2011-02-22 21:43:26 +01:00
int multiProcessorCount() const;
2011-02-26 12:05:10 +01:00
2011-02-22 21:43:26 +01:00
size_t freeMemory() const;
size_t totalMemory() const;
2011-02-26 12:05:10 +01:00
2011-02-22 21:43:26 +01:00
bool supports(GpuFeature feature) const;
bool isCompatible() const;
};
2011-02-28 22:26:43 +01:00
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::DeviceInfo
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::DeviceInfo
-------------------------------
.. cpp:function :: gpu::DeviceInfo::DeviceInfo()
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: gpu::DeviceInfo::DeviceInfo(int device_id)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
Constructs :cpp:class: `gpu::DeviceInfo` object for the specified device. If `` device_id `` parameter is missed it constructs object for the current device.
2011-02-22 21:43:26 +01:00
2011-02-26 12:05:10 +01:00
:param device_id: Index of the GPU device in system starting with 0.
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::name
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::name
2011-02-22 21:43:26 +01:00
-------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: string gpu::DeviceInfo::name()
2011-02-22 21:43:26 +01:00
Returns the device name.
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::majorVersion
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::majorVersion
2011-02-22 21:43:26 +01:00
---------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: int gpu::DeviceInfo::majorVersion()
2011-02-22 21:43:26 +01:00
Returns the major compute capability version.
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::minorVersion
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::minorVersion
2011-02-22 21:43:26 +01:00
---------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: int gpu::DeviceInfo::minorVersion()
2011-02-22 21:43:26 +01:00
Returns the minor compute capability version.
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::multiProcessorCount
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::multiProcessorCount
2011-02-22 21:43:26 +01:00
----------------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: int gpu::DeviceInfo::multiProcessorCount()
2011-02-22 21:43:26 +01:00
Returns the number of streaming multiprocessors.
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::freeMemory
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::freeMemory
2011-02-22 21:43:26 +01:00
-------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: size_t gpu::DeviceInfo::freeMemory()
2011-02-22 21:43:26 +01:00
Returns the amount of free memory in bytes.
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::totalMemory
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::totalMemory
2011-02-22 21:43:26 +01:00
--------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: size_t gpu::DeviceInfo::totalMemory()
2011-02-22 21:43:26 +01:00
Returns the amount of total memory in bytes.
2011-03-23 11:56:20 +01:00
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::supports
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::supports
2011-02-22 21:43:26 +01:00
-----------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: bool gpu::DeviceInfo::supports(GpuFeature feature)
2011-02-22 21:43:26 +01:00
Returns true if the device has the given GPU feature, otherwise false.
2011-03-23 11:56:20 +01:00
:param feature: Feature to be checked. See :c:type:`gpu::GpuFeature`.
2011-02-22 21:43:26 +01:00
.. index :: gpu::DeviceInfo::isCompatible
2011-03-23 11:56:20 +01:00
gpu::DeviceInfo::isCompatible
2011-02-22 21:43:26 +01:00
---------------------------------
2011-03-23 11:56:20 +01:00
.. cpp:function :: bool gpu::DeviceInfo::isCompatible()
2011-02-22 21:43:26 +01:00
Returns true if the GPU module can be run on the specified device, otherwise false.
2011-03-23 11:56:20 +01:00
.. index :: gpu::TargetArchs
2011-02-22 21:43:26 +01:00
gpu::TargetArchs
----------------
2011-02-28 22:26:43 +01:00
.. c:type :: gpu::TargetArchs
2011-02-22 21:43:26 +01:00
This class provides functionality (as set of static methods) for checking which NVIDIA card architectures the GPU module was built for.
The following method checks whether the module was built with the support of the given feature:
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::builtWith(GpuFeature feature)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
:param feature: Feature to be checked. See :c:type:`gpu::GpuFeature`.
2011-02-22 21:43:26 +01:00
There are a set of methods for checking whether the module contains intermediate (PTX) or binary GPU code for the given architecture(s):
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::has(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::hasPtx(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::hasBin(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::hasEqualOrLessPtx(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::hasEqualOrGreater(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::hasEqualOrGreaterPtx(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. cpp:function :: static bool gpu::TargetArchs::hasEqualOrGreaterBin(int major, int minor)
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
:param major: Major compute capability version.
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
:param minor: Minor compute capability version.
2011-02-22 21:43:26 +01:00
2011-02-26 12:05:10 +01:00
According to the CUDA C Programming Guide Version 3.2: "PTX code produced for some specific compute capability can always be compiled to binary code of greater or equal compute capability".
2011-02-22 21:43:26 +01:00
2011-03-23 11:56:20 +01:00
.. index :: gpu::MultiGpuManager
gpu::MultiGpuManager
--------------------
.. c:type :: gpu::MultiGpuManager
Provides functionality for working with many GPUs. ::
class MultiGpuManager
{
public:
MultiGpuManager();
~MultiGpuManager();
// Must be called before any other GPU calls
void init();
// Makes the given GPU active
void gpuOn(int gpu_id);
// Finishes the piece of work on the current GPU
void gpuOff();
static const int BAD_GPU_ID;
};
.. index :: gpu::MultiGpuManager::MultiGpuManager
gpu::MultiGpuManager::MultiGpuManager
----------------------------------------
.. cpp:function :: gpu::MultiGpuManager::MultiGpuManager()
Creates multi GPU manager, but doesn't initialize it.
.. index :: gpu::MultiGpuManager::~MultiGpuManager
gpu::MultiGpuManager::~MultiGpuManager
----------------------------------------
.. cpp:function :: gpu::MultiGpuManager::~MultiGpuManager()
Releases multi GPU manager.
.. index :: gpu::MultiGpuManager::init
gpu::MultiGpuManager::init
----------------------------------------
.. cpp:function :: void gpu::MultiGpuManager::init()
Initializes multi GPU manager.
.. index :: gpu::MultiGpuManager::gpuOn
gpu::MultiGpuManager::gpuOn
----------------------------------------
.. cpp:function :: void gpu::MultiGpuManager::gpuOn(int gpu_id)
Makes the given GPU active.
:param gpu_id: Index of the GPU device in system starting with 0.
.. index :: gpu::MultiGpuManager::gpuOff
gpu::MultiGpuManager::gpuOff
----------------------------------------
.. cpp:function :: void gpu::MultiGpuManager::gpuOff()
Finishes the piece of work on the current GPU.