Pass vendor macro to opencl kernel
This commit is contained in:
@@ -87,7 +87,7 @@ public:
|
|||||||
String name() const;
|
String name() const;
|
||||||
String extensions() const;
|
String extensions() const;
|
||||||
String version() const;
|
String version() const;
|
||||||
String vendor() const;
|
String vendorName() const;
|
||||||
String OpenCL_C_Version() const;
|
String OpenCL_C_Version() const;
|
||||||
String OpenCLVersion() const;
|
String OpenCLVersion() const;
|
||||||
int deviceVersionMajor() const;
|
int deviceVersionMajor() const;
|
||||||
@@ -164,14 +164,13 @@ public:
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
UNKNOWN_VENDOR=0,
|
UNKNOWN_VENDOR=0,
|
||||||
AMD=1,
|
VENDOR_AMD=1,
|
||||||
INTEL=2,
|
VENDOR_INTEL=2,
|
||||||
NVIDIA=3
|
VENDOR_NVIDIA=3
|
||||||
};
|
};
|
||||||
|
int vendorID() const;
|
||||||
bool isAMD() const;
|
inline bool isAMD() const { return vendorID() == VENDOR_AMD; };
|
||||||
bool isIntel() const;
|
inline bool isIntel() const { return vendorID() == VENDOR_INTEL; };
|
||||||
bool isNvidia() const;
|
|
||||||
|
|
||||||
int maxClockFrequency() const;
|
int maxClockFrequency() const;
|
||||||
int maxComputeUnits() const;
|
int maxComputeUnits() const;
|
||||||
|
@@ -1713,16 +1713,16 @@ struct Device::Impl
|
|||||||
String deviceVersion_ = getStrProp(CL_DEVICE_VERSION);
|
String deviceVersion_ = getStrProp(CL_DEVICE_VERSION);
|
||||||
parseDeviceVersion(deviceVersion_, deviceVersionMajor_, deviceVersionMinor_);
|
parseDeviceVersion(deviceVersion_, deviceVersionMajor_, deviceVersionMinor_);
|
||||||
|
|
||||||
vendorName = getStrProp(CL_DEVICE_VENDOR);
|
vendorName_ = getStrProp(CL_DEVICE_VENDOR);
|
||||||
if (vendorName == "Advanced Micro Devices, Inc." ||
|
if (vendorName_ == "Advanced Micro Devices, Inc." ||
|
||||||
vendorName == "AMD")
|
vendorName_ == "AMD")
|
||||||
vendor_ = AMD;
|
vendorID_ = VENDOR_AMD;
|
||||||
else if (vendorName == "Intel(R) Corporation")
|
else if (vendorName_ == "Intel(R) Corporation")
|
||||||
vendor_ = INTEL;
|
vendorID_ = VENDOR_INTEL;
|
||||||
else if (vendorName == "NVIDIA Corporation")
|
else if (vendorName_ == "NVIDIA Corporation")
|
||||||
vendor_ = NVIDIA;
|
vendorID_ = VENDOR_NVIDIA;
|
||||||
else
|
else
|
||||||
vendor_ = UNKNOWN_VENDOR;
|
vendorID_ = UNKNOWN_VENDOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _TpCL, typename _TpOut>
|
template<typename _TpCL, typename _TpOut>
|
||||||
@@ -1765,8 +1765,8 @@ struct Device::Impl
|
|||||||
int deviceVersionMajor_;
|
int deviceVersionMajor_;
|
||||||
int deviceVersionMinor_;
|
int deviceVersionMinor_;
|
||||||
String driverVersion_;
|
String driverVersion_;
|
||||||
String vendorName;
|
String vendorName_;
|
||||||
int vendor_;
|
int vendorID_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -1826,8 +1826,11 @@ String Device::extensions() const
|
|||||||
String Device::version() const
|
String Device::version() const
|
||||||
{ return p ? p->version_ : String(); }
|
{ return p ? p->version_ : String(); }
|
||||||
|
|
||||||
String Device::vendor() const
|
String Device::vendorName() const
|
||||||
{ return p ? p->vendorName : String(); }
|
{ return p ? p->vendorName_ : String(); }
|
||||||
|
|
||||||
|
int Device::vendorID() const
|
||||||
|
{ return p ? p->vendorID_ : 0; }
|
||||||
|
|
||||||
String Device::OpenCL_C_Version() const
|
String Device::OpenCL_C_Version() const
|
||||||
{ return p ? p->getStrProp(CL_DEVICE_OPENCL_C_VERSION) : String(); }
|
{ return p ? p->getStrProp(CL_DEVICE_OPENCL_C_VERSION) : String(); }
|
||||||
@@ -1938,21 +1941,6 @@ size_t Device::imageMaxArraySize() const
|
|||||||
{ CV_REQUIRE_OPENCL_1_2_ERROR; }
|
{ CV_REQUIRE_OPENCL_1_2_ERROR; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool Device::isAMD() const
|
|
||||||
{
|
|
||||||
return p->vendor_ == AMD;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Device::isIntel() const
|
|
||||||
{
|
|
||||||
return p->vendor_ == INTEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Device::isNvidia() const
|
|
||||||
{
|
|
||||||
return p->vendor_ == NVIDIA;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Device::maxClockFrequency() const
|
int Device::maxClockFrequency() const
|
||||||
{ return p ? p->getProp<cl_uint, int>(CL_DEVICE_MAX_CLOCK_FREQUENCY) : 0; }
|
{ return p ? p->getProp<cl_uint, int>(CL_DEVICE_MAX_CLOCK_FREQUENCY) : 0; }
|
||||||
|
|
||||||
@@ -3037,6 +3025,12 @@ struct Program::Impl
|
|||||||
for( i = 0; i < n; i++ )
|
for( i = 0; i < n; i++ )
|
||||||
deviceList[i] = ctx.device(i).ptr();
|
deviceList[i] = ctx.device(i).ptr();
|
||||||
|
|
||||||
|
Device device = Device::getDefault();
|
||||||
|
if (device.isAMD())
|
||||||
|
buildflags += " -D AMD_DEVICE";
|
||||||
|
else if (device.isIntel())
|
||||||
|
buildflags += " -D INTEL_DEVICE";
|
||||||
|
|
||||||
retval = clBuildProgram(handle, n,
|
retval = clBuildProgram(handle, n,
|
||||||
(const cl_device_id*)deviceList,
|
(const cl_device_id*)deviceList,
|
||||||
buildflags.c_str(), 0, 0);
|
buildflags.c_str(), 0, 0);
|
||||||
|
Reference in New Issue
Block a user