mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 15:23:05 +04:00
Merge branch 4.x
This commit is contained in:
Vendored
+6
-6
@@ -1,9 +1,9 @@
|
||||
# Binaries branch name: ffmpeg/master_20210303
|
||||
# Binaries were created for OpenCV: 7ac6abe02a33bef445a5b77214ad31964e2c5cc1
|
||||
ocv_update(FFMPEG_BINARIES_COMMIT "629590c3ba09fb0c8eaa9ab858ff13d3a84ca1aa")
|
||||
ocv_update(FFMPEG_FILE_HASH_BIN32 "638065d5a0dab8a828879942375dcac4")
|
||||
ocv_update(FFMPEG_FILE_HASH_BIN64 "7f10ae2e6a080ba3714f7a38ee03ae15")
|
||||
ocv_update(FFMPEG_FILE_HASH_CMAKE "f8e65dbe4a3b4eedc0d2997e07c3f3fd")
|
||||
# Binaries branch name: ffmpeg/master_20210608
|
||||
# Binaries were created for OpenCV: eaa9228a4fdfb9c2465aea65a50ce2d16b55dce0
|
||||
ocv_update(FFMPEG_BINARIES_COMMIT "213fcd5d4897319a83207406036c4a5957fba010")
|
||||
ocv_update(FFMPEG_FILE_HASH_BIN32 "bab661341c30862fa88627130219c0a5")
|
||||
ocv_update(FFMPEG_FILE_HASH_BIN64 "ac99f9767a83103c31709628af685924")
|
||||
ocv_update(FFMPEG_FILE_HASH_CMAKE "8862c87496e2e8c375965e1277dee1c7")
|
||||
|
||||
function(download_win_ffmpeg script_var)
|
||||
set(${script_var} "" PARENT_SCOPE)
|
||||
|
||||
@@ -468,6 +468,7 @@ OCV_OPTION(BUILD_ANDROID_SERVICE "Build OpenCV Manager for Google Play" OFF I
|
||||
OCV_OPTION(BUILD_CUDA_STUBS "Build CUDA modules stubs when no CUDA SDK" OFF IF (NOT APPLE_FRAMEWORK) )
|
||||
OCV_OPTION(BUILD_JAVA "Enable Java support" (ANDROID OR NOT CMAKE_CROSSCOMPILING) IF (ANDROID OR (NOT APPLE_FRAMEWORK AND NOT WINRT)) )
|
||||
OCV_OPTION(BUILD_OBJC "Enable Objective-C support" ON IF APPLE_FRAMEWORK )
|
||||
OCV_OPTION(BUILD_KOTLIN_EXTENSIONS "Build Kotlin extensions (Android)" ON IF ANDROID )
|
||||
|
||||
# OpenCV installation options
|
||||
# ===================================================
|
||||
|
||||
@@ -2,6 +2,17 @@
|
||||
set(ANDROID_GRADLE_PLUGIN_VERSION "3.2.1" CACHE STRING "Android Gradle Plugin version")
|
||||
message(STATUS "Android Gradle Plugin version: ${ANDROID_GRADLE_PLUGIN_VERSION}")
|
||||
|
||||
set(KOTLIN_PLUGIN_VERSION "1.4.10" CACHE STRING "Kotlin Plugin version")
|
||||
message(STATUS "kotlin Plugin version: ${KOTLIN_GRADLE_PLUGIN_VERSION}")
|
||||
|
||||
if(BUILD_KOTLIN_EXTENSIONS)
|
||||
set(KOTLIN_PLUGIN_DECLARATION "apply plugin: 'kotlin-android'" CACHE STRING "Kotlin Plugin version")
|
||||
set(KOTLIN_STD_LIB "implementation 'org.jetbrains.kotlin:kotlin-stdlib:${KOTLIN_PLUGIN_VERSION}'" CACHE STRING "Kotlin Standard Library dependency")
|
||||
else()
|
||||
set(KOTLIN_PLUGIN_DECLARATION "" CACHE STRING "Kotlin Plugin version")
|
||||
set(KOTLIN_STD_LIB "" CACHE STRING "Kotlin Standard Library dependency")
|
||||
endif()
|
||||
|
||||
set(GRADLE_VERSION "5.6.4" CACHE STRING "Gradle version")
|
||||
message(STATUS "Gradle version: ${GRADLE_VERSION}")
|
||||
|
||||
|
||||
@@ -620,7 +620,7 @@ CV_EXPORTS_W Mat findHomography(InputArray srcPoints, InputArray dstPoints, Outp
|
||||
@param Qz Optional output 3x3 rotation matrix around z-axis.
|
||||
|
||||
The function computes a RQ decomposition using the given rotations. This function is used in
|
||||
decomposeProjectionMatrix to decompose the left 3x3 submatrix of a projection matrix into a camera
|
||||
#decomposeProjectionMatrix to decompose the left 3x3 submatrix of a projection matrix into a camera
|
||||
and a rotation matrix.
|
||||
|
||||
It optionally returns three rotation matrices, one for each axis, and the three Euler angles in
|
||||
@@ -674,7 +674,7 @@ CV_EXPORTS_W void decomposeProjectionMatrix( InputArray projMatrix, OutputArray
|
||||
|
||||
The function computes partial derivatives of the elements of the matrix product \f$A*B\f$ with regard to
|
||||
the elements of each of the two input matrices. The function is used to compute the Jacobian
|
||||
matrices in stereoCalibrate but can also be used in any other similar optimization function.
|
||||
matrices in #stereoCalibrate but can also be used in any other similar optimization function.
|
||||
*/
|
||||
CV_EXPORTS_W void matMulDeriv( InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB );
|
||||
|
||||
@@ -703,7 +703,7 @@ where \f$\mathrm{rodrigues}\f$ denotes a rotation vector to a rotation matrix tr
|
||||
\f$\mathrm{rodrigues}^{-1}\f$ denotes the inverse transformation. See Rodrigues for details.
|
||||
|
||||
Also, the functions can compute the derivatives of the output vectors with regards to the input
|
||||
vectors (see matMulDeriv ). The functions are used inside stereoCalibrate but can also be used in
|
||||
vectors (see matMulDeriv ). The functions are used inside #stereoCalibrate but can also be used in
|
||||
your own code where Levenberg-Marquardt or another gradient-based solver is used to optimize a
|
||||
function that contains a matrix multiplication.
|
||||
*/
|
||||
@@ -934,7 +934,7 @@ a 3D point expressed in the world frame into the camera frame:
|
||||
arrays (enforced by the assertion using cv::Mat::checkVector() around line 55 of
|
||||
modules/3d/src/solvepnp.cpp version 2.4.9)
|
||||
- The P3P algorithm requires image points to be in an array of shape (N,1,2) due
|
||||
to its calling of cv::undistortPoints (around line 75 of modules/3d/src/solvepnp.cpp version 2.4.9)
|
||||
to its calling of #undistortPoints (around line 75 of modules/3d/src/solvepnp.cpp version 2.4.9)
|
||||
which requires 2-channel information.
|
||||
- Thus, given some data D = np.array(...) where D.shape = (N,M), in order to use a subset of
|
||||
it as, e.g., imagePoints, one must effectively copy it into a new array: imagePoints =
|
||||
@@ -1140,7 +1140,7 @@ vectors, respectively, and further optimizes them.
|
||||
- @ref SOLVEPNP_ITERATIVE Iterative method is based on a Levenberg-Marquardt optimization. In
|
||||
this case the function finds such a pose that minimizes reprojection error, that is the sum
|
||||
of squared distances between the observed projections imagePoints and the projected (using
|
||||
projectPoints ) objectPoints .
|
||||
#projectPoints ) objectPoints .
|
||||
- @ref SOLVEPNP_P3P Method is based on the paper of X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang
|
||||
"Complete Solution Classification for the Perspective-Three-Point Problem" (@cite gao2003complete).
|
||||
In this case the function requires exactly four object and image points.
|
||||
@@ -1276,7 +1276,7 @@ a 3D point expressed in the world frame into the camera frame:
|
||||
arrays (enforced by the assertion using cv::Mat::checkVector() around line 55 of
|
||||
modules/3d/src/solvepnp.cpp version 2.4.9)
|
||||
- The P3P algorithm requires image points to be in an array of shape (N,1,2) due
|
||||
to its calling of undistortPoints (around line 75 of modules/3d/src/solvepnp.cpp version 2.4.9)
|
||||
to its calling of #undistortPoints (around line 75 of modules/3d/src/solvepnp.cpp version 2.4.9)
|
||||
which requires 2-channel information.
|
||||
- Thus, given some data D = np.array(...) where D.shape = (N,M), in order to use a subset of
|
||||
it as, e.g., imagePoints, one must effectively copy it into a new array: imagePoints =
|
||||
@@ -1357,7 +1357,7 @@ CV_EXPORTS_W void convertPointsFromHomogeneous( InputArray src, OutputArray dst,
|
||||
@param dst Output vector of 2D, 3D, or 4D points.
|
||||
|
||||
The function converts 2D or 3D points from/to homogeneous coordinates by calling either
|
||||
convertPointsToHomogeneous or convertPointsFromHomogeneous.
|
||||
#convertPointsToHomogeneous or #convertPointsFromHomogeneous.
|
||||
|
||||
@note The function is obsolete. Use one of the previous two functions instead.
|
||||
*/
|
||||
@@ -1396,7 +1396,7 @@ matrices sequentially).
|
||||
|
||||
The calculated fundamental matrix may be passed further to computeCorrespondEpilines that finds the
|
||||
epipolar lines corresponding to the specified points. It can also be passed to
|
||||
stereoRectifyUncalibrated to compute the rectification transformation. :
|
||||
#stereoRectifyUncalibrated to compute the rectification transformation. :
|
||||
@code
|
||||
// Example. Estimation of fundamental matrix using the RANSAC algorithm
|
||||
int point_count = 100;
|
||||
@@ -1441,7 +1441,7 @@ be floating-point (single or double precision).
|
||||
@param cameraMatrix Camera intrinsic matrix \f$\cameramatrix{A}\f$ .
|
||||
Note that this function assumes that points1 and points2 are feature points from cameras with the
|
||||
same camera intrinsic matrix. If this assumption does not hold for your use case, use
|
||||
`undistortPoints()` with `P = cv::NoArray()` for both cameras to transform image points
|
||||
#undistortPoints with `P = cv::NoArray()` for both cameras to transform image points
|
||||
to normalized image coordinates, which are valid for the identity camera intrinsic matrix. When
|
||||
passing these coordinates, pass the identity matrix for this parameter.
|
||||
@param method Method for computing an essential matrix.
|
||||
@@ -1464,7 +1464,7 @@ This function estimates essential matrix based on the five-point algorithm solve
|
||||
|
||||
where \f$E\f$ is an essential matrix, \f$p_1\f$ and \f$p_2\f$ are corresponding points in the first and the
|
||||
second images, respectively. The result of this function may be passed further to
|
||||
decomposeEssentialMat or recoverPose to recover the relative pose between cameras.
|
||||
#decomposeEssentialMat or #recoverPose to recover the relative pose between cameras.
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Mat findEssentialMat(
|
||||
@@ -1539,13 +1539,13 @@ be floating-point (single or double precision).
|
||||
@param cameraMatrix1 Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ .
|
||||
Note that this function assumes that points1 and points2 are feature points from cameras with the
|
||||
same camera matrix. If this assumption does not hold for your use case, use
|
||||
`undistortPoints()` with `P = cv::NoArray()` for both cameras to transform image points
|
||||
#undistortPoints with `P = cv::NoArray()` for both cameras to transform image points
|
||||
to normalized image coordinates, which are valid for the identity camera matrix. When
|
||||
passing these coordinates, pass the identity matrix for this parameter.
|
||||
@param cameraMatrix2 Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ .
|
||||
Note that this function assumes that points1 and points2 are feature points from cameras with the
|
||||
same camera matrix. If this assumption does not hold for your use case, use
|
||||
`undistortPoints()` with `P = cv::NoArray()` for both cameras to transform image points
|
||||
#undistortPoints with `P = cv::NoArray()` for both cameras to transform image points
|
||||
to normalized image coordinates, which are valid for the identity camera matrix. When
|
||||
passing these coordinates, pass the identity matrix for this parameter.
|
||||
@param distCoeffs1 Input vector of distortion coefficients
|
||||
@@ -1573,7 +1573,7 @@ This function estimates essential matrix based on the five-point algorithm solve
|
||||
|
||||
where \f$E\f$ is an essential matrix, \f$p_1\f$ and \f$p_2\f$ are corresponding points in the first and the
|
||||
second images, respectively. The result of this function may be passed further to
|
||||
decomposeEssentialMat or recoverPose to recover the relative pose between cameras.
|
||||
#decomposeEssentialMat or #recoverPose to recover the relative pose between cameras.
|
||||
*/
|
||||
CV_EXPORTS_W Mat findEssentialMat( InputArray points1, InputArray points2,
|
||||
InputArray cameraMatrix1, InputArray distCoeffs1,
|
||||
@@ -1635,7 +1635,7 @@ possible pose hypotheses by doing cheirality check. The cheirality check means t
|
||||
triangulated 3D points should have positive depth. Some details can be found in @cite Nister03.
|
||||
|
||||
This function can be used to process the output E and mask from @ref findEssentialMat. In this
|
||||
scenario, points1 and points2 are the same input for findEssentialMat.:
|
||||
scenario, points1 and points2 are the same input for #findEssentialMat :
|
||||
@code
|
||||
// Example. Estimation of fundamental matrix using the RANSAC algorithm
|
||||
int point_count = 100;
|
||||
@@ -1731,14 +1731,14 @@ CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray point
|
||||
@param points Input points. \f$N \times 1\f$ or \f$1 \times N\f$ matrix of type CV_32FC2 or
|
||||
vector\<Point2f\> .
|
||||
@param whichImage Index of the image (1 or 2) that contains the points .
|
||||
@param F Fundamental matrix that can be estimated using findFundamentalMat or stereoRectify .
|
||||
@param F Fundamental matrix that can be estimated using #findFundamentalMat or #stereoRectify .
|
||||
@param lines Output vector of the epipolar lines corresponding to the points in the other image.
|
||||
Each line \f$ax + by + c=0\f$ is encoded by 3 numbers \f$(a, b, c)\f$ .
|
||||
|
||||
For every point in one of the two images of a stereo pair, the function finds the equation of the
|
||||
corresponding epipolar line in the other image.
|
||||
|
||||
From the fundamental matrix definition (see findFundamentalMat ), line \f$l^{(2)}_i\f$ in the second
|
||||
From the fundamental matrix definition (see #findFundamentalMat ), line \f$l^{(2)}_i\f$ in the second
|
||||
image for the point \f$p^{(1)}_i\f$ in the first image (when whichImage=1 ) is computed as:
|
||||
|
||||
\f[l^{(2)}_i = F p^{(1)}_i\f]
|
||||
@@ -1798,7 +1798,6 @@ geometric distance between points \f$a\f$ and \f$b\f$ ) subject to the epipolar
|
||||
CV_EXPORTS_W void correctMatches( InputArray F, InputArray points1, InputArray points2,
|
||||
OutputArray newPoints1, OutputArray newPoints2 );
|
||||
|
||||
|
||||
/** @brief Calculates the Sampson Distance between two points.
|
||||
|
||||
The function cv::sampsonDistance calculates and returns the first order approximation of the geometric error as:
|
||||
@@ -1810,7 +1809,7 @@ sd( \texttt{pt1} , \texttt{pt2} )=
|
||||
((\texttt{F}^t \cdot \texttt{pt2})(0))^2 +
|
||||
((\texttt{F}^t \cdot \texttt{pt2})(1))^2}
|
||||
\f]
|
||||
The fundamental matrix may be calculated using the cv::findFundamentalMat function. See @cite HartleyZ00 11.4.3 for details.
|
||||
The fundamental matrix may be calculated using the #findFundamentalMat function. See @cite HartleyZ00 11.4.3 for details.
|
||||
@param pt1 first homogeneous 2d point
|
||||
@param pt2 second homogeneous 2d point
|
||||
@param F fundamental matrix
|
||||
@@ -2104,10 +2103,10 @@ CV_EXPORTS_W int decomposeHomographyMat(InputArray H,
|
||||
@param beforePoints Vector of (rectified) visible reference points before the homography is applied
|
||||
@param afterPoints Vector of (rectified) visible reference points after the homography is applied
|
||||
@param possibleSolutions Vector of int indices representing the viable solution set after filtering
|
||||
@param pointsMask optional Mat/Vector of 8u type representing the mask for the inliers as given by the findHomography function
|
||||
@param pointsMask optional Mat/Vector of 8u type representing the mask for the inliers as given by the #findHomography function
|
||||
|
||||
This function is intended to filter the output of the decomposeHomographyMat based on additional
|
||||
information as described in @cite Malis . The summary of the method: the decomposeHomographyMat function
|
||||
This function is intended to filter the output of the #decomposeHomographyMat based on additional
|
||||
information as described in @cite Malis . The summary of the method: the #decomposeHomographyMat function
|
||||
returns 2 unique solutions and their "opposites" for a total of 4 solutions. If we have access to the
|
||||
sets of points visible in the camera frame before and after the homography transformation is applied,
|
||||
we can determine which are the true potential solutions and which are the opposites by verifying which
|
||||
@@ -2166,7 +2165,7 @@ CV_EXPORTS_W void undistort( InputArray src, OutputArray dst,
|
||||
/** @brief Computes the undistortion and rectification transformation map.
|
||||
|
||||
The function computes the joint undistortion and rectification transformation and represents the
|
||||
result in the form of maps for remap. The undistorted image looks like original, as if it is
|
||||
result in the form of maps for #remap. The undistorted image looks like original, as if it is
|
||||
captured with a camera using the camera matrix =newCameraMatrix and zero distortion. In case of a
|
||||
monocular camera, newCameraMatrix is usually equal to cameraMatrix, or it can be computed by
|
||||
#getOptimalNewCameraMatrix for a better control over scaling. In case of a stereo camera,
|
||||
@@ -2176,7 +2175,7 @@ Also, this new camera is oriented differently in the coordinate space, according
|
||||
example, helps to align two heads of a stereo camera so that the epipolar lines on both images
|
||||
become horizontal and have the same y- coordinate (in case of a horizontally aligned stereo camera).
|
||||
|
||||
The function actually builds the maps for the inverse mapping algorithm that is used by remap. That
|
||||
The function actually builds the maps for the inverse mapping algorithm that is used by #remap. That
|
||||
is, for each pixel \f$(u, v)\f$ in the destination (corrected and rectified) image, the function
|
||||
computes the corresponding coordinates in the source image (that is, in the original image from
|
||||
camera). The following process is applied:
|
||||
@@ -2204,7 +2203,7 @@ where \f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x
|
||||
are the distortion coefficients.
|
||||
|
||||
In case of a stereo camera, this function is called twice: once for each camera head, after
|
||||
stereoRectify, which in its turn is called after #stereoCalibrate. But if the stereo camera
|
||||
#stereoRectify, which in its turn is called after #stereoCalibrate. But if the stereo camera
|
||||
was not calibrated, it is still possible to compute the rectification transformations directly from
|
||||
the fundamental matrix using #stereoRectifyUncalibrated. For each camera, the function computes
|
||||
homography H as the rectification transformation in a pixel domain, not a rotation matrix R in 3D
|
||||
@@ -2230,6 +2229,77 @@ void initUndistortRectifyMap(InputArray cameraMatrix, InputArray distCoeffs,
|
||||
InputArray R, InputArray newCameraMatrix,
|
||||
Size size, int m1type, OutputArray map1, OutputArray map2);
|
||||
|
||||
/** @brief Computes the projection and inverse-rectification transformation map. In essense, this is the inverse of
|
||||
#initUndistortRectifyMap to accomodate stereo-rectification of projectors ('inverse-cameras') in projector-camera pairs.
|
||||
|
||||
The function computes the joint projection and inverse rectification transformation and represents the
|
||||
result in the form of maps for #remap. The projected image looks like a distorted version of the original which,
|
||||
once projected by a projector, should visually match the original. In case of a monocular camera, newCameraMatrix
|
||||
is usually equal to cameraMatrix, or it can be computed by
|
||||
#getOptimalNewCameraMatrix for a better control over scaling. In case of a projector-camera pair,
|
||||
newCameraMatrix is normally set to P1 or P2 computed by #stereoRectify .
|
||||
|
||||
The projector is oriented differently in the coordinate space, according to R. In case of projector-camera pairs,
|
||||
this helps align the projector (in the same manner as #initUndistortRectifyMap for the camera) to create a stereo-rectified pair. This
|
||||
allows epipolar lines on both images to become horizontal and have the same y-coordinate (in case of a horizontally aligned projector-camera pair).
|
||||
|
||||
The function builds the maps for the inverse mapping algorithm that is used by #remap. That
|
||||
is, for each pixel \f$(u, v)\f$ in the destination (projected and inverse-rectified) image, the function
|
||||
computes the corresponding coordinates in the source image (that is, in the original digital image). The following process is applied:
|
||||
|
||||
\f[
|
||||
\begin{array}{l}
|
||||
\text{newCameraMatrix}\\
|
||||
x \leftarrow (u - {c'}_x)/{f'}_x \\
|
||||
y \leftarrow (v - {c'}_y)/{f'}_y \\
|
||||
|
||||
\\\text{Undistortion}
|
||||
\\\scriptsize{\textit{though equation shown is for radial undistortion, function implements cv::undistortPoints()}}\\
|
||||
r^2 \leftarrow x^2 + y^2 \\
|
||||
\theta \leftarrow \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6}\\
|
||||
x' \leftarrow \frac{x}{\theta} \\
|
||||
y' \leftarrow \frac{y}{\theta} \\
|
||||
|
||||
\\\text{Rectification}\\
|
||||
{[X\,Y\,W]} ^T \leftarrow R*[x' \, y' \, 1]^T \\
|
||||
x'' \leftarrow X/W \\
|
||||
y'' \leftarrow Y/W \\
|
||||
|
||||
\\\text{cameraMatrix}\\
|
||||
map_x(u,v) \leftarrow x'' f_x + c_x \\
|
||||
map_y(u,v) \leftarrow y'' f_y + c_y
|
||||
\end{array}
|
||||
\f]
|
||||
where \f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$
|
||||
are the distortion coefficients vector distCoeffs.
|
||||
|
||||
In case of a stereo-rectified projector-camera pair, this function is called for the projector while #initUndistortRectifyMap is called for the camera head.
|
||||
This is done after #stereoRectify, which in turn is called after #stereoCalibrate. If the projector-camera pair
|
||||
is not calibrated, it is still possible to compute the rectification transformations directly from
|
||||
the fundamental matrix using #stereoRectifyUncalibrated. For the projector and camera, the function computes
|
||||
homography H as the rectification transformation in a pixel domain, not a rotation matrix R in 3D
|
||||
space. R can be computed from H as
|
||||
\f[\texttt{R} = \texttt{cameraMatrix} ^{-1} \cdot \texttt{H} \cdot \texttt{cameraMatrix}\f]
|
||||
where cameraMatrix can be chosen arbitrarily.
|
||||
|
||||
@param cameraMatrix Input camera matrix \f$A=\vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ .
|
||||
@param distCoeffs Input vector of distortion coefficients
|
||||
\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$
|
||||
of 4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed.
|
||||
@param R Optional rectification transformation in the object space (3x3 matrix). R1 or R2,
|
||||
computed by #stereoRectify can be passed here. If the matrix is empty, the identity transformation
|
||||
is assumed.
|
||||
@param newCameraMatrix New camera matrix \f$A'=\vecthreethree{f_x'}{0}{c_x'}{0}{f_y'}{c_y'}{0}{0}{1}\f$.
|
||||
@param size Distorted image size.
|
||||
@param m1type Type of the first output map. Can be CV_32FC1, CV_32FC2 or CV_16SC2, see #convertMaps
|
||||
@param map1 The first output map for #remap.
|
||||
@param map2 The second output map for #remap.
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
void initInverseRectificationMap( InputArray cameraMatrix, InputArray distCoeffs,
|
||||
InputArray R, InputArray newCameraMatrix,
|
||||
const Size& size, int m1type, OutputArray map1, OutputArray map2 );
|
||||
|
||||
//! initializes maps for #remap for wide-angle
|
||||
CV_EXPORTS
|
||||
float initWideAngleProjMap(InputArray cameraMatrix, InputArray distCoeffs,
|
||||
@@ -2305,10 +2375,10 @@ assumed.
|
||||
@param imageSize Original image size.
|
||||
@param alpha Free scaling parameter between 0 (when all the pixels in the undistorted image are
|
||||
valid) and 1 (when all the source image pixels are retained in the undistorted image). See
|
||||
stereoRectify for details.
|
||||
#stereoRectify for details.
|
||||
@param newImgSize Image size after rectification. By default, it is set to imageSize .
|
||||
@param validPixROI Optional output rectangle that outlines all-good-pixels region in the
|
||||
undistorted image. See roi1, roi2 description in stereoRectify .
|
||||
undistorted image. See roi1, roi2 description in #stereoRectify .
|
||||
@param centerPrincipalPoint Optional flag that indicates whether in the new camera intrinsic matrix the
|
||||
principal point should be at the image center or not. By default, the principal point is chosen to
|
||||
best fit a subset of the source image (determined by alpha) to the corrected image.
|
||||
@@ -2320,7 +2390,7 @@ image pixels if there is valuable information in the corners alpha=1 , or get so
|
||||
When alpha\>0 , the undistorted result is likely to have some black pixels corresponding to
|
||||
"virtual" pixels outside of the captured distorted image. The original camera intrinsic matrix, distortion
|
||||
coefficients, the computed new camera intrinsic matrix, and newImageSize should be passed to
|
||||
initUndistortRectifyMap to produce the maps for remap .
|
||||
#initUndistortRectifyMap to produce the maps for #remap .
|
||||
*/
|
||||
CV_EXPORTS_W Mat getOptimalNewCameraMatrix( InputArray cameraMatrix, InputArray distCoeffs,
|
||||
Size imageSize, double alpha, Size newImgSize = Size(),
|
||||
@@ -2331,7 +2401,7 @@ CV_EXPORTS_W Mat getOptimalNewCameraMatrix( InputArray cameraMatrix, InputArray
|
||||
|
||||
The function is similar to #undistort and #initUndistortRectifyMap but it operates on a
|
||||
sparse set of points instead of a raster image. Also the function performs a reverse transformation
|
||||
to projectPoints. In case of a 3D object, it does not reconstruct its 3D coordinates, but for a
|
||||
to #projectPoints. In case of a 3D object, it does not reconstruct its 3D coordinates, but for a
|
||||
planar object, it does, up to a translation vector, if the proper R is specified.
|
||||
|
||||
For each observed point coordinate \f$(u, v)\f$ the function computes:
|
||||
@@ -2516,7 +2586,6 @@ public:
|
||||
protected:
|
||||
struct Impl;
|
||||
Ptr<Impl> p;
|
||||
|
||||
};
|
||||
|
||||
//! @} _3d
|
||||
|
||||
@@ -16,4 +16,15 @@ PERF_TEST(Undistort, InitUndistortMap)
|
||||
SANITY_CHECK_NOTHING();
|
||||
}
|
||||
|
||||
PERF_TEST(Undistort, DISABLED_InitInverseRectificationMap)
|
||||
{
|
||||
Size size_w_h(512 + 3, 512);
|
||||
Mat k(3, 3, CV_32FC1);
|
||||
Mat d(1, 14, CV_64FC1);
|
||||
Mat dst(size_w_h, CV_32FC2);
|
||||
declare.in(k, d, WARMUP_RNG).out(dst);
|
||||
TEST_CYCLE() initInverseRectificationMap(k, d, noArray(), k, size_w_h, CV_32FC2, dst, noArray());
|
||||
SANITY_CHECK_NOTHING();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -159,6 +159,125 @@ void initUndistortRectifyMap( InputArray _cameraMatrix, InputArray _distCoeffs,
|
||||
fx, fy, k1, k2, p1, p2, k3, k4, k5, k6, s1, s2, s3, s4));
|
||||
}
|
||||
|
||||
void initInverseRectificationMap( InputArray _cameraMatrix, InputArray _distCoeffs,
|
||||
InputArray _matR, InputArray _newCameraMatrix,
|
||||
const Size& size, int m1type, OutputArray _map1, OutputArray _map2 )
|
||||
{
|
||||
// Parameters
|
||||
Mat cameraMatrix = _cameraMatrix.getMat(), distCoeffs = _distCoeffs.getMat();
|
||||
Mat matR = _matR.getMat(), newCameraMatrix = _newCameraMatrix.getMat();
|
||||
|
||||
// Check m1type validity
|
||||
if( m1type <= 0 )
|
||||
m1type = CV_16SC2;
|
||||
CV_Assert( m1type == CV_16SC2 || m1type == CV_32FC1 || m1type == CV_32FC2 );
|
||||
|
||||
// Init Maps
|
||||
_map1.create( size, m1type );
|
||||
Mat map1 = _map1.getMat(), map2;
|
||||
if( m1type != CV_32FC2 )
|
||||
{
|
||||
_map2.create( size, m1type == CV_16SC2 ? CV_16UC1 : CV_32FC1 );
|
||||
map2 = _map2.getMat();
|
||||
}
|
||||
else {
|
||||
_map2.release();
|
||||
}
|
||||
|
||||
// Init camera intrinsics
|
||||
Mat_<double> A = Mat_<double>(cameraMatrix), Ar;
|
||||
if( !newCameraMatrix.empty() )
|
||||
Ar = Mat_<double>(newCameraMatrix);
|
||||
else
|
||||
Ar = getDefaultNewCameraMatrix( A, size, true );
|
||||
CV_Assert( A.size() == Size(3,3) );
|
||||
CV_Assert( Ar.size() == Size(3,3) || Ar.size() == Size(4, 3));
|
||||
|
||||
// Init rotation matrix
|
||||
Mat_<double> R = Mat_<double>::eye(3, 3);
|
||||
if( !matR.empty() )
|
||||
{
|
||||
R = Mat_<double>(matR);
|
||||
//Note, do not inverse
|
||||
}
|
||||
CV_Assert( Size(3,3) == R.size() );
|
||||
|
||||
// Init distortion vector
|
||||
if( !distCoeffs.empty() ){
|
||||
distCoeffs = Mat_<double>(distCoeffs);
|
||||
|
||||
// Fix distortion vector orientation
|
||||
if( distCoeffs.rows != 1 && !distCoeffs.isContinuous() ) {
|
||||
distCoeffs = distCoeffs.t();
|
||||
}
|
||||
}
|
||||
|
||||
// Validate distortion vector size
|
||||
CV_Assert( distCoeffs.empty() || // Empty allows cv::undistortPoints to skip distortion
|
||||
distCoeffs.size() == Size(1, 4) || distCoeffs.size() == Size(4, 1) ||
|
||||
distCoeffs.size() == Size(1, 5) || distCoeffs.size() == Size(5, 1) ||
|
||||
distCoeffs.size() == Size(1, 8) || distCoeffs.size() == Size(8, 1) ||
|
||||
distCoeffs.size() == Size(1, 12) || distCoeffs.size() == Size(12, 1) ||
|
||||
distCoeffs.size() == Size(1, 14) || distCoeffs.size() == Size(14, 1));
|
||||
|
||||
// Create objectPoints
|
||||
std::vector<cv::Point2i> p2i_objPoints;
|
||||
std::vector<cv::Point2f> p2f_objPoints;
|
||||
for (int r = 0; r < size.height; r++)
|
||||
{
|
||||
for (int c = 0; c < size.width; c++)
|
||||
{
|
||||
p2i_objPoints.push_back(cv::Point2i(c, r));
|
||||
p2f_objPoints.push_back(cv::Point2f(static_cast<float>(c), static_cast<float>(r)));
|
||||
}
|
||||
}
|
||||
|
||||
// Undistort
|
||||
std::vector<cv::Point2f> p2f_objPoints_undistorted;
|
||||
undistortPoints(
|
||||
p2f_objPoints,
|
||||
p2f_objPoints_undistorted,
|
||||
A,
|
||||
distCoeffs,
|
||||
cv::Mat::eye(cv::Size(3, 3), CV_64FC1), // R
|
||||
cv::Mat::eye(cv::Size(3, 3), CV_64FC1) // P = New K
|
||||
);
|
||||
|
||||
// Rectify
|
||||
std::vector<cv::Point2f> p2f_sourcePoints_pinHole;
|
||||
perspectiveTransform(
|
||||
p2f_objPoints_undistorted,
|
||||
p2f_sourcePoints_pinHole,
|
||||
R
|
||||
);
|
||||
|
||||
// Project points back to camera coordinates.
|
||||
std::vector<cv::Point2f> p2f_sourcePoints;
|
||||
undistortPoints(
|
||||
p2f_sourcePoints_pinHole,
|
||||
p2f_sourcePoints,
|
||||
cv::Mat::eye(cv::Size(3, 3), CV_32FC1), // K
|
||||
cv::Mat::zeros(cv::Size(1, 4), CV_32FC1), // Distortion
|
||||
cv::Mat::eye(cv::Size(3, 3), CV_32FC1), // R
|
||||
Ar // New K
|
||||
);
|
||||
|
||||
// Copy to map
|
||||
if (m1type == CV_16SC2) {
|
||||
for (size_t i=0; i < p2i_objPoints.size(); i++) {
|
||||
map1.at<Vec2s>(p2i_objPoints[i].y, p2i_objPoints[i].x) = Vec2s(saturate_cast<short>(p2f_sourcePoints[i].x), saturate_cast<short>(p2f_sourcePoints[i].y));
|
||||
}
|
||||
} else if (m1type == CV_32FC2) {
|
||||
for (size_t i=0; i < p2i_objPoints.size(); i++) {
|
||||
map1.at<Vec2f>(p2i_objPoints[i].y, p2i_objPoints[i].x) = Vec2f(p2f_sourcePoints[i]);
|
||||
}
|
||||
} else { // m1type == CV_32FC1
|
||||
for (size_t i=0; i < p2i_objPoints.size(); i++) {
|
||||
map1.at<float>(p2i_objPoints[i].y, p2i_objPoints[i].x) = p2f_sourcePoints[i].x;
|
||||
map2.at<float>(p2i_objPoints[i].y, p2i_objPoints[i].x) = p2f_sourcePoints[i].y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void undistort( InputArray _src, OutputArray _dst, InputArray _cameraMatrix,
|
||||
InputArray _distCoeffs, InputArray _newCameraMatrix )
|
||||
|
||||
@@ -719,11 +719,281 @@ double CV_InitUndistortRectifyMapTest::get_success_error_level( int /*test_case_
|
||||
return 8;
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
class CV_InitInverseRectificationMapTest : public cvtest::ArrayTest
|
||||
{
|
||||
public:
|
||||
CV_InitInverseRectificationMapTest();
|
||||
protected:
|
||||
int prepare_test_case (int test_case_idx);
|
||||
void prepare_to_validation( int test_case_idx );
|
||||
void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types );
|
||||
double get_success_error_level( int test_case_idx, int i, int j );
|
||||
void run_func();
|
||||
|
||||
private:
|
||||
static const int MAX_X = 1024;
|
||||
static const int MAX_Y = 1024;
|
||||
bool zero_new_cam;
|
||||
bool zero_distortion;
|
||||
bool zero_R;
|
||||
|
||||
cv::Size img_size;
|
||||
int map_type;
|
||||
};
|
||||
|
||||
CV_InitInverseRectificationMapTest::CV_InitInverseRectificationMapTest()
|
||||
{
|
||||
test_array[INPUT].push_back(NULL); // camera matrix
|
||||
test_array[INPUT].push_back(NULL); // distortion coeffs
|
||||
test_array[INPUT].push_back(NULL); // R matrix
|
||||
test_array[INPUT].push_back(NULL); // new camera matrix
|
||||
test_array[OUTPUT].push_back(NULL); // inverse rectified mapx
|
||||
test_array[OUTPUT].push_back(NULL); // inverse rectified mapy
|
||||
test_array[REF_OUTPUT].push_back(NULL);
|
||||
test_array[REF_OUTPUT].push_back(NULL);
|
||||
|
||||
zero_distortion = zero_new_cam = zero_R = false;
|
||||
map_type = 0;
|
||||
}
|
||||
|
||||
void CV_InitInverseRectificationMapTest::get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types )
|
||||
{
|
||||
cvtest::ArrayTest::get_test_array_types_and_sizes(test_case_idx,sizes,types);
|
||||
RNG& rng = ts->get_rng();
|
||||
//rng.next();
|
||||
|
||||
map_type = CV_32F;
|
||||
types[OUTPUT][0] = types[OUTPUT][1] = types[REF_OUTPUT][0] = types[REF_OUTPUT][1] = map_type;
|
||||
|
||||
img_size.width = cvtest::randInt(rng) % MAX_X + 1;
|
||||
img_size.height = cvtest::randInt(rng) % MAX_Y + 1;
|
||||
|
||||
types[INPUT][0] = cvtest::randInt(rng)%2 ? CV_64F : CV_32F;
|
||||
types[INPUT][1] = cvtest::randInt(rng)%2 ? CV_64F : CV_32F;
|
||||
types[INPUT][2] = cvtest::randInt(rng)%2 ? CV_64F : CV_32F;
|
||||
types[INPUT][3] = cvtest::randInt(rng)%2 ? CV_64F : CV_32F;
|
||||
|
||||
sizes[OUTPUT][0] = sizes[OUTPUT][1] = sizes[REF_OUTPUT][0] = sizes[REF_OUTPUT][1] = img_size;
|
||||
sizes[INPUT][0] = sizes[INPUT][2] = sizes[INPUT][3] = cvSize(3,3);
|
||||
|
||||
Size dsize;
|
||||
|
||||
if (cvtest::randInt(rng)%2)
|
||||
{
|
||||
if (cvtest::randInt(rng)%2)
|
||||
{
|
||||
dsize = Size(1,4);
|
||||
}
|
||||
else
|
||||
{
|
||||
dsize = Size(1,5);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cvtest::randInt(rng)%2)
|
||||
{
|
||||
dsize = Size(4,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dsize = Size(5,1);
|
||||
}
|
||||
}
|
||||
sizes[INPUT][1] = dsize;
|
||||
}
|
||||
|
||||
|
||||
int CV_InitInverseRectificationMapTest::prepare_test_case(int test_case_idx)
|
||||
{
|
||||
RNG& rng = ts->get_rng();
|
||||
int code = cvtest::ArrayTest::prepare_test_case( test_case_idx );
|
||||
|
||||
if (code <= 0)
|
||||
return code;
|
||||
|
||||
int dist_size = test_mat[INPUT][1].cols > test_mat[INPUT][1].rows ? test_mat[INPUT][1].cols : test_mat[INPUT][1].rows;
|
||||
double cam[9] = {0,0,0,0,0,0,0,0,1};
|
||||
vector<double> dist(dist_size);
|
||||
vector<double> new_cam(test_mat[INPUT][3].cols * test_mat[INPUT][3].rows);
|
||||
|
||||
Mat _camera(3,3,CV_64F,cam);
|
||||
Mat _distort(test_mat[INPUT][1].size(),CV_64F,&dist[0]);
|
||||
Mat _new_cam(test_mat[INPUT][3].size(),CV_64F,&new_cam[0]);
|
||||
|
||||
//Generating camera matrix
|
||||
double sz = MAX(img_size.width,img_size.height);
|
||||
double aspect_ratio = cvtest::randReal(rng)*0.6 + 0.7;
|
||||
cam[2] = (img_size.width - 1)*0.5 + cvtest::randReal(rng)*10 - 5;
|
||||
cam[5] = (img_size.height - 1)*0.5 + cvtest::randReal(rng)*10 - 5;
|
||||
cam[0] = sz/(0.9 - cvtest::randReal(rng)*0.6);
|
||||
cam[4] = aspect_ratio*cam[0];
|
||||
|
||||
//Generating distortion coeffs
|
||||
dist[0] = cvtest::randReal(rng)*0.06 - 0.03;
|
||||
dist[1] = cvtest::randReal(rng)*0.06 - 0.03;
|
||||
if( dist[0]*dist[1] > 0 )
|
||||
dist[1] = -dist[1];
|
||||
if( cvtest::randInt(rng)%4 != 0 )
|
||||
{
|
||||
dist[2] = cvtest::randReal(rng)*0.004 - 0.002;
|
||||
dist[3] = cvtest::randReal(rng)*0.004 - 0.002;
|
||||
if (dist_size > 4)
|
||||
dist[4] = cvtest::randReal(rng)*0.004 - 0.002;
|
||||
}
|
||||
else
|
||||
{
|
||||
dist[2] = dist[3] = 0;
|
||||
if (dist_size > 4)
|
||||
dist[4] = 0;
|
||||
}
|
||||
|
||||
//Generating new camera matrix
|
||||
_new_cam = Scalar::all(0);
|
||||
new_cam[8] = 1;
|
||||
|
||||
// If P == K
|
||||
//new_cam[0] = cam[0];
|
||||
//new_cam[4] = cam[4];
|
||||
//new_cam[2] = cam[2];
|
||||
//new_cam[5] = cam[5];
|
||||
|
||||
// If P != K
|
||||
new_cam[0] = cam[0] + (cvtest::randReal(rng) - (double)0.5)*0.2*cam[0]; //10%
|
||||
new_cam[4] = cam[4] + (cvtest::randReal(rng) - (double)0.5)*0.2*cam[4]; //10%
|
||||
new_cam[2] = cam[2] + (cvtest::randReal(rng) - (double)0.5)*0.3*img_size.width; //15%
|
||||
new_cam[5] = cam[5] + (cvtest::randReal(rng) - (double)0.5)*0.3*img_size.height; //15%
|
||||
|
||||
//Generating R matrix
|
||||
Mat _rot(3,3,CV_64F);
|
||||
Mat rotation(1,3,CV_64F);
|
||||
rotation.at<double>(0) = CV_PI/8*(cvtest::randReal(rng) - (double)0.5); // phi
|
||||
rotation.at<double>(1) = CV_PI/8*(cvtest::randReal(rng) - (double)0.5); // ksi
|
||||
rotation.at<double>(2) = CV_PI/3*(cvtest::randReal(rng) - (double)0.5); //khi
|
||||
cvtest::Rodrigues(rotation, _rot);
|
||||
|
||||
//cvSetIdentity(_rot);
|
||||
//copying data
|
||||
cvtest::convert( _camera, test_mat[INPUT][0], test_mat[INPUT][0].type());
|
||||
cvtest::convert( _distort, test_mat[INPUT][1], test_mat[INPUT][1].type());
|
||||
cvtest::convert( _rot, test_mat[INPUT][2], test_mat[INPUT][2].type());
|
||||
cvtest::convert( _new_cam, test_mat[INPUT][3], test_mat[INPUT][3].type());
|
||||
|
||||
zero_distortion = (cvtest::randInt(rng)%2) == 0 ? false : true;
|
||||
zero_new_cam = (cvtest::randInt(rng)%2) == 0 ? false : true;
|
||||
zero_R = (cvtest::randInt(rng)%2) == 0 ? false : true;
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
void CV_InitInverseRectificationMapTest::prepare_to_validation(int/* test_case_idx*/)
|
||||
{
|
||||
// Configure Parameters
|
||||
Mat _a0 = test_mat[INPUT][0];
|
||||
Mat _d0 = zero_distortion ? cv::Mat() : test_mat[INPUT][1];
|
||||
Mat _R0 = zero_R ? cv::Mat() : test_mat[INPUT][2];
|
||||
Mat _new_cam0 = zero_new_cam ? test_mat[INPUT][0] : test_mat[INPUT][3];
|
||||
Mat _mapx(img_size, CV_32F), _mapy(img_size, CV_32F);
|
||||
|
||||
double a[9], d[5]={0,0,0,0,0}, R[9]={1, 0, 0, 0, 1, 0, 0, 0, 1}, a1[9];
|
||||
Mat _a(3, 3, CV_64F, a), _a1(3, 3, CV_64F, a1);
|
||||
Mat _d(_d0.rows,_d0.cols, CV_MAKETYPE(CV_64F,_d0.channels()),d);
|
||||
Mat _R(3, 3, CV_64F, R);
|
||||
double fx, fy, cx, cy, ifx, ify, cxn, cyn;
|
||||
|
||||
// Camera matrix
|
||||
CV_Assert(_a0.size() == Size(3, 3));
|
||||
_a0.convertTo(_a, CV_64F);
|
||||
if( !_new_cam0.empty() )
|
||||
{
|
||||
CV_Assert(_new_cam0.size() == Size(3, 3));
|
||||
_new_cam0.convertTo(_a1, CV_64F);
|
||||
}
|
||||
else
|
||||
{
|
||||
_a.copyTo(_a1);
|
||||
}
|
||||
|
||||
// Distortion
|
||||
CV_Assert(_d0.empty() ||
|
||||
_d0.size() == Size(5, 1) ||
|
||||
_d0.size() == Size(1, 5) ||
|
||||
_d0.size() == Size(4, 1) ||
|
||||
_d0.size() == Size(1, 4));
|
||||
if( !_d0.empty() )
|
||||
_d0.convertTo(_d, CV_64F);
|
||||
|
||||
// Rotation
|
||||
if( !_R0.empty() )
|
||||
{
|
||||
CV_Assert(_R0.size() == Size(3, 3));
|
||||
Mat tmp;
|
||||
_R0.convertTo(_R, CV_64F);
|
||||
}
|
||||
|
||||
// Copy camera matrix
|
||||
fx = a[0]; fy = a[4]; cx = a[2]; cy = a[5];
|
||||
|
||||
// Copy new camera matrix
|
||||
ifx = a1[0]; ify = a1[4]; cxn = a1[2]; cyn = a1[5];
|
||||
|
||||
// Undistort
|
||||
for( int v = 0; v < img_size.height; v++ )
|
||||
{
|
||||
for( int u = 0; u < img_size.width; u++ )
|
||||
{
|
||||
// Convert from image to pin-hole coordinates
|
||||
double x = (u - cx)/fx;
|
||||
double y = (v - cy)/fy;
|
||||
|
||||
// Undistort
|
||||
double x2 = x*x, y2 = y*y;
|
||||
double r2 = x2 + y2;
|
||||
double cdist = 1./(1 + (d[0] + (d[1] + d[4]*r2)*r2)*r2); // (1 + (d[5] + (d[6] + d[7]*r2)*r2)*r2) == 1 as d[5-7]=0;
|
||||
double x_ = x*cdist - d[2]*2*x*y + d[3]*(r2 + 2*x2);
|
||||
double y_ = y*cdist - d[3]*2*x*y + d[2]*(r2 + 2*y2);
|
||||
|
||||
// Rectify
|
||||
double X = R[0]*x_ + R[1]*y_ + R[2];
|
||||
double Y = R[3]*x_ + R[4]*y_ + R[5];
|
||||
double Z = R[6]*x_ + R[7]*y_ + R[8];
|
||||
double x__ = X/Z;
|
||||
double y__ = Y/Z;
|
||||
|
||||
// Convert from pin-hole to image coordinates
|
||||
_mapy.at<float>(v, u) = (float)(y__*ify + cyn);
|
||||
_mapx.at<float>(v, u) = (float)(x__*ifx + cxn);
|
||||
}
|
||||
}
|
||||
|
||||
// Convert
|
||||
_mapx.convertTo(test_mat[REF_OUTPUT][0], test_mat[REF_OUTPUT][0].type());
|
||||
_mapy.convertTo(test_mat[REF_OUTPUT][1], test_mat[REF_OUTPUT][0].type());
|
||||
}
|
||||
|
||||
void CV_InitInverseRectificationMapTest::run_func()
|
||||
{
|
||||
cv::Mat camera_mat = test_mat[INPUT][0];
|
||||
cv::Mat dist = zero_distortion ? cv::Mat() : test_mat[INPUT][1];
|
||||
cv::Mat R = zero_R ? cv::Mat() : test_mat[INPUT][2];
|
||||
cv::Mat new_cam = zero_new_cam ? cv::Mat() : test_mat[INPUT][3];
|
||||
cv::Mat& mapx = test_mat[OUTPUT][0], &mapy = test_mat[OUTPUT][1];
|
||||
cv::initInverseRectificationMap(camera_mat,dist,R,new_cam,img_size,map_type,mapx,mapy);
|
||||
}
|
||||
|
||||
double CV_InitInverseRectificationMapTest::get_success_error_level( int /*test_case_idx*/, int /*i*/, int /*j*/ )
|
||||
{
|
||||
return 8;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
TEST(Calib3d_DefaultNewCameraMatrix, accuracy) { CV_DefaultNewCameraMatrixTest test; test.safe_run(); }
|
||||
TEST(Calib3d_UndistortPoints, accuracy) { CV_UndistortPointsTest test; test.safe_run(); }
|
||||
TEST(Calib3d_InitUndistortRectifyMap, accuracy) { CV_InitUndistortRectifyMapTest test; test.safe_run(); }
|
||||
TEST(DISABLED_Calib3d_InitInverseRectificationMap, accuracy) { CV_InitInverseRectificationMapTest test; test.safe_run(); }
|
||||
|
||||
////////////////////////////// undistort /////////////////////////////////
|
||||
|
||||
|
||||
@@ -462,7 +462,7 @@ enum RobotWorldHandEyeCalibrationMethod
|
||||
|
||||
@param objectPoints Vector of vectors of the calibration pattern points in the calibration pattern
|
||||
coordinate space. In the old interface all the per-view vectors are concatenated. See
|
||||
calibrateCamera for details.
|
||||
#calibrateCamera for details.
|
||||
@param imagePoints Vector of vectors of the projections of the calibration pattern points. In the
|
||||
old interface all the per-view vectors are concatenated.
|
||||
@param imageSize Image size in pixels used to initialize the principal point.
|
||||
@@ -556,7 +556,7 @@ Each entry stands for one corner of the pattern and can have one of the followin
|
||||
- 3 = left-top corner of a black cell with a white marker dot
|
||||
- 4 = left-top corner of a white cell with a black marker dot (pattern origin in case of markers otherwise first corner)
|
||||
|
||||
The function is analog to findchessboardCorners but uses a localized radon
|
||||
The function is analog to #findChessboardCorners but uses a localized radon
|
||||
transformation approximated by box filters being more robust to all sort of
|
||||
noise, faster on larger images and is able to directly return the sub-pixel
|
||||
position of the internal chessboard corners. The Method is based on the paper
|
||||
@@ -606,7 +606,7 @@ and should be below ~3.0 pixels.
|
||||
|
||||
@param image Gray image used to find chessboard corners
|
||||
@param patternSize Size of a found chessboard pattern
|
||||
@param corners Corners found by findChessboardCorners(SB)
|
||||
@param corners Corners found by #findChessboardCornersSB
|
||||
@param rise_distance Rise distance 0.8 means 10% ... 90% of the final signal strength
|
||||
@param vertical By default edge responses for horizontal lines are calculated
|
||||
@param sharpness Optional output array with a sharpness value for calculated edge responses (see description)
|
||||
@@ -634,9 +634,9 @@ CV_EXPORTS_W bool find4QuadCornerSubpix( InputArray img, InputOutputArray corner
|
||||
@param image Destination image. It must be an 8-bit color image.
|
||||
@param patternSize Number of inner corners per a chessboard row and column
|
||||
(patternSize = cv::Size(points_per_row,points_per_column)).
|
||||
@param corners Array of detected corners, the output of findChessboardCorners.
|
||||
@param corners Array of detected corners, the output of #findChessboardCorners.
|
||||
@param patternWasFound Parameter indicating whether the complete board was found or not. The
|
||||
return value of findChessboardCorners should be passed here.
|
||||
return value of #findChessboardCorners should be passed here.
|
||||
|
||||
The function draws individual chessboard corners detected either as red circles if the board was not
|
||||
found, or as colored corners connected with lines if the board was found.
|
||||
@@ -854,21 +854,21 @@ CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints,
|
||||
|
||||
/** @brief Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern.
|
||||
|
||||
This function is an extension of calibrateCamera() with the method of releasing object which was
|
||||
This function is an extension of #calibrateCamera with the method of releasing object which was
|
||||
proposed in @cite strobl2011iccv. In many common cases with inaccurate, unmeasured, roughly planar
|
||||
targets (calibration plates), this method can dramatically improve the precision of the estimated
|
||||
camera parameters. Both the object-releasing method and standard method are supported by this
|
||||
function. Use the parameter **iFixedPoint** for method selection. In the internal implementation,
|
||||
calibrateCamera() is a wrapper for this function.
|
||||
#calibrateCamera is a wrapper for this function.
|
||||
|
||||
@param objectPoints Vector of vectors of calibration pattern points in the calibration pattern
|
||||
coordinate space. See calibrateCamera() for details. If the method of releasing object to be used,
|
||||
coordinate space. See #calibrateCamera for details. If the method of releasing object to be used,
|
||||
the identical calibration board must be used in each view and it must be fully visible, and all
|
||||
objectPoints[i] must be the same and all points should be roughly close to a plane. **The calibration
|
||||
target has to be rigid, or at least static if the camera (rather than the calibration target) is
|
||||
shifted for grabbing images.**
|
||||
@param imagePoints Vector of vectors of the projections of calibration pattern points. See
|
||||
calibrateCamera() for details.
|
||||
#calibrateCamera for details.
|
||||
@param imageSize Size of the image used only to initialize the intrinsic camera matrix.
|
||||
@param iFixedPoint The index of the 3D object point in objectPoints[0] to be fixed. It also acts as
|
||||
a switch for calibration method selection. If object-releasing method to be used, pass in the
|
||||
@@ -878,9 +878,9 @@ board grid is recommended to be fixed when object-releasing method being utilize
|
||||
\cite strobl2011iccv, two other points are also fixed. In this implementation, objectPoints[0].front
|
||||
and objectPoints[0].back.z are used. With object-releasing method, accurate rvecs, tvecs and
|
||||
newObjPoints are only possible if coordinates of these three fixed points are accurate enough.
|
||||
@param cameraMatrix Output 3x3 floating-point camera matrix. See calibrateCamera() for details.
|
||||
@param distCoeffs Output vector of distortion coefficients. See calibrateCamera() for details.
|
||||
@param rvecs Output vector of rotation vectors estimated for each pattern view. See calibrateCamera()
|
||||
@param cameraMatrix Output 3x3 floating-point camera matrix. See #calibrateCamera for details.
|
||||
@param distCoeffs Output vector of distortion coefficients. See #calibrateCamera for details.
|
||||
@param rvecs Output vector of rotation vectors estimated for each pattern view. See #calibrateCamera
|
||||
for details.
|
||||
@param tvecs Output vector of translation vectors estimated for each pattern view.
|
||||
@param newObjPoints The updated output vector of calibration pattern points. The coordinates might
|
||||
@@ -888,15 +888,15 @@ be scaled based on three fixed points. The returned coordinates are accurate onl
|
||||
mentioned three fixed points are accurate. If not needed, noArray() can be passed in. This parameter
|
||||
is ignored with standard calibration method.
|
||||
@param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
|
||||
See calibrateCamera() for details.
|
||||
See #calibrateCamera for details.
|
||||
@param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
|
||||
See calibrateCamera() for details.
|
||||
See #calibrateCamera for details.
|
||||
@param stdDeviationsObjPoints Output vector of standard deviations estimated for refined coordinates
|
||||
of calibration pattern points. It has the same size and order as objectPoints[0] vector. This
|
||||
parameter is ignored with standard calibration method.
|
||||
@param perViewErrors Output vector of the RMS re-projection error estimated for each pattern view.
|
||||
@param flags Different flags that may be zero or a combination of some predefined values. See
|
||||
calibrateCamera() for details. If the method of releasing object is used, the calibration time may
|
||||
#calibrateCamera for details. If the method of releasing object is used, the calibration time may
|
||||
be much longer. CALIB_USE_QR or CALIB_USE_LU could be used for faster calibration with potentially
|
||||
less precise and less stable in some rare cases.
|
||||
@param criteria Termination criteria for the iterative optimization algorithm.
|
||||
@@ -905,7 +905,7 @@ less precise and less stable in some rare cases.
|
||||
|
||||
The function estimates the intrinsic camera parameters and extrinsic parameters for each of the
|
||||
views. The algorithm is based on @cite Zhang2000, @cite BouguetMCT and @cite strobl2011iccv. See
|
||||
calibrateCamera() for other detailed explanations.
|
||||
#calibrateCamera for other detailed explanations.
|
||||
@sa
|
||||
calibrateCamera, findChessboardCorners, solvePnP, initCameraMatrix2D, stereoCalibrate, undistort
|
||||
*/
|
||||
@@ -932,8 +932,8 @@ CV_EXPORTS_W double calibrateCameraRO( InputArrayOfArrays objectPoints,
|
||||
|
||||
/** @brief Computes useful camera characteristics from the camera intrinsic matrix.
|
||||
|
||||
@param cameraMatrix Input camera intrinsic matrix that can be estimated by calibrateCamera or
|
||||
stereoCalibrate .
|
||||
@param cameraMatrix Input camera intrinsic matrix that can be estimated by #calibrateCamera or
|
||||
#stereoCalibrate .
|
||||
@param imageSize Input image size in pixels.
|
||||
@param apertureWidth Physical width in mm of the sensor.
|
||||
@param apertureHeight Physical height in mm of the sensor.
|
||||
@@ -1068,13 +1068,13 @@ Besides the stereo-related information, the function can also perform a full cal
|
||||
the two cameras. However, due to the high dimensionality of the parameter space and noise in the
|
||||
input data, the function can diverge from the correct solution. If the intrinsic parameters can be
|
||||
estimated with high accuracy for each of the cameras individually (for example, using
|
||||
calibrateCamera ), you are recommended to do so and then pass @ref CALIB_FIX_INTRINSIC flag to the
|
||||
#calibrateCamera ), you are recommended to do so and then pass @ref CALIB_FIX_INTRINSIC flag to the
|
||||
function along with the computed intrinsic parameters. Otherwise, if all the parameters are
|
||||
estimated at once, it makes sense to restrict some parameters, for example, pass
|
||||
@ref CALIB_SAME_FOCAL_LENGTH and @ref CALIB_ZERO_TANGENT_DIST flags, which is usually a
|
||||
reasonable assumption.
|
||||
|
||||
Similarly to calibrateCamera, the function minimizes the total re-projection error for all the
|
||||
Similarly to #calibrateCamera, the function minimizes the total re-projection error for all the
|
||||
points in all the available views from both cameras. The function returns the final value of the
|
||||
re-projection error.
|
||||
*/
|
||||
|
||||
@@ -2577,27 +2577,38 @@ public:
|
||||
- number of channels
|
||||
*/
|
||||
int flags;
|
||||
|
||||
//! the matrix dimensionality, >= 2
|
||||
int dims;
|
||||
//! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
|
||||
int rows, cols;
|
||||
|
||||
//! number of rows in the matrix; -1 when the matrix has more than 2 dimensions
|
||||
int rows;
|
||||
|
||||
//! number of columns in the matrix; -1 when the matrix has more than 2 dimensions
|
||||
int cols;
|
||||
|
||||
//! custom allocator
|
||||
MatAllocator* allocator;
|
||||
UMatUsageFlags usageFlags; // usage flags for allocator
|
||||
|
||||
//! usage flags for allocator; recommend do not set directly, instead set during construct/create/getUMat
|
||||
UMatUsageFlags usageFlags;
|
||||
|
||||
//! and the standard allocator
|
||||
static MatAllocator* getStdAllocator();
|
||||
|
||||
//! internal use method: updates the continuity flag
|
||||
void updateContinuityFlag();
|
||||
|
||||
// black-box container of UMat data
|
||||
//! black-box container of UMat data
|
||||
UMatData* u;
|
||||
|
||||
// offset of the submatrix (or 0)
|
||||
//! offset of the submatrix (or 0)
|
||||
size_t offset;
|
||||
|
||||
//! dimensional size of the matrix; accessible in various formats
|
||||
MatSize size;
|
||||
|
||||
//! number of bytes each matrix element/row/plane/dimension occupies
|
||||
MatStep step;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -1,714 +0,0 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDBLAS_HPP
|
||||
#error "Invalid usage"
|
||||
#endif
|
||||
|
||||
// generated by parser_clamdblas.py
|
||||
#define clAmdBlasAddScratchImage clAmdBlasAddScratchImage_
|
||||
#define clAmdBlasCaxpy clAmdBlasCaxpy_
|
||||
#define clAmdBlasCcopy clAmdBlasCcopy_
|
||||
#define clAmdBlasCdotc clAmdBlasCdotc_
|
||||
#define clAmdBlasCdotu clAmdBlasCdotu_
|
||||
#define clAmdBlasCgbmv clAmdBlasCgbmv_
|
||||
#define clAmdBlasCgemm clAmdBlasCgemm_
|
||||
#define clAmdBlasCgemmEx clAmdBlasCgemmEx_
|
||||
#define clAmdBlasCgemv clAmdBlasCgemv_
|
||||
#define clAmdBlasCgemvEx clAmdBlasCgemvEx_
|
||||
#define clAmdBlasCgerc clAmdBlasCgerc_
|
||||
#define clAmdBlasCgeru clAmdBlasCgeru_
|
||||
#define clAmdBlasChbmv clAmdBlasChbmv_
|
||||
#define clAmdBlasChemm clAmdBlasChemm_
|
||||
#define clAmdBlasChemv clAmdBlasChemv_
|
||||
#define clAmdBlasCher clAmdBlasCher_
|
||||
#define clAmdBlasCher2 clAmdBlasCher2_
|
||||
#define clAmdBlasCher2k clAmdBlasCher2k_
|
||||
#define clAmdBlasCherk clAmdBlasCherk_
|
||||
#define clAmdBlasChpmv clAmdBlasChpmv_
|
||||
#define clAmdBlasChpr clAmdBlasChpr_
|
||||
#define clAmdBlasChpr2 clAmdBlasChpr2_
|
||||
#define clAmdBlasCrotg clAmdBlasCrotg_
|
||||
#define clAmdBlasCscal clAmdBlasCscal_
|
||||
#define clAmdBlasCsrot clAmdBlasCsrot_
|
||||
#define clAmdBlasCsscal clAmdBlasCsscal_
|
||||
#define clAmdBlasCswap clAmdBlasCswap_
|
||||
#define clAmdBlasCsymm clAmdBlasCsymm_
|
||||
#define clAmdBlasCsyr2k clAmdBlasCsyr2k_
|
||||
#define clAmdBlasCsyr2kEx clAmdBlasCsyr2kEx_
|
||||
#define clAmdBlasCsyrk clAmdBlasCsyrk_
|
||||
#define clAmdBlasCsyrkEx clAmdBlasCsyrkEx_
|
||||
#define clAmdBlasCtbmv clAmdBlasCtbmv_
|
||||
#define clAmdBlasCtbsv clAmdBlasCtbsv_
|
||||
#define clAmdBlasCtpmv clAmdBlasCtpmv_
|
||||
#define clAmdBlasCtpsv clAmdBlasCtpsv_
|
||||
#define clAmdBlasCtrmm clAmdBlasCtrmm_
|
||||
#define clAmdBlasCtrmmEx clAmdBlasCtrmmEx_
|
||||
#define clAmdBlasCtrmv clAmdBlasCtrmv_
|
||||
#define clAmdBlasCtrsm clAmdBlasCtrsm_
|
||||
#define clAmdBlasCtrsmEx clAmdBlasCtrsmEx_
|
||||
#define clAmdBlasCtrsv clAmdBlasCtrsv_
|
||||
#define clAmdBlasDasum clAmdBlasDasum_
|
||||
#define clAmdBlasDaxpy clAmdBlasDaxpy_
|
||||
#define clAmdBlasDcopy clAmdBlasDcopy_
|
||||
#define clAmdBlasDdot clAmdBlasDdot_
|
||||
#define clAmdBlasDgbmv clAmdBlasDgbmv_
|
||||
#define clAmdBlasDgemm clAmdBlasDgemm_
|
||||
#define clAmdBlasDgemmEx clAmdBlasDgemmEx_
|
||||
#define clAmdBlasDgemv clAmdBlasDgemv_
|
||||
#define clAmdBlasDgemvEx clAmdBlasDgemvEx_
|
||||
#define clAmdBlasDger clAmdBlasDger_
|
||||
#define clAmdBlasDnrm2 clAmdBlasDnrm2_
|
||||
#define clAmdBlasDrot clAmdBlasDrot_
|
||||
#define clAmdBlasDrotg clAmdBlasDrotg_
|
||||
#define clAmdBlasDrotm clAmdBlasDrotm_
|
||||
#define clAmdBlasDrotmg clAmdBlasDrotmg_
|
||||
#define clAmdBlasDsbmv clAmdBlasDsbmv_
|
||||
#define clAmdBlasDscal clAmdBlasDscal_
|
||||
#define clAmdBlasDspmv clAmdBlasDspmv_
|
||||
#define clAmdBlasDspr clAmdBlasDspr_
|
||||
#define clAmdBlasDspr2 clAmdBlasDspr2_
|
||||
#define clAmdBlasDswap clAmdBlasDswap_
|
||||
#define clAmdBlasDsymm clAmdBlasDsymm_
|
||||
#define clAmdBlasDsymv clAmdBlasDsymv_
|
||||
#define clAmdBlasDsymvEx clAmdBlasDsymvEx_
|
||||
#define clAmdBlasDsyr clAmdBlasDsyr_
|
||||
#define clAmdBlasDsyr2 clAmdBlasDsyr2_
|
||||
#define clAmdBlasDsyr2k clAmdBlasDsyr2k_
|
||||
#define clAmdBlasDsyr2kEx clAmdBlasDsyr2kEx_
|
||||
#define clAmdBlasDsyrk clAmdBlasDsyrk_
|
||||
#define clAmdBlasDsyrkEx clAmdBlasDsyrkEx_
|
||||
#define clAmdBlasDtbmv clAmdBlasDtbmv_
|
||||
#define clAmdBlasDtbsv clAmdBlasDtbsv_
|
||||
#define clAmdBlasDtpmv clAmdBlasDtpmv_
|
||||
#define clAmdBlasDtpsv clAmdBlasDtpsv_
|
||||
#define clAmdBlasDtrmm clAmdBlasDtrmm_
|
||||
#define clAmdBlasDtrmmEx clAmdBlasDtrmmEx_
|
||||
#define clAmdBlasDtrmv clAmdBlasDtrmv_
|
||||
#define clAmdBlasDtrsm clAmdBlasDtrsm_
|
||||
#define clAmdBlasDtrsmEx clAmdBlasDtrsmEx_
|
||||
#define clAmdBlasDtrsv clAmdBlasDtrsv_
|
||||
#define clAmdBlasDzasum clAmdBlasDzasum_
|
||||
#define clAmdBlasDznrm2 clAmdBlasDznrm2_
|
||||
#define clAmdBlasGetVersion clAmdBlasGetVersion_
|
||||
#define clAmdBlasRemoveScratchImage clAmdBlasRemoveScratchImage_
|
||||
#define clAmdBlasSasum clAmdBlasSasum_
|
||||
#define clAmdBlasSaxpy clAmdBlasSaxpy_
|
||||
#define clAmdBlasScasum clAmdBlasScasum_
|
||||
#define clAmdBlasScnrm2 clAmdBlasScnrm2_
|
||||
#define clAmdBlasScopy clAmdBlasScopy_
|
||||
#define clAmdBlasSdot clAmdBlasSdot_
|
||||
#define clAmdBlasSetup clAmdBlasSetup_
|
||||
#define clAmdBlasSgbmv clAmdBlasSgbmv_
|
||||
#define clAmdBlasSgemm clAmdBlasSgemm_
|
||||
#define clAmdBlasSgemmEx clAmdBlasSgemmEx_
|
||||
#define clAmdBlasSgemv clAmdBlasSgemv_
|
||||
#define clAmdBlasSgemvEx clAmdBlasSgemvEx_
|
||||
#define clAmdBlasSger clAmdBlasSger_
|
||||
#define clAmdBlasSnrm2 clAmdBlasSnrm2_
|
||||
#define clAmdBlasSrot clAmdBlasSrot_
|
||||
#define clAmdBlasSrotg clAmdBlasSrotg_
|
||||
#define clAmdBlasSrotm clAmdBlasSrotm_
|
||||
#define clAmdBlasSrotmg clAmdBlasSrotmg_
|
||||
#define clAmdBlasSsbmv clAmdBlasSsbmv_
|
||||
#define clAmdBlasSscal clAmdBlasSscal_
|
||||
#define clAmdBlasSspmv clAmdBlasSspmv_
|
||||
#define clAmdBlasSspr clAmdBlasSspr_
|
||||
#define clAmdBlasSspr2 clAmdBlasSspr2_
|
||||
#define clAmdBlasSswap clAmdBlasSswap_
|
||||
#define clAmdBlasSsymm clAmdBlasSsymm_
|
||||
#define clAmdBlasSsymv clAmdBlasSsymv_
|
||||
#define clAmdBlasSsymvEx clAmdBlasSsymvEx_
|
||||
#define clAmdBlasSsyr clAmdBlasSsyr_
|
||||
#define clAmdBlasSsyr2 clAmdBlasSsyr2_
|
||||
#define clAmdBlasSsyr2k clAmdBlasSsyr2k_
|
||||
#define clAmdBlasSsyr2kEx clAmdBlasSsyr2kEx_
|
||||
#define clAmdBlasSsyrk clAmdBlasSsyrk_
|
||||
#define clAmdBlasSsyrkEx clAmdBlasSsyrkEx_
|
||||
#define clAmdBlasStbmv clAmdBlasStbmv_
|
||||
#define clAmdBlasStbsv clAmdBlasStbsv_
|
||||
#define clAmdBlasStpmv clAmdBlasStpmv_
|
||||
#define clAmdBlasStpsv clAmdBlasStpsv_
|
||||
#define clAmdBlasStrmm clAmdBlasStrmm_
|
||||
#define clAmdBlasStrmmEx clAmdBlasStrmmEx_
|
||||
#define clAmdBlasStrmv clAmdBlasStrmv_
|
||||
#define clAmdBlasStrsm clAmdBlasStrsm_
|
||||
#define clAmdBlasStrsmEx clAmdBlasStrsmEx_
|
||||
#define clAmdBlasStrsv clAmdBlasStrsv_
|
||||
#define clAmdBlasTeardown clAmdBlasTeardown_
|
||||
#define clAmdBlasZaxpy clAmdBlasZaxpy_
|
||||
#define clAmdBlasZcopy clAmdBlasZcopy_
|
||||
#define clAmdBlasZdotc clAmdBlasZdotc_
|
||||
#define clAmdBlasZdotu clAmdBlasZdotu_
|
||||
#define clAmdBlasZdrot clAmdBlasZdrot_
|
||||
#define clAmdBlasZdscal clAmdBlasZdscal_
|
||||
#define clAmdBlasZgbmv clAmdBlasZgbmv_
|
||||
#define clAmdBlasZgemm clAmdBlasZgemm_
|
||||
#define clAmdBlasZgemmEx clAmdBlasZgemmEx_
|
||||
#define clAmdBlasZgemv clAmdBlasZgemv_
|
||||
#define clAmdBlasZgemvEx clAmdBlasZgemvEx_
|
||||
#define clAmdBlasZgerc clAmdBlasZgerc_
|
||||
#define clAmdBlasZgeru clAmdBlasZgeru_
|
||||
#define clAmdBlasZhbmv clAmdBlasZhbmv_
|
||||
#define clAmdBlasZhemm clAmdBlasZhemm_
|
||||
#define clAmdBlasZhemv clAmdBlasZhemv_
|
||||
#define clAmdBlasZher clAmdBlasZher_
|
||||
#define clAmdBlasZher2 clAmdBlasZher2_
|
||||
#define clAmdBlasZher2k clAmdBlasZher2k_
|
||||
#define clAmdBlasZherk clAmdBlasZherk_
|
||||
#define clAmdBlasZhpmv clAmdBlasZhpmv_
|
||||
#define clAmdBlasZhpr clAmdBlasZhpr_
|
||||
#define clAmdBlasZhpr2 clAmdBlasZhpr2_
|
||||
#define clAmdBlasZrotg clAmdBlasZrotg_
|
||||
#define clAmdBlasZscal clAmdBlasZscal_
|
||||
#define clAmdBlasZswap clAmdBlasZswap_
|
||||
#define clAmdBlasZsymm clAmdBlasZsymm_
|
||||
#define clAmdBlasZsyr2k clAmdBlasZsyr2k_
|
||||
#define clAmdBlasZsyr2kEx clAmdBlasZsyr2kEx_
|
||||
#define clAmdBlasZsyrk clAmdBlasZsyrk_
|
||||
#define clAmdBlasZsyrkEx clAmdBlasZsyrkEx_
|
||||
#define clAmdBlasZtbmv clAmdBlasZtbmv_
|
||||
#define clAmdBlasZtbsv clAmdBlasZtbsv_
|
||||
#define clAmdBlasZtpmv clAmdBlasZtpmv_
|
||||
#define clAmdBlasZtpsv clAmdBlasZtpsv_
|
||||
#define clAmdBlasZtrmm clAmdBlasZtrmm_
|
||||
#define clAmdBlasZtrmmEx clAmdBlasZtrmmEx_
|
||||
#define clAmdBlasZtrmv clAmdBlasZtrmv_
|
||||
#define clAmdBlasZtrsm clAmdBlasZtrsm_
|
||||
#define clAmdBlasZtrsmEx clAmdBlasZtrsmEx_
|
||||
#define clAmdBlasZtrsv clAmdBlasZtrsv_
|
||||
#define clAmdBlasiCamax clAmdBlasiCamax_
|
||||
#define clAmdBlasiDamax clAmdBlasiDamax_
|
||||
#define clAmdBlasiSamax clAmdBlasiSamax_
|
||||
#define clAmdBlasiZamax clAmdBlasiZamax_
|
||||
|
||||
#include <clAmdBlas.h>
|
||||
|
||||
// generated by parser_clamdblas.py
|
||||
#undef clAmdBlasAddScratchImage
|
||||
//#define clAmdBlasAddScratchImage clAmdBlasAddScratchImage_pfn
|
||||
#undef clAmdBlasCaxpy
|
||||
//#define clAmdBlasCaxpy clAmdBlasCaxpy_pfn
|
||||
#undef clAmdBlasCcopy
|
||||
//#define clAmdBlasCcopy clAmdBlasCcopy_pfn
|
||||
#undef clAmdBlasCdotc
|
||||
//#define clAmdBlasCdotc clAmdBlasCdotc_pfn
|
||||
#undef clAmdBlasCdotu
|
||||
//#define clAmdBlasCdotu clAmdBlasCdotu_pfn
|
||||
#undef clAmdBlasCgbmv
|
||||
//#define clAmdBlasCgbmv clAmdBlasCgbmv_pfn
|
||||
#undef clAmdBlasCgemm
|
||||
//#define clAmdBlasCgemm clAmdBlasCgemm_pfn
|
||||
#undef clAmdBlasCgemmEx
|
||||
#define clAmdBlasCgemmEx clAmdBlasCgemmEx_pfn
|
||||
#undef clAmdBlasCgemv
|
||||
//#define clAmdBlasCgemv clAmdBlasCgemv_pfn
|
||||
#undef clAmdBlasCgemvEx
|
||||
//#define clAmdBlasCgemvEx clAmdBlasCgemvEx_pfn
|
||||
#undef clAmdBlasCgerc
|
||||
//#define clAmdBlasCgerc clAmdBlasCgerc_pfn
|
||||
#undef clAmdBlasCgeru
|
||||
//#define clAmdBlasCgeru clAmdBlasCgeru_pfn
|
||||
#undef clAmdBlasChbmv
|
||||
//#define clAmdBlasChbmv clAmdBlasChbmv_pfn
|
||||
#undef clAmdBlasChemm
|
||||
//#define clAmdBlasChemm clAmdBlasChemm_pfn
|
||||
#undef clAmdBlasChemv
|
||||
//#define clAmdBlasChemv clAmdBlasChemv_pfn
|
||||
#undef clAmdBlasCher
|
||||
//#define clAmdBlasCher clAmdBlasCher_pfn
|
||||
#undef clAmdBlasCher2
|
||||
//#define clAmdBlasCher2 clAmdBlasCher2_pfn
|
||||
#undef clAmdBlasCher2k
|
||||
//#define clAmdBlasCher2k clAmdBlasCher2k_pfn
|
||||
#undef clAmdBlasCherk
|
||||
//#define clAmdBlasCherk clAmdBlasCherk_pfn
|
||||
#undef clAmdBlasChpmv
|
||||
//#define clAmdBlasChpmv clAmdBlasChpmv_pfn
|
||||
#undef clAmdBlasChpr
|
||||
//#define clAmdBlasChpr clAmdBlasChpr_pfn
|
||||
#undef clAmdBlasChpr2
|
||||
//#define clAmdBlasChpr2 clAmdBlasChpr2_pfn
|
||||
#undef clAmdBlasCrotg
|
||||
//#define clAmdBlasCrotg clAmdBlasCrotg_pfn
|
||||
#undef clAmdBlasCscal
|
||||
//#define clAmdBlasCscal clAmdBlasCscal_pfn
|
||||
#undef clAmdBlasCsrot
|
||||
//#define clAmdBlasCsrot clAmdBlasCsrot_pfn
|
||||
#undef clAmdBlasCsscal
|
||||
//#define clAmdBlasCsscal clAmdBlasCsscal_pfn
|
||||
#undef clAmdBlasCswap
|
||||
//#define clAmdBlasCswap clAmdBlasCswap_pfn
|
||||
#undef clAmdBlasCsymm
|
||||
//#define clAmdBlasCsymm clAmdBlasCsymm_pfn
|
||||
#undef clAmdBlasCsyr2k
|
||||
//#define clAmdBlasCsyr2k clAmdBlasCsyr2k_pfn
|
||||
#undef clAmdBlasCsyr2kEx
|
||||
//#define clAmdBlasCsyr2kEx clAmdBlasCsyr2kEx_pfn
|
||||
#undef clAmdBlasCsyrk
|
||||
//#define clAmdBlasCsyrk clAmdBlasCsyrk_pfn
|
||||
#undef clAmdBlasCsyrkEx
|
||||
//#define clAmdBlasCsyrkEx clAmdBlasCsyrkEx_pfn
|
||||
#undef clAmdBlasCtbmv
|
||||
//#define clAmdBlasCtbmv clAmdBlasCtbmv_pfn
|
||||
#undef clAmdBlasCtbsv
|
||||
//#define clAmdBlasCtbsv clAmdBlasCtbsv_pfn
|
||||
#undef clAmdBlasCtpmv
|
||||
//#define clAmdBlasCtpmv clAmdBlasCtpmv_pfn
|
||||
#undef clAmdBlasCtpsv
|
||||
//#define clAmdBlasCtpsv clAmdBlasCtpsv_pfn
|
||||
#undef clAmdBlasCtrmm
|
||||
//#define clAmdBlasCtrmm clAmdBlasCtrmm_pfn
|
||||
#undef clAmdBlasCtrmmEx
|
||||
//#define clAmdBlasCtrmmEx clAmdBlasCtrmmEx_pfn
|
||||
#undef clAmdBlasCtrmv
|
||||
//#define clAmdBlasCtrmv clAmdBlasCtrmv_pfn
|
||||
#undef clAmdBlasCtrsm
|
||||
//#define clAmdBlasCtrsm clAmdBlasCtrsm_pfn
|
||||
#undef clAmdBlasCtrsmEx
|
||||
//#define clAmdBlasCtrsmEx clAmdBlasCtrsmEx_pfn
|
||||
#undef clAmdBlasCtrsv
|
||||
//#define clAmdBlasCtrsv clAmdBlasCtrsv_pfn
|
||||
#undef clAmdBlasDasum
|
||||
//#define clAmdBlasDasum clAmdBlasDasum_pfn
|
||||
#undef clAmdBlasDaxpy
|
||||
//#define clAmdBlasDaxpy clAmdBlasDaxpy_pfn
|
||||
#undef clAmdBlasDcopy
|
||||
//#define clAmdBlasDcopy clAmdBlasDcopy_pfn
|
||||
#undef clAmdBlasDdot
|
||||
//#define clAmdBlasDdot clAmdBlasDdot_pfn
|
||||
#undef clAmdBlasDgbmv
|
||||
//#define clAmdBlasDgbmv clAmdBlasDgbmv_pfn
|
||||
#undef clAmdBlasDgemm
|
||||
//#define clAmdBlasDgemm clAmdBlasDgemm_pfn
|
||||
#undef clAmdBlasDgemmEx
|
||||
#define clAmdBlasDgemmEx clAmdBlasDgemmEx_pfn
|
||||
#undef clAmdBlasDgemv
|
||||
//#define clAmdBlasDgemv clAmdBlasDgemv_pfn
|
||||
#undef clAmdBlasDgemvEx
|
||||
//#define clAmdBlasDgemvEx clAmdBlasDgemvEx_pfn
|
||||
#undef clAmdBlasDger
|
||||
//#define clAmdBlasDger clAmdBlasDger_pfn
|
||||
#undef clAmdBlasDnrm2
|
||||
//#define clAmdBlasDnrm2 clAmdBlasDnrm2_pfn
|
||||
#undef clAmdBlasDrot
|
||||
//#define clAmdBlasDrot clAmdBlasDrot_pfn
|
||||
#undef clAmdBlasDrotg
|
||||
//#define clAmdBlasDrotg clAmdBlasDrotg_pfn
|
||||
#undef clAmdBlasDrotm
|
||||
//#define clAmdBlasDrotm clAmdBlasDrotm_pfn
|
||||
#undef clAmdBlasDrotmg
|
||||
//#define clAmdBlasDrotmg clAmdBlasDrotmg_pfn
|
||||
#undef clAmdBlasDsbmv
|
||||
//#define clAmdBlasDsbmv clAmdBlasDsbmv_pfn
|
||||
#undef clAmdBlasDscal
|
||||
//#define clAmdBlasDscal clAmdBlasDscal_pfn
|
||||
#undef clAmdBlasDspmv
|
||||
//#define clAmdBlasDspmv clAmdBlasDspmv_pfn
|
||||
#undef clAmdBlasDspr
|
||||
//#define clAmdBlasDspr clAmdBlasDspr_pfn
|
||||
#undef clAmdBlasDspr2
|
||||
//#define clAmdBlasDspr2 clAmdBlasDspr2_pfn
|
||||
#undef clAmdBlasDswap
|
||||
//#define clAmdBlasDswap clAmdBlasDswap_pfn
|
||||
#undef clAmdBlasDsymm
|
||||
//#define clAmdBlasDsymm clAmdBlasDsymm_pfn
|
||||
#undef clAmdBlasDsymv
|
||||
//#define clAmdBlasDsymv clAmdBlasDsymv_pfn
|
||||
#undef clAmdBlasDsymvEx
|
||||
//#define clAmdBlasDsymvEx clAmdBlasDsymvEx_pfn
|
||||
#undef clAmdBlasDsyr
|
||||
//#define clAmdBlasDsyr clAmdBlasDsyr_pfn
|
||||
#undef clAmdBlasDsyr2
|
||||
//#define clAmdBlasDsyr2 clAmdBlasDsyr2_pfn
|
||||
#undef clAmdBlasDsyr2k
|
||||
//#define clAmdBlasDsyr2k clAmdBlasDsyr2k_pfn
|
||||
#undef clAmdBlasDsyr2kEx
|
||||
//#define clAmdBlasDsyr2kEx clAmdBlasDsyr2kEx_pfn
|
||||
#undef clAmdBlasDsyrk
|
||||
//#define clAmdBlasDsyrk clAmdBlasDsyrk_pfn
|
||||
#undef clAmdBlasDsyrkEx
|
||||
//#define clAmdBlasDsyrkEx clAmdBlasDsyrkEx_pfn
|
||||
#undef clAmdBlasDtbmv
|
||||
//#define clAmdBlasDtbmv clAmdBlasDtbmv_pfn
|
||||
#undef clAmdBlasDtbsv
|
||||
//#define clAmdBlasDtbsv clAmdBlasDtbsv_pfn
|
||||
#undef clAmdBlasDtpmv
|
||||
//#define clAmdBlasDtpmv clAmdBlasDtpmv_pfn
|
||||
#undef clAmdBlasDtpsv
|
||||
//#define clAmdBlasDtpsv clAmdBlasDtpsv_pfn
|
||||
#undef clAmdBlasDtrmm
|
||||
//#define clAmdBlasDtrmm clAmdBlasDtrmm_pfn
|
||||
#undef clAmdBlasDtrmmEx
|
||||
//#define clAmdBlasDtrmmEx clAmdBlasDtrmmEx_pfn
|
||||
#undef clAmdBlasDtrmv
|
||||
//#define clAmdBlasDtrmv clAmdBlasDtrmv_pfn
|
||||
#undef clAmdBlasDtrsm
|
||||
//#define clAmdBlasDtrsm clAmdBlasDtrsm_pfn
|
||||
#undef clAmdBlasDtrsmEx
|
||||
//#define clAmdBlasDtrsmEx clAmdBlasDtrsmEx_pfn
|
||||
#undef clAmdBlasDtrsv
|
||||
//#define clAmdBlasDtrsv clAmdBlasDtrsv_pfn
|
||||
#undef clAmdBlasDzasum
|
||||
//#define clAmdBlasDzasum clAmdBlasDzasum_pfn
|
||||
#undef clAmdBlasDznrm2
|
||||
//#define clAmdBlasDznrm2 clAmdBlasDznrm2_pfn
|
||||
#undef clAmdBlasGetVersion
|
||||
//#define clAmdBlasGetVersion clAmdBlasGetVersion_pfn
|
||||
#undef clAmdBlasRemoveScratchImage
|
||||
//#define clAmdBlasRemoveScratchImage clAmdBlasRemoveScratchImage_pfn
|
||||
#undef clAmdBlasSasum
|
||||
//#define clAmdBlasSasum clAmdBlasSasum_pfn
|
||||
#undef clAmdBlasSaxpy
|
||||
//#define clAmdBlasSaxpy clAmdBlasSaxpy_pfn
|
||||
#undef clAmdBlasScasum
|
||||
//#define clAmdBlasScasum clAmdBlasScasum_pfn
|
||||
#undef clAmdBlasScnrm2
|
||||
//#define clAmdBlasScnrm2 clAmdBlasScnrm2_pfn
|
||||
#undef clAmdBlasScopy
|
||||
//#define clAmdBlasScopy clAmdBlasScopy_pfn
|
||||
#undef clAmdBlasSdot
|
||||
//#define clAmdBlasSdot clAmdBlasSdot_pfn
|
||||
#undef clAmdBlasSetup
|
||||
#define clAmdBlasSetup clAmdBlasSetup_pfn
|
||||
#undef clAmdBlasSgbmv
|
||||
//#define clAmdBlasSgbmv clAmdBlasSgbmv_pfn
|
||||
#undef clAmdBlasSgemm
|
||||
//#define clAmdBlasSgemm clAmdBlasSgemm_pfn
|
||||
#undef clAmdBlasSgemmEx
|
||||
#define clAmdBlasSgemmEx clAmdBlasSgemmEx_pfn
|
||||
#undef clAmdBlasSgemv
|
||||
//#define clAmdBlasSgemv clAmdBlasSgemv_pfn
|
||||
#undef clAmdBlasSgemvEx
|
||||
//#define clAmdBlasSgemvEx clAmdBlasSgemvEx_pfn
|
||||
#undef clAmdBlasSger
|
||||
//#define clAmdBlasSger clAmdBlasSger_pfn
|
||||
#undef clAmdBlasSnrm2
|
||||
//#define clAmdBlasSnrm2 clAmdBlasSnrm2_pfn
|
||||
#undef clAmdBlasSrot
|
||||
//#define clAmdBlasSrot clAmdBlasSrot_pfn
|
||||
#undef clAmdBlasSrotg
|
||||
//#define clAmdBlasSrotg clAmdBlasSrotg_pfn
|
||||
#undef clAmdBlasSrotm
|
||||
//#define clAmdBlasSrotm clAmdBlasSrotm_pfn
|
||||
#undef clAmdBlasSrotmg
|
||||
//#define clAmdBlasSrotmg clAmdBlasSrotmg_pfn
|
||||
#undef clAmdBlasSsbmv
|
||||
//#define clAmdBlasSsbmv clAmdBlasSsbmv_pfn
|
||||
#undef clAmdBlasSscal
|
||||
//#define clAmdBlasSscal clAmdBlasSscal_pfn
|
||||
#undef clAmdBlasSspmv
|
||||
//#define clAmdBlasSspmv clAmdBlasSspmv_pfn
|
||||
#undef clAmdBlasSspr
|
||||
//#define clAmdBlasSspr clAmdBlasSspr_pfn
|
||||
#undef clAmdBlasSspr2
|
||||
//#define clAmdBlasSspr2 clAmdBlasSspr2_pfn
|
||||
#undef clAmdBlasSswap
|
||||
//#define clAmdBlasSswap clAmdBlasSswap_pfn
|
||||
#undef clAmdBlasSsymm
|
||||
//#define clAmdBlasSsymm clAmdBlasSsymm_pfn
|
||||
#undef clAmdBlasSsymv
|
||||
//#define clAmdBlasSsymv clAmdBlasSsymv_pfn
|
||||
#undef clAmdBlasSsymvEx
|
||||
//#define clAmdBlasSsymvEx clAmdBlasSsymvEx_pfn
|
||||
#undef clAmdBlasSsyr
|
||||
//#define clAmdBlasSsyr clAmdBlasSsyr_pfn
|
||||
#undef clAmdBlasSsyr2
|
||||
//#define clAmdBlasSsyr2 clAmdBlasSsyr2_pfn
|
||||
#undef clAmdBlasSsyr2k
|
||||
//#define clAmdBlasSsyr2k clAmdBlasSsyr2k_pfn
|
||||
#undef clAmdBlasSsyr2kEx
|
||||
//#define clAmdBlasSsyr2kEx clAmdBlasSsyr2kEx_pfn
|
||||
#undef clAmdBlasSsyrk
|
||||
//#define clAmdBlasSsyrk clAmdBlasSsyrk_pfn
|
||||
#undef clAmdBlasSsyrkEx
|
||||
//#define clAmdBlasSsyrkEx clAmdBlasSsyrkEx_pfn
|
||||
#undef clAmdBlasStbmv
|
||||
//#define clAmdBlasStbmv clAmdBlasStbmv_pfn
|
||||
#undef clAmdBlasStbsv
|
||||
//#define clAmdBlasStbsv clAmdBlasStbsv_pfn
|
||||
#undef clAmdBlasStpmv
|
||||
//#define clAmdBlasStpmv clAmdBlasStpmv_pfn
|
||||
#undef clAmdBlasStpsv
|
||||
//#define clAmdBlasStpsv clAmdBlasStpsv_pfn
|
||||
#undef clAmdBlasStrmm
|
||||
//#define clAmdBlasStrmm clAmdBlasStrmm_pfn
|
||||
#undef clAmdBlasStrmmEx
|
||||
//#define clAmdBlasStrmmEx clAmdBlasStrmmEx_pfn
|
||||
#undef clAmdBlasStrmv
|
||||
//#define clAmdBlasStrmv clAmdBlasStrmv_pfn
|
||||
#undef clAmdBlasStrsm
|
||||
//#define clAmdBlasStrsm clAmdBlasStrsm_pfn
|
||||
#undef clAmdBlasStrsmEx
|
||||
//#define clAmdBlasStrsmEx clAmdBlasStrsmEx_pfn
|
||||
#undef clAmdBlasStrsv
|
||||
//#define clAmdBlasStrsv clAmdBlasStrsv_pfn
|
||||
#undef clAmdBlasTeardown
|
||||
#define clAmdBlasTeardown clAmdBlasTeardown_pfn
|
||||
#undef clAmdBlasZaxpy
|
||||
//#define clAmdBlasZaxpy clAmdBlasZaxpy_pfn
|
||||
#undef clAmdBlasZcopy
|
||||
//#define clAmdBlasZcopy clAmdBlasZcopy_pfn
|
||||
#undef clAmdBlasZdotc
|
||||
//#define clAmdBlasZdotc clAmdBlasZdotc_pfn
|
||||
#undef clAmdBlasZdotu
|
||||
//#define clAmdBlasZdotu clAmdBlasZdotu_pfn
|
||||
#undef clAmdBlasZdrot
|
||||
//#define clAmdBlasZdrot clAmdBlasZdrot_pfn
|
||||
#undef clAmdBlasZdscal
|
||||
//#define clAmdBlasZdscal clAmdBlasZdscal_pfn
|
||||
#undef clAmdBlasZgbmv
|
||||
//#define clAmdBlasZgbmv clAmdBlasZgbmv_pfn
|
||||
#undef clAmdBlasZgemm
|
||||
//#define clAmdBlasZgemm clAmdBlasZgemm_pfn
|
||||
#undef clAmdBlasZgemmEx
|
||||
#define clAmdBlasZgemmEx clAmdBlasZgemmEx_pfn
|
||||
#undef clAmdBlasZgemv
|
||||
//#define clAmdBlasZgemv clAmdBlasZgemv_pfn
|
||||
#undef clAmdBlasZgemvEx
|
||||
//#define clAmdBlasZgemvEx clAmdBlasZgemvEx_pfn
|
||||
#undef clAmdBlasZgerc
|
||||
//#define clAmdBlasZgerc clAmdBlasZgerc_pfn
|
||||
#undef clAmdBlasZgeru
|
||||
//#define clAmdBlasZgeru clAmdBlasZgeru_pfn
|
||||
#undef clAmdBlasZhbmv
|
||||
//#define clAmdBlasZhbmv clAmdBlasZhbmv_pfn
|
||||
#undef clAmdBlasZhemm
|
||||
//#define clAmdBlasZhemm clAmdBlasZhemm_pfn
|
||||
#undef clAmdBlasZhemv
|
||||
//#define clAmdBlasZhemv clAmdBlasZhemv_pfn
|
||||
#undef clAmdBlasZher
|
||||
//#define clAmdBlasZher clAmdBlasZher_pfn
|
||||
#undef clAmdBlasZher2
|
||||
//#define clAmdBlasZher2 clAmdBlasZher2_pfn
|
||||
#undef clAmdBlasZher2k
|
||||
//#define clAmdBlasZher2k clAmdBlasZher2k_pfn
|
||||
#undef clAmdBlasZherk
|
||||
//#define clAmdBlasZherk clAmdBlasZherk_pfn
|
||||
#undef clAmdBlasZhpmv
|
||||
//#define clAmdBlasZhpmv clAmdBlasZhpmv_pfn
|
||||
#undef clAmdBlasZhpr
|
||||
//#define clAmdBlasZhpr clAmdBlasZhpr_pfn
|
||||
#undef clAmdBlasZhpr2
|
||||
//#define clAmdBlasZhpr2 clAmdBlasZhpr2_pfn
|
||||
#undef clAmdBlasZrotg
|
||||
//#define clAmdBlasZrotg clAmdBlasZrotg_pfn
|
||||
#undef clAmdBlasZscal
|
||||
//#define clAmdBlasZscal clAmdBlasZscal_pfn
|
||||
#undef clAmdBlasZswap
|
||||
//#define clAmdBlasZswap clAmdBlasZswap_pfn
|
||||
#undef clAmdBlasZsymm
|
||||
//#define clAmdBlasZsymm clAmdBlasZsymm_pfn
|
||||
#undef clAmdBlasZsyr2k
|
||||
//#define clAmdBlasZsyr2k clAmdBlasZsyr2k_pfn
|
||||
#undef clAmdBlasZsyr2kEx
|
||||
//#define clAmdBlasZsyr2kEx clAmdBlasZsyr2kEx_pfn
|
||||
#undef clAmdBlasZsyrk
|
||||
//#define clAmdBlasZsyrk clAmdBlasZsyrk_pfn
|
||||
#undef clAmdBlasZsyrkEx
|
||||
//#define clAmdBlasZsyrkEx clAmdBlasZsyrkEx_pfn
|
||||
#undef clAmdBlasZtbmv
|
||||
//#define clAmdBlasZtbmv clAmdBlasZtbmv_pfn
|
||||
#undef clAmdBlasZtbsv
|
||||
//#define clAmdBlasZtbsv clAmdBlasZtbsv_pfn
|
||||
#undef clAmdBlasZtpmv
|
||||
//#define clAmdBlasZtpmv clAmdBlasZtpmv_pfn
|
||||
#undef clAmdBlasZtpsv
|
||||
//#define clAmdBlasZtpsv clAmdBlasZtpsv_pfn
|
||||
#undef clAmdBlasZtrmm
|
||||
//#define clAmdBlasZtrmm clAmdBlasZtrmm_pfn
|
||||
#undef clAmdBlasZtrmmEx
|
||||
//#define clAmdBlasZtrmmEx clAmdBlasZtrmmEx_pfn
|
||||
#undef clAmdBlasZtrmv
|
||||
//#define clAmdBlasZtrmv clAmdBlasZtrmv_pfn
|
||||
#undef clAmdBlasZtrsm
|
||||
//#define clAmdBlasZtrsm clAmdBlasZtrsm_pfn
|
||||
#undef clAmdBlasZtrsmEx
|
||||
//#define clAmdBlasZtrsmEx clAmdBlasZtrsmEx_pfn
|
||||
#undef clAmdBlasZtrsv
|
||||
//#define clAmdBlasZtrsv clAmdBlasZtrsv_pfn
|
||||
#undef clAmdBlasiCamax
|
||||
//#define clAmdBlasiCamax clAmdBlasiCamax_pfn
|
||||
#undef clAmdBlasiDamax
|
||||
//#define clAmdBlasiDamax clAmdBlasiDamax_pfn
|
||||
#undef clAmdBlasiSamax
|
||||
//#define clAmdBlasiSamax clAmdBlasiSamax_pfn
|
||||
#undef clAmdBlasiZamax
|
||||
//#define clAmdBlasiZamax clAmdBlasiZamax_pfn
|
||||
|
||||
// generated by parser_clamdblas.py
|
||||
//extern CL_RUNTIME_EXPORT cl_ulong (*clAmdBlasAddScratchImage)(cl_context context, size_t width, size_t height, clAmdBlasStatus* status);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCaxpy)(size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgerc)(clAmdBlasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCgeru)(clAmdBlasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChemm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChemv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, FloatComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCher2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCherk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, float alpha, const cl_mem A, size_t offa, size_t lda, float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasChpr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCscal)(size_t N, cl_float2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t lda, FloatComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasCtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDaxpy)(size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDger)(clAmdBlasOrder order, size_t M, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotg)(cl_mem DA, size_t offDA, cl_mem DB, size_t offDB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDrotmg)(cl_mem DD1, size_t offDD1, cl_mem DD2, size_t offDD2, cl_mem DX1, size_t offDX1, const cl_mem DY1, size_t offDY1, cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDspr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsymvEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t lda, cl_double beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDzasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasDznrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasRemoveScratchImage)(cl_ulong imageID);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSaxpy)(size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasScopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSetup)();
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSger)(clAmdBlasOrder order, size_t M, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotg)(cl_mem SA, size_t offSA, cl_mem SB, size_t offSB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSrotmg)(cl_mem SD1, size_t offSD1, cl_mem SD2, size_t offSD2, cl_mem SX1, size_t offSX1, const cl_mem SY1, size_t offSY1, cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSspr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsymvEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t lda, cl_float beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasSsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasStrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT void (*clAmdBlasTeardown)();
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZaxpy)(size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZdscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgbmv)(clAmdBlasOrder order, clAmdBlasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemm)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemmEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, clAmdBlasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemv)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgemvEx)(clAmdBlasOrder order, clAmdBlasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgerc)(clAmdBlasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZgeru)(clAmdBlasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, size_t K, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhemm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhemv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, DoubleComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZher2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZherk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, double alpha, const cl_mem A, size_t offa, size_t lda, double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpr)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZhpr2)(clAmdBlasOrder order, clAmdBlasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZscal)(size_t N, cl_double2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsymm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyr2k)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, const cl_mem B, size_t ldb, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyr2kEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyrk)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t lda, DoubleComplex beta, cl_mem C, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZsyrkEx)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtbmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtbsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtpmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtpsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrmv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsm)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t lda, cl_mem B, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsmEx)(clAmdBlasOrder order, clAmdBlasSide side, clAmdBlasUplo uplo, clAmdBlasTranspose transA, clAmdBlasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasZtrsv)(clAmdBlasOrder order, clAmdBlasUplo uplo, clAmdBlasTranspose trans, clAmdBlasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiCamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiDamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiSamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clAmdBlasStatus (*clAmdBlasiZamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
@@ -1,142 +0,0 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDFFT_HPP
|
||||
#error "Invalid usage"
|
||||
#endif
|
||||
|
||||
// generated by parser_clamdfft.py
|
||||
#define clAmdFftBakePlan clAmdFftBakePlan_
|
||||
#define clAmdFftCopyPlan clAmdFftCopyPlan_
|
||||
#define clAmdFftCreateDefaultPlan clAmdFftCreateDefaultPlan_
|
||||
#define clAmdFftDestroyPlan clAmdFftDestroyPlan_
|
||||
#define clAmdFftEnqueueTransform clAmdFftEnqueueTransform_
|
||||
#define clAmdFftGetLayout clAmdFftGetLayout_
|
||||
#define clAmdFftGetPlanBatchSize clAmdFftGetPlanBatchSize_
|
||||
#define clAmdFftGetPlanContext clAmdFftGetPlanContext_
|
||||
#define clAmdFftGetPlanDim clAmdFftGetPlanDim_
|
||||
#define clAmdFftGetPlanDistance clAmdFftGetPlanDistance_
|
||||
#define clAmdFftGetPlanInStride clAmdFftGetPlanInStride_
|
||||
#define clAmdFftGetPlanLength clAmdFftGetPlanLength_
|
||||
#define clAmdFftGetPlanOutStride clAmdFftGetPlanOutStride_
|
||||
#define clAmdFftGetPlanPrecision clAmdFftGetPlanPrecision_
|
||||
#define clAmdFftGetPlanScale clAmdFftGetPlanScale_
|
||||
#define clAmdFftGetPlanTransposeResult clAmdFftGetPlanTransposeResult_
|
||||
#define clAmdFftGetResultLocation clAmdFftGetResultLocation_
|
||||
#define clAmdFftGetTmpBufSize clAmdFftGetTmpBufSize_
|
||||
#define clAmdFftGetVersion clAmdFftGetVersion_
|
||||
#define clAmdFftSetLayout clAmdFftSetLayout_
|
||||
#define clAmdFftSetPlanBatchSize clAmdFftSetPlanBatchSize_
|
||||
#define clAmdFftSetPlanDim clAmdFftSetPlanDim_
|
||||
#define clAmdFftSetPlanDistance clAmdFftSetPlanDistance_
|
||||
#define clAmdFftSetPlanInStride clAmdFftSetPlanInStride_
|
||||
#define clAmdFftSetPlanLength clAmdFftSetPlanLength_
|
||||
#define clAmdFftSetPlanOutStride clAmdFftSetPlanOutStride_
|
||||
#define clAmdFftSetPlanPrecision clAmdFftSetPlanPrecision_
|
||||
#define clAmdFftSetPlanScale clAmdFftSetPlanScale_
|
||||
#define clAmdFftSetPlanTransposeResult clAmdFftSetPlanTransposeResult_
|
||||
#define clAmdFftSetResultLocation clAmdFftSetResultLocation_
|
||||
#define clAmdFftSetup clAmdFftSetup_
|
||||
#define clAmdFftTeardown clAmdFftTeardown_
|
||||
|
||||
#include <clAmdFft.h>
|
||||
|
||||
// generated by parser_clamdfft.py
|
||||
#undef clAmdFftBakePlan
|
||||
#define clAmdFftBakePlan clAmdFftBakePlan_pfn
|
||||
#undef clAmdFftCopyPlan
|
||||
//#define clAmdFftCopyPlan clAmdFftCopyPlan_pfn
|
||||
#undef clAmdFftCreateDefaultPlan
|
||||
#define clAmdFftCreateDefaultPlan clAmdFftCreateDefaultPlan_pfn
|
||||
#undef clAmdFftDestroyPlan
|
||||
#define clAmdFftDestroyPlan clAmdFftDestroyPlan_pfn
|
||||
#undef clAmdFftEnqueueTransform
|
||||
#define clAmdFftEnqueueTransform clAmdFftEnqueueTransform_pfn
|
||||
#undef clAmdFftGetLayout
|
||||
//#define clAmdFftGetLayout clAmdFftGetLayout_pfn
|
||||
#undef clAmdFftGetPlanBatchSize
|
||||
//#define clAmdFftGetPlanBatchSize clAmdFftGetPlanBatchSize_pfn
|
||||
#undef clAmdFftGetPlanContext
|
||||
//#define clAmdFftGetPlanContext clAmdFftGetPlanContext_pfn
|
||||
#undef clAmdFftGetPlanDim
|
||||
//#define clAmdFftGetPlanDim clAmdFftGetPlanDim_pfn
|
||||
#undef clAmdFftGetPlanDistance
|
||||
//#define clAmdFftGetPlanDistance clAmdFftGetPlanDistance_pfn
|
||||
#undef clAmdFftGetPlanInStride
|
||||
//#define clAmdFftGetPlanInStride clAmdFftGetPlanInStride_pfn
|
||||
#undef clAmdFftGetPlanLength
|
||||
//#define clAmdFftGetPlanLength clAmdFftGetPlanLength_pfn
|
||||
#undef clAmdFftGetPlanOutStride
|
||||
//#define clAmdFftGetPlanOutStride clAmdFftGetPlanOutStride_pfn
|
||||
#undef clAmdFftGetPlanPrecision
|
||||
//#define clAmdFftGetPlanPrecision clAmdFftGetPlanPrecision_pfn
|
||||
#undef clAmdFftGetPlanScale
|
||||
//#define clAmdFftGetPlanScale clAmdFftGetPlanScale_pfn
|
||||
#undef clAmdFftGetPlanTransposeResult
|
||||
//#define clAmdFftGetPlanTransposeResult clAmdFftGetPlanTransposeResult_pfn
|
||||
#undef clAmdFftGetResultLocation
|
||||
//#define clAmdFftGetResultLocation clAmdFftGetResultLocation_pfn
|
||||
#undef clAmdFftGetTmpBufSize
|
||||
#define clAmdFftGetTmpBufSize clAmdFftGetTmpBufSize_pfn
|
||||
#undef clAmdFftGetVersion
|
||||
#define clAmdFftGetVersion clAmdFftGetVersion_pfn
|
||||
#undef clAmdFftSetLayout
|
||||
#define clAmdFftSetLayout clAmdFftSetLayout_pfn
|
||||
#undef clAmdFftSetPlanBatchSize
|
||||
#define clAmdFftSetPlanBatchSize clAmdFftSetPlanBatchSize_pfn
|
||||
#undef clAmdFftSetPlanDim
|
||||
//#define clAmdFftSetPlanDim clAmdFftSetPlanDim_pfn
|
||||
#undef clAmdFftSetPlanDistance
|
||||
#define clAmdFftSetPlanDistance clAmdFftSetPlanDistance_pfn
|
||||
#undef clAmdFftSetPlanInStride
|
||||
#define clAmdFftSetPlanInStride clAmdFftSetPlanInStride_pfn
|
||||
#undef clAmdFftSetPlanLength
|
||||
//#define clAmdFftSetPlanLength clAmdFftSetPlanLength_pfn
|
||||
#undef clAmdFftSetPlanOutStride
|
||||
#define clAmdFftSetPlanOutStride clAmdFftSetPlanOutStride_pfn
|
||||
#undef clAmdFftSetPlanPrecision
|
||||
#define clAmdFftSetPlanPrecision clAmdFftSetPlanPrecision_pfn
|
||||
#undef clAmdFftSetPlanScale
|
||||
#define clAmdFftSetPlanScale clAmdFftSetPlanScale_pfn
|
||||
#undef clAmdFftSetPlanTransposeResult
|
||||
//#define clAmdFftSetPlanTransposeResult clAmdFftSetPlanTransposeResult_pfn
|
||||
#undef clAmdFftSetResultLocation
|
||||
#define clAmdFftSetResultLocation clAmdFftSetResultLocation_pfn
|
||||
#undef clAmdFftSetup
|
||||
#define clAmdFftSetup clAmdFftSetup_pfn
|
||||
#undef clAmdFftTeardown
|
||||
#define clAmdFftTeardown clAmdFftTeardown_pfn
|
||||
|
||||
// generated by parser_clamdfft.py
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftBakePlan)(clAmdFftPlanHandle plHandle, cl_uint numQueues, cl_command_queue* commQueueFFT, void (CL_CALLBACK* pfn_notify) (clAmdFftPlanHandle plHandle, void* user_data), void* user_data);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftCopyPlan)(clAmdFftPlanHandle* out_plHandle, cl_context new_context, clAmdFftPlanHandle in_plHandle);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftCreateDefaultPlan)(clAmdFftPlanHandle* plHandle, cl_context context, const clAmdFftDim dim, const size_t* clLengths);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftDestroyPlan)(clAmdFftPlanHandle* plHandle);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftEnqueueTransform)(clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_uint numQueuesAndEvents, cl_command_queue* commQueues, cl_uint numWaitEvents, const cl_event* waitEvents, cl_event* outEvents, cl_mem* inputBuffers, cl_mem* outputBuffers, cl_mem tmpBuffer);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetLayout)(const clAmdFftPlanHandle plHandle, clAmdFftLayout* iLayout, clAmdFftLayout* oLayout);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanBatchSize)(const clAmdFftPlanHandle plHandle, size_t* batchSize);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanContext)(const clAmdFftPlanHandle plHandle, cl_context* context);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanDim)(const clAmdFftPlanHandle plHandle, clAmdFftDim* dim, cl_uint* size);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanDistance)(const clAmdFftPlanHandle plHandle, size_t* iDist, size_t* oDist);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanInStride)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanLength)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clLengths);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanOutStride)(const clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanPrecision)(const clAmdFftPlanHandle plHandle, clAmdFftPrecision* precision);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanScale)(const clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_float* scale);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetPlanTransposeResult)(const clAmdFftPlanHandle plHandle, clAmdFftResultTransposed* transposed);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetResultLocation)(const clAmdFftPlanHandle plHandle, clAmdFftResultLocation* placeness);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetTmpBufSize)(const clAmdFftPlanHandle plHandle, size_t* buffersize);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetLayout)(clAmdFftPlanHandle plHandle, clAmdFftLayout iLayout, clAmdFftLayout oLayout);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanBatchSize)(clAmdFftPlanHandle plHandle, size_t batchSize);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanDim)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanDistance)(clAmdFftPlanHandle plHandle, size_t iDist, size_t oDist);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanInStride)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanLength)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, const size_t* clLengths);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanOutStride)(clAmdFftPlanHandle plHandle, const clAmdFftDim dim, size_t* clStrides);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanPrecision)(clAmdFftPlanHandle plHandle, clAmdFftPrecision precision);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanScale)(clAmdFftPlanHandle plHandle, clAmdFftDirection dir, cl_float scale);
|
||||
//extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetPlanTransposeResult)(clAmdFftPlanHandle plHandle, clAmdFftResultTransposed transposed);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetResultLocation)(clAmdFftPlanHandle plHandle, clAmdFftResultLocation placeness);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftSetup)(const clAmdFftSetupData* setupData);
|
||||
extern CL_RUNTIME_EXPORT clAmdFftStatus (*clAmdFftTeardown)();
|
||||
@@ -0,0 +1,602 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDBLAS_HPP
|
||||
#error "Invalid usage"
|
||||
#endif
|
||||
|
||||
// generated by parser_clblas.py
|
||||
#define clblasCaxpy clblasCaxpy_
|
||||
#define clblasCcopy clblasCcopy_
|
||||
#define clblasCdotc clblasCdotc_
|
||||
#define clblasCdotu clblasCdotu_
|
||||
#define clblasCgbmv clblasCgbmv_
|
||||
#define clblasCgemm clblasCgemm_
|
||||
#define clblasCgemv clblasCgemv_
|
||||
#define clblasCgerc clblasCgerc_
|
||||
#define clblasCgeru clblasCgeru_
|
||||
#define clblasChbmv clblasChbmv_
|
||||
#define clblasChemm clblasChemm_
|
||||
#define clblasChemv clblasChemv_
|
||||
#define clblasCher clblasCher_
|
||||
#define clblasCher2 clblasCher2_
|
||||
#define clblasCher2k clblasCher2k_
|
||||
#define clblasCherk clblasCherk_
|
||||
#define clblasChpmv clblasChpmv_
|
||||
#define clblasChpr clblasChpr_
|
||||
#define clblasChpr2 clblasChpr2_
|
||||
#define clblasCrotg clblasCrotg_
|
||||
#define clblasCscal clblasCscal_
|
||||
#define clblasCsrot clblasCsrot_
|
||||
#define clblasCsscal clblasCsscal_
|
||||
#define clblasCswap clblasCswap_
|
||||
#define clblasCsymm clblasCsymm_
|
||||
#define clblasCsyr2k clblasCsyr2k_
|
||||
#define clblasCsyrk clblasCsyrk_
|
||||
#define clblasCtbmv clblasCtbmv_
|
||||
#define clblasCtbsv clblasCtbsv_
|
||||
#define clblasCtpmv clblasCtpmv_
|
||||
#define clblasCtpsv clblasCtpsv_
|
||||
#define clblasCtrmm clblasCtrmm_
|
||||
#define clblasCtrmv clblasCtrmv_
|
||||
#define clblasCtrsm clblasCtrsm_
|
||||
#define clblasCtrsv clblasCtrsv_
|
||||
#define clblasDasum clblasDasum_
|
||||
#define clblasDaxpy clblasDaxpy_
|
||||
#define clblasDcopy clblasDcopy_
|
||||
#define clblasDdot clblasDdot_
|
||||
#define clblasDgbmv clblasDgbmv_
|
||||
#define clblasDgemm clblasDgemm_
|
||||
#define clblasDgemv clblasDgemv_
|
||||
#define clblasDger clblasDger_
|
||||
#define clblasDnrm2 clblasDnrm2_
|
||||
#define clblasDrot clblasDrot_
|
||||
#define clblasDrotg clblasDrotg_
|
||||
#define clblasDrotm clblasDrotm_
|
||||
#define clblasDrotmg clblasDrotmg_
|
||||
#define clblasDsbmv clblasDsbmv_
|
||||
#define clblasDscal clblasDscal_
|
||||
#define clblasDspmv clblasDspmv_
|
||||
#define clblasDspr clblasDspr_
|
||||
#define clblasDspr2 clblasDspr2_
|
||||
#define clblasDswap clblasDswap_
|
||||
#define clblasDsymm clblasDsymm_
|
||||
#define clblasDsymv clblasDsymv_
|
||||
#define clblasDsyr clblasDsyr_
|
||||
#define clblasDsyr2 clblasDsyr2_
|
||||
#define clblasDsyr2k clblasDsyr2k_
|
||||
#define clblasDsyrk clblasDsyrk_
|
||||
#define clblasDtbmv clblasDtbmv_
|
||||
#define clblasDtbsv clblasDtbsv_
|
||||
#define clblasDtpmv clblasDtpmv_
|
||||
#define clblasDtpsv clblasDtpsv_
|
||||
#define clblasDtrmm clblasDtrmm_
|
||||
#define clblasDtrmv clblasDtrmv_
|
||||
#define clblasDtrsm clblasDtrsm_
|
||||
#define clblasDtrsv clblasDtrsv_
|
||||
#define clblasDzasum clblasDzasum_
|
||||
#define clblasDznrm2 clblasDznrm2_
|
||||
#define clblasGetVersion clblasGetVersion_
|
||||
#define clblasSasum clblasSasum_
|
||||
#define clblasSaxpy clblasSaxpy_
|
||||
#define clblasScasum clblasScasum_
|
||||
#define clblasScnrm2 clblasScnrm2_
|
||||
#define clblasScopy clblasScopy_
|
||||
#define clblasSdot clblasSdot_
|
||||
#define clblasSetup clblasSetup_
|
||||
#define clblasSgbmv clblasSgbmv_
|
||||
#define clblasSgemm clblasSgemm_
|
||||
#define clblasSgemv clblasSgemv_
|
||||
#define clblasSger clblasSger_
|
||||
#define clblasSnrm2 clblasSnrm2_
|
||||
#define clblasSrot clblasSrot_
|
||||
#define clblasSrotg clblasSrotg_
|
||||
#define clblasSrotm clblasSrotm_
|
||||
#define clblasSrotmg clblasSrotmg_
|
||||
#define clblasSsbmv clblasSsbmv_
|
||||
#define clblasSscal clblasSscal_
|
||||
#define clblasSspmv clblasSspmv_
|
||||
#define clblasSspr clblasSspr_
|
||||
#define clblasSspr2 clblasSspr2_
|
||||
#define clblasSswap clblasSswap_
|
||||
#define clblasSsymm clblasSsymm_
|
||||
#define clblasSsymv clblasSsymv_
|
||||
#define clblasSsyr clblasSsyr_
|
||||
#define clblasSsyr2 clblasSsyr2_
|
||||
#define clblasSsyr2k clblasSsyr2k_
|
||||
#define clblasSsyrk clblasSsyrk_
|
||||
#define clblasStbmv clblasStbmv_
|
||||
#define clblasStbsv clblasStbsv_
|
||||
#define clblasStpmv clblasStpmv_
|
||||
#define clblasStpsv clblasStpsv_
|
||||
#define clblasStrmm clblasStrmm_
|
||||
#define clblasStrmv clblasStrmv_
|
||||
#define clblasStrsm clblasStrsm_
|
||||
#define clblasStrsv clblasStrsv_
|
||||
#define clblasTeardown clblasTeardown_
|
||||
#define clblasZaxpy clblasZaxpy_
|
||||
#define clblasZcopy clblasZcopy_
|
||||
#define clblasZdotc clblasZdotc_
|
||||
#define clblasZdotu clblasZdotu_
|
||||
#define clblasZdrot clblasZdrot_
|
||||
#define clblasZdscal clblasZdscal_
|
||||
#define clblasZgbmv clblasZgbmv_
|
||||
#define clblasZgemm clblasZgemm_
|
||||
#define clblasZgemv clblasZgemv_
|
||||
#define clblasZgerc clblasZgerc_
|
||||
#define clblasZgeru clblasZgeru_
|
||||
#define clblasZhbmv clblasZhbmv_
|
||||
#define clblasZhemm clblasZhemm_
|
||||
#define clblasZhemv clblasZhemv_
|
||||
#define clblasZher clblasZher_
|
||||
#define clblasZher2 clblasZher2_
|
||||
#define clblasZher2k clblasZher2k_
|
||||
#define clblasZherk clblasZherk_
|
||||
#define clblasZhpmv clblasZhpmv_
|
||||
#define clblasZhpr clblasZhpr_
|
||||
#define clblasZhpr2 clblasZhpr2_
|
||||
#define clblasZrotg clblasZrotg_
|
||||
#define clblasZscal clblasZscal_
|
||||
#define clblasZswap clblasZswap_
|
||||
#define clblasZsymm clblasZsymm_
|
||||
#define clblasZsyr2k clblasZsyr2k_
|
||||
#define clblasZsyrk clblasZsyrk_
|
||||
#define clblasZtbmv clblasZtbmv_
|
||||
#define clblasZtbsv clblasZtbsv_
|
||||
#define clblasZtpmv clblasZtpmv_
|
||||
#define clblasZtpsv clblasZtpsv_
|
||||
#define clblasZtrmm clblasZtrmm_
|
||||
#define clblasZtrmv clblasZtrmv_
|
||||
#define clblasZtrsm clblasZtrsm_
|
||||
#define clblasZtrsv clblasZtrsv_
|
||||
#define clblasiCamax clblasiCamax_
|
||||
#define clblasiDamax clblasiDamax_
|
||||
#define clblasiSamax clblasiSamax_
|
||||
#define clblasiZamax clblasiZamax_
|
||||
|
||||
#include <clBLAS.h>
|
||||
|
||||
// generated by parser_clblas.py
|
||||
#undef clblasCaxpy
|
||||
//#define clblasCaxpy clblasCaxpy_pfn
|
||||
#undef clblasCcopy
|
||||
//#define clblasCcopy clblasCcopy_pfn
|
||||
#undef clblasCdotc
|
||||
//#define clblasCdotc clblasCdotc_pfn
|
||||
#undef clblasCdotu
|
||||
//#define clblasCdotu clblasCdotu_pfn
|
||||
#undef clblasCgbmv
|
||||
//#define clblasCgbmv clblasCgbmv_pfn
|
||||
#undef clblasCgemm
|
||||
#define clblasCgemm clblasCgemm_pfn
|
||||
#undef clblasCgemv
|
||||
//#define clblasCgemv clblasCgemv_pfn
|
||||
#undef clblasCgerc
|
||||
//#define clblasCgerc clblasCgerc_pfn
|
||||
#undef clblasCgeru
|
||||
//#define clblasCgeru clblasCgeru_pfn
|
||||
#undef clblasChbmv
|
||||
//#define clblasChbmv clblasChbmv_pfn
|
||||
#undef clblasChemm
|
||||
//#define clblasChemm clblasChemm_pfn
|
||||
#undef clblasChemv
|
||||
//#define clblasChemv clblasChemv_pfn
|
||||
#undef clblasCher
|
||||
//#define clblasCher clblasCher_pfn
|
||||
#undef clblasCher2
|
||||
//#define clblasCher2 clblasCher2_pfn
|
||||
#undef clblasCher2k
|
||||
//#define clblasCher2k clblasCher2k_pfn
|
||||
#undef clblasCherk
|
||||
//#define clblasCherk clblasCherk_pfn
|
||||
#undef clblasChpmv
|
||||
//#define clblasChpmv clblasChpmv_pfn
|
||||
#undef clblasChpr
|
||||
//#define clblasChpr clblasChpr_pfn
|
||||
#undef clblasChpr2
|
||||
//#define clblasChpr2 clblasChpr2_pfn
|
||||
#undef clblasCrotg
|
||||
//#define clblasCrotg clblasCrotg_pfn
|
||||
#undef clblasCscal
|
||||
//#define clblasCscal clblasCscal_pfn
|
||||
#undef clblasCsrot
|
||||
//#define clblasCsrot clblasCsrot_pfn
|
||||
#undef clblasCsscal
|
||||
//#define clblasCsscal clblasCsscal_pfn
|
||||
#undef clblasCswap
|
||||
//#define clblasCswap clblasCswap_pfn
|
||||
#undef clblasCsymm
|
||||
//#define clblasCsymm clblasCsymm_pfn
|
||||
#undef clblasCsyr2k
|
||||
//#define clblasCsyr2k clblasCsyr2k_pfn
|
||||
#undef clblasCsyrk
|
||||
//#define clblasCsyrk clblasCsyrk_pfn
|
||||
#undef clblasCtbmv
|
||||
//#define clblasCtbmv clblasCtbmv_pfn
|
||||
#undef clblasCtbsv
|
||||
//#define clblasCtbsv clblasCtbsv_pfn
|
||||
#undef clblasCtpmv
|
||||
//#define clblasCtpmv clblasCtpmv_pfn
|
||||
#undef clblasCtpsv
|
||||
//#define clblasCtpsv clblasCtpsv_pfn
|
||||
#undef clblasCtrmm
|
||||
//#define clblasCtrmm clblasCtrmm_pfn
|
||||
#undef clblasCtrmv
|
||||
//#define clblasCtrmv clblasCtrmv_pfn
|
||||
#undef clblasCtrsm
|
||||
//#define clblasCtrsm clblasCtrsm_pfn
|
||||
#undef clblasCtrsv
|
||||
//#define clblasCtrsv clblasCtrsv_pfn
|
||||
#undef clblasDasum
|
||||
//#define clblasDasum clblasDasum_pfn
|
||||
#undef clblasDaxpy
|
||||
//#define clblasDaxpy clblasDaxpy_pfn
|
||||
#undef clblasDcopy
|
||||
//#define clblasDcopy clblasDcopy_pfn
|
||||
#undef clblasDdot
|
||||
//#define clblasDdot clblasDdot_pfn
|
||||
#undef clblasDgbmv
|
||||
//#define clblasDgbmv clblasDgbmv_pfn
|
||||
#undef clblasDgemm
|
||||
#define clblasDgemm clblasDgemm_pfn
|
||||
#undef clblasDgemv
|
||||
//#define clblasDgemv clblasDgemv_pfn
|
||||
#undef clblasDger
|
||||
//#define clblasDger clblasDger_pfn
|
||||
#undef clblasDnrm2
|
||||
//#define clblasDnrm2 clblasDnrm2_pfn
|
||||
#undef clblasDrot
|
||||
//#define clblasDrot clblasDrot_pfn
|
||||
#undef clblasDrotg
|
||||
//#define clblasDrotg clblasDrotg_pfn
|
||||
#undef clblasDrotm
|
||||
//#define clblasDrotm clblasDrotm_pfn
|
||||
#undef clblasDrotmg
|
||||
//#define clblasDrotmg clblasDrotmg_pfn
|
||||
#undef clblasDsbmv
|
||||
//#define clblasDsbmv clblasDsbmv_pfn
|
||||
#undef clblasDscal
|
||||
//#define clblasDscal clblasDscal_pfn
|
||||
#undef clblasDspmv
|
||||
//#define clblasDspmv clblasDspmv_pfn
|
||||
#undef clblasDspr
|
||||
//#define clblasDspr clblasDspr_pfn
|
||||
#undef clblasDspr2
|
||||
//#define clblasDspr2 clblasDspr2_pfn
|
||||
#undef clblasDswap
|
||||
//#define clblasDswap clblasDswap_pfn
|
||||
#undef clblasDsymm
|
||||
//#define clblasDsymm clblasDsymm_pfn
|
||||
#undef clblasDsymv
|
||||
//#define clblasDsymv clblasDsymv_pfn
|
||||
#undef clblasDsyr
|
||||
//#define clblasDsyr clblasDsyr_pfn
|
||||
#undef clblasDsyr2
|
||||
//#define clblasDsyr2 clblasDsyr2_pfn
|
||||
#undef clblasDsyr2k
|
||||
//#define clblasDsyr2k clblasDsyr2k_pfn
|
||||
#undef clblasDsyrk
|
||||
//#define clblasDsyrk clblasDsyrk_pfn
|
||||
#undef clblasDtbmv
|
||||
//#define clblasDtbmv clblasDtbmv_pfn
|
||||
#undef clblasDtbsv
|
||||
//#define clblasDtbsv clblasDtbsv_pfn
|
||||
#undef clblasDtpmv
|
||||
//#define clblasDtpmv clblasDtpmv_pfn
|
||||
#undef clblasDtpsv
|
||||
//#define clblasDtpsv clblasDtpsv_pfn
|
||||
#undef clblasDtrmm
|
||||
//#define clblasDtrmm clblasDtrmm_pfn
|
||||
#undef clblasDtrmv
|
||||
//#define clblasDtrmv clblasDtrmv_pfn
|
||||
#undef clblasDtrsm
|
||||
//#define clblasDtrsm clblasDtrsm_pfn
|
||||
#undef clblasDtrsv
|
||||
//#define clblasDtrsv clblasDtrsv_pfn
|
||||
#undef clblasDzasum
|
||||
//#define clblasDzasum clblasDzasum_pfn
|
||||
#undef clblasDznrm2
|
||||
//#define clblasDznrm2 clblasDznrm2_pfn
|
||||
#undef clblasGetVersion
|
||||
//#define clblasGetVersion clblasGetVersion_pfn
|
||||
#undef clblasSasum
|
||||
//#define clblasSasum clblasSasum_pfn
|
||||
#undef clblasSaxpy
|
||||
//#define clblasSaxpy clblasSaxpy_pfn
|
||||
#undef clblasScasum
|
||||
//#define clblasScasum clblasScasum_pfn
|
||||
#undef clblasScnrm2
|
||||
//#define clblasScnrm2 clblasScnrm2_pfn
|
||||
#undef clblasScopy
|
||||
//#define clblasScopy clblasScopy_pfn
|
||||
#undef clblasSdot
|
||||
//#define clblasSdot clblasSdot_pfn
|
||||
#undef clblasSetup
|
||||
#define clblasSetup clblasSetup_pfn
|
||||
#undef clblasSgbmv
|
||||
//#define clblasSgbmv clblasSgbmv_pfn
|
||||
#undef clblasSgemm
|
||||
#define clblasSgemm clblasSgemm_pfn
|
||||
#undef clblasSgemv
|
||||
//#define clblasSgemv clblasSgemv_pfn
|
||||
#undef clblasSger
|
||||
//#define clblasSger clblasSger_pfn
|
||||
#undef clblasSnrm2
|
||||
//#define clblasSnrm2 clblasSnrm2_pfn
|
||||
#undef clblasSrot
|
||||
//#define clblasSrot clblasSrot_pfn
|
||||
#undef clblasSrotg
|
||||
//#define clblasSrotg clblasSrotg_pfn
|
||||
#undef clblasSrotm
|
||||
//#define clblasSrotm clblasSrotm_pfn
|
||||
#undef clblasSrotmg
|
||||
//#define clblasSrotmg clblasSrotmg_pfn
|
||||
#undef clblasSsbmv
|
||||
//#define clblasSsbmv clblasSsbmv_pfn
|
||||
#undef clblasSscal
|
||||
//#define clblasSscal clblasSscal_pfn
|
||||
#undef clblasSspmv
|
||||
//#define clblasSspmv clblasSspmv_pfn
|
||||
#undef clblasSspr
|
||||
//#define clblasSspr clblasSspr_pfn
|
||||
#undef clblasSspr2
|
||||
//#define clblasSspr2 clblasSspr2_pfn
|
||||
#undef clblasSswap
|
||||
//#define clblasSswap clblasSswap_pfn
|
||||
#undef clblasSsymm
|
||||
//#define clblasSsymm clblasSsymm_pfn
|
||||
#undef clblasSsymv
|
||||
//#define clblasSsymv clblasSsymv_pfn
|
||||
#undef clblasSsyr
|
||||
//#define clblasSsyr clblasSsyr_pfn
|
||||
#undef clblasSsyr2
|
||||
//#define clblasSsyr2 clblasSsyr2_pfn
|
||||
#undef clblasSsyr2k
|
||||
//#define clblasSsyr2k clblasSsyr2k_pfn
|
||||
#undef clblasSsyrk
|
||||
//#define clblasSsyrk clblasSsyrk_pfn
|
||||
#undef clblasStbmv
|
||||
//#define clblasStbmv clblasStbmv_pfn
|
||||
#undef clblasStbsv
|
||||
//#define clblasStbsv clblasStbsv_pfn
|
||||
#undef clblasStpmv
|
||||
//#define clblasStpmv clblasStpmv_pfn
|
||||
#undef clblasStpsv
|
||||
//#define clblasStpsv clblasStpsv_pfn
|
||||
#undef clblasStrmm
|
||||
//#define clblasStrmm clblasStrmm_pfn
|
||||
#undef clblasStrmv
|
||||
//#define clblasStrmv clblasStrmv_pfn
|
||||
#undef clblasStrsm
|
||||
//#define clblasStrsm clblasStrsm_pfn
|
||||
#undef clblasStrsv
|
||||
//#define clblasStrsv clblasStrsv_pfn
|
||||
#undef clblasTeardown
|
||||
#define clblasTeardown clblasTeardown_pfn
|
||||
#undef clblasZaxpy
|
||||
//#define clblasZaxpy clblasZaxpy_pfn
|
||||
#undef clblasZcopy
|
||||
//#define clblasZcopy clblasZcopy_pfn
|
||||
#undef clblasZdotc
|
||||
//#define clblasZdotc clblasZdotc_pfn
|
||||
#undef clblasZdotu
|
||||
//#define clblasZdotu clblasZdotu_pfn
|
||||
#undef clblasZdrot
|
||||
//#define clblasZdrot clblasZdrot_pfn
|
||||
#undef clblasZdscal
|
||||
//#define clblasZdscal clblasZdscal_pfn
|
||||
#undef clblasZgbmv
|
||||
//#define clblasZgbmv clblasZgbmv_pfn
|
||||
#undef clblasZgemm
|
||||
#define clblasZgemm clblasZgemm_pfn
|
||||
#undef clblasZgemv
|
||||
//#define clblasZgemv clblasZgemv_pfn
|
||||
#undef clblasZgerc
|
||||
//#define clblasZgerc clblasZgerc_pfn
|
||||
#undef clblasZgeru
|
||||
//#define clblasZgeru clblasZgeru_pfn
|
||||
#undef clblasZhbmv
|
||||
//#define clblasZhbmv clblasZhbmv_pfn
|
||||
#undef clblasZhemm
|
||||
//#define clblasZhemm clblasZhemm_pfn
|
||||
#undef clblasZhemv
|
||||
//#define clblasZhemv clblasZhemv_pfn
|
||||
#undef clblasZher
|
||||
//#define clblasZher clblasZher_pfn
|
||||
#undef clblasZher2
|
||||
//#define clblasZher2 clblasZher2_pfn
|
||||
#undef clblasZher2k
|
||||
//#define clblasZher2k clblasZher2k_pfn
|
||||
#undef clblasZherk
|
||||
//#define clblasZherk clblasZherk_pfn
|
||||
#undef clblasZhpmv
|
||||
//#define clblasZhpmv clblasZhpmv_pfn
|
||||
#undef clblasZhpr
|
||||
//#define clblasZhpr clblasZhpr_pfn
|
||||
#undef clblasZhpr2
|
||||
//#define clblasZhpr2 clblasZhpr2_pfn
|
||||
#undef clblasZrotg
|
||||
//#define clblasZrotg clblasZrotg_pfn
|
||||
#undef clblasZscal
|
||||
//#define clblasZscal clblasZscal_pfn
|
||||
#undef clblasZswap
|
||||
//#define clblasZswap clblasZswap_pfn
|
||||
#undef clblasZsymm
|
||||
//#define clblasZsymm clblasZsymm_pfn
|
||||
#undef clblasZsyr2k
|
||||
//#define clblasZsyr2k clblasZsyr2k_pfn
|
||||
#undef clblasZsyrk
|
||||
//#define clblasZsyrk clblasZsyrk_pfn
|
||||
#undef clblasZtbmv
|
||||
//#define clblasZtbmv clblasZtbmv_pfn
|
||||
#undef clblasZtbsv
|
||||
//#define clblasZtbsv clblasZtbsv_pfn
|
||||
#undef clblasZtpmv
|
||||
//#define clblasZtpmv clblasZtpmv_pfn
|
||||
#undef clblasZtpsv
|
||||
//#define clblasZtpsv clblasZtpsv_pfn
|
||||
#undef clblasZtrmm
|
||||
//#define clblasZtrmm clblasZtrmm_pfn
|
||||
#undef clblasZtrmv
|
||||
//#define clblasZtrmv clblasZtrmv_pfn
|
||||
#undef clblasZtrsm
|
||||
//#define clblasZtrsm clblasZtrsm_pfn
|
||||
#undef clblasZtrsv
|
||||
//#define clblasZtrsv clblasZtrsv_pfn
|
||||
#undef clblasiCamax
|
||||
//#define clblasiCamax clblasiCamax_pfn
|
||||
#undef clblasiDamax
|
||||
//#define clblasiDamax clblasiDamax_pfn
|
||||
#undef clblasiSamax
|
||||
//#define clblasiSamax clblasiSamax_pfn
|
||||
#undef clblasiZamax
|
||||
//#define clblasiZamax clblasiZamax_pfn
|
||||
|
||||
// generated by parser_clblas.py
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCaxpy)(size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCgbmv)(clblasOrder order, clblasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clblasStatus (*clblasCgemm)(clblasOrder order, clblasTranspose transA, clblasTranspose transB, size_t M, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCgemv)(clblasOrder order, clblasTranspose transA, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, FloatComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCgerc)(clblasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCgeru)(clblasOrder order, size_t M, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasChbmv)(clblasOrder order, clblasUplo uplo, size_t N, size_t K, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasChemm)(clblasOrder order, clblasSide side, clblasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasChemv)(clblasOrder order, clblasUplo uplo, size_t N, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, FloatComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCher)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCher2)(clblasOrder order, clblasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCher2k)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCherk)(clblasOrder order, clblasUplo uplo, clblasTranspose transA, size_t N, size_t K, float alpha, const cl_mem A, size_t offa, size_t lda, float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasChpmv)(clblasOrder order, clblasUplo uplo, size_t N, cl_float2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasChpr)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasChpr2)(clblasOrder order, clblasUplo uplo, size_t N, cl_float2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCscal)(size_t N, cl_float2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCsrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCsscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCsymm)(clblasOrder order, clblasSide side, clblasUplo uplo, size_t M, size_t N, cl_float2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCsyr2k)(clblasOrder order, clblasUplo uplo, clblasTranspose transAB, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCsyrk)(clblasOrder order, clblasUplo uplo, clblasTranspose transA, size_t N, size_t K, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, FloatComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtbmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtbsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtpmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtpsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtrmm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtrmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtrsm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, FloatComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasCtrsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDaxpy)(size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDgbmv)(clblasOrder order, clblasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clblasStatus (*clblasDgemm)(clblasOrder order, clblasTranspose transA, clblasTranspose transB, size_t M, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDgemv)(clblasOrder order, clblasTranspose transA, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDger)(clblasOrder order, size_t M, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDrotg)(cl_mem DA, size_t offDA, cl_mem DB, size_t offDB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDrotmg)(cl_mem DD1, size_t offDD1, cl_mem DD2, size_t offDD2, cl_mem DX1, size_t offDX1, const cl_mem DY1, size_t offDY1, cl_mem DPARAM, size_t offDparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsbmv)(clblasOrder order, clblasUplo uplo, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDspmv)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDspr)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDspr2)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsymm)(clblasOrder order, clblasSide side, clblasUplo uplo, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsymv)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_double beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsyr)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsyr2)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsyr2k)(clblasOrder order, clblasUplo uplo, clblasTranspose transAB, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDsyrk)(clblasOrder order, clblasUplo uplo, clblasTranspose transA, size_t N, size_t K, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_double beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtbmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtbsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtpmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtpsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtrmm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtrmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtrsm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, cl_double alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDtrsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDzasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasDznrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSaxpy)(size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasScasum)(size_t N, cl_mem asum, size_t offAsum, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasScnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasScopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSdot)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clblasStatus (*clblasSetup)();
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSgbmv)(clblasOrder order, clblasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clblasStatus (*clblasSgemm)(clblasOrder order, clblasTranspose transA, clblasTranspose transB, size_t M, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSgemv)(clblasOrder order, clblasTranspose transA, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSger)(clblasOrder order, size_t M, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSnrm2)(size_t N, cl_mem NRM2, size_t offNRM2, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_float C, cl_float S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSrotg)(cl_mem SA, size_t offSA, cl_mem SB, size_t offSB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSrotm)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, const cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSrotmg)(cl_mem SD1, size_t offSD1, cl_mem SD2, size_t offSD2, cl_mem SX1, size_t offSX1, const cl_mem SY1, size_t offSY1, cl_mem SPARAM, size_t offSparam, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsbmv)(clblasOrder order, clblasUplo uplo, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSscal)(size_t N, cl_float alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSspmv)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_float beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSspr)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSspr2)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsymm)(clblasOrder order, clblasSide side, clblasUplo uplo, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_float beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsymv)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, cl_float beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsyr)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsyr2)(clblasOrder order, clblasUplo uplo, size_t N, cl_float alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsyr2k)(clblasOrder order, clblasUplo uplo, clblasTranspose transAB, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasSsyrk)(clblasOrder order, clblasUplo uplo, clblasTranspose transA, size_t N, size_t K, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_float beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStbmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStbsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStpmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStpsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStrmm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStrmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStrsm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, cl_float alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasStrsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT void (*clblasTeardown)();
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZaxpy)(size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZcopy)(size_t N, const cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZdotc)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZdotu)(size_t N, cl_mem dotProduct, size_t offDP, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZdrot)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_double C, cl_double S, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZdscal)(size_t N, cl_double alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZgbmv)(clblasOrder order, clblasTranspose trans, size_t M, size_t N, size_t KL, size_t KU, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
extern CL_RUNTIME_EXPORT clblasStatus (*clblasZgemm)(clblasOrder order, clblasTranspose transA, clblasTranspose transB, size_t M, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZgemv)(clblasOrder order, clblasTranspose transA, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem x, size_t offx, int incx, DoubleComplex beta, cl_mem y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZgerc)(clblasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZgeru)(clblasOrder order, size_t M, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZhbmv)(clblasOrder order, clblasUplo uplo, size_t N, size_t K, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZhemm)(clblasOrder order, clblasSide side, clblasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZhemv)(clblasOrder order, clblasUplo uplo, size_t N, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem X, size_t offx, int incx, DoubleComplex beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZher)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZher2)(clblasOrder order, clblasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem A, size_t offa, size_t lda, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZher2k)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZherk)(clblasOrder order, clblasUplo uplo, clblasTranspose transA, size_t N, size_t K, double alpha, const cl_mem A, size_t offa, size_t lda, double beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZhpmv)(clblasOrder order, clblasUplo uplo, size_t N, cl_double2 alpha, const cl_mem AP, size_t offa, const cl_mem X, size_t offx, int incx, cl_double2 beta, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZhpr)(clblasOrder order, clblasUplo uplo, size_t N, cl_double alpha, const cl_mem X, size_t offx, int incx, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZhpr2)(clblasOrder order, clblasUplo uplo, size_t N, cl_double2 alpha, const cl_mem X, size_t offx, int incx, const cl_mem Y, size_t offy, int incy, cl_mem AP, size_t offa, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZrotg)(cl_mem CA, size_t offCA, cl_mem CB, size_t offCB, cl_mem C, size_t offC, cl_mem S, size_t offS, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZscal)(size_t N, cl_double2 alpha, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZswap)(size_t N, cl_mem X, size_t offx, int incx, cl_mem Y, size_t offy, int incy, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZsymm)(clblasOrder order, clblasSide side, clblasUplo uplo, size_t M, size_t N, cl_double2 alpha, const cl_mem A, size_t offa, size_t lda, const cl_mem B, size_t offb, size_t ldb, cl_double2 beta, cl_mem C, size_t offc, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZsyr2k)(clblasOrder order, clblasUplo uplo, clblasTranspose transAB, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, const cl_mem B, size_t offB, size_t ldb, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZsyrk)(clblasOrder order, clblasUplo uplo, clblasTranspose transA, size_t N, size_t K, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, DoubleComplex beta, cl_mem C, size_t offC, size_t ldc, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtbmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtbsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, size_t K, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtpmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem AP, size_t offa, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtpsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtrmm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtrmv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtrsm)(clblasOrder order, clblasSide side, clblasUplo uplo, clblasTranspose transA, clblasDiag diag, size_t M, size_t N, DoubleComplex alpha, const cl_mem A, size_t offA, size_t lda, cl_mem B, size_t offB, size_t ldb, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasZtrsv)(clblasOrder order, clblasUplo uplo, clblasTranspose trans, clblasDiag diag, size_t N, const cl_mem A, size_t offa, size_t lda, cl_mem X, size_t offx, int incx, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasiCamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasiDamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasiSamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
//extern CL_RUNTIME_EXPORT clblasStatus (*clblasiZamax)(size_t N, cl_mem iMax, size_t offiMax, const cl_mem X, size_t offx, int incx, cl_mem scratchBuff, cl_uint numCommandQueues, cl_command_queue* commandQueues, cl_uint numEventsInWaitList, const cl_event* eventWaitList, cl_event* events);
|
||||
@@ -0,0 +1,146 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
#ifndef OPENCV_CORE_OCL_RUNTIME_CLAMDFFT_HPP
|
||||
#error "Invalid usage"
|
||||
#endif
|
||||
|
||||
// generated by parser_clfft.py
|
||||
#define clfftBakePlan clfftBakePlan_
|
||||
#define clfftCopyPlan clfftCopyPlan_
|
||||
#define clfftCreateDefaultPlan clfftCreateDefaultPlan_
|
||||
#define clfftDestroyPlan clfftDestroyPlan_
|
||||
#define clfftEnqueueTransform clfftEnqueueTransform_
|
||||
#define clfftGetLayout clfftGetLayout_
|
||||
#define clfftGetPlanBatchSize clfftGetPlanBatchSize_
|
||||
#define clfftGetPlanContext clfftGetPlanContext_
|
||||
#define clfftGetPlanDim clfftGetPlanDim_
|
||||
#define clfftGetPlanDistance clfftGetPlanDistance_
|
||||
#define clfftGetPlanInStride clfftGetPlanInStride_
|
||||
#define clfftGetPlanLength clfftGetPlanLength_
|
||||
#define clfftGetPlanOutStride clfftGetPlanOutStride_
|
||||
#define clfftGetPlanPrecision clfftGetPlanPrecision_
|
||||
#define clfftGetPlanScale clfftGetPlanScale_
|
||||
#define clfftGetPlanTransposeResult clfftGetPlanTransposeResult_
|
||||
#define clfftGetResultLocation clfftGetResultLocation_
|
||||
#define clfftGetTmpBufSize clfftGetTmpBufSize_
|
||||
#define clfftGetVersion clfftGetVersion_
|
||||
#define clfftSetLayout clfftSetLayout_
|
||||
#define clfftSetPlanBatchSize clfftSetPlanBatchSize_
|
||||
#define clfftSetPlanCallback clfftSetPlanCallback_
|
||||
#define clfftSetPlanDim clfftSetPlanDim_
|
||||
#define clfftSetPlanDistance clfftSetPlanDistance_
|
||||
#define clfftSetPlanInStride clfftSetPlanInStride_
|
||||
#define clfftSetPlanLength clfftSetPlanLength_
|
||||
#define clfftSetPlanOutStride clfftSetPlanOutStride_
|
||||
#define clfftSetPlanPrecision clfftSetPlanPrecision_
|
||||
#define clfftSetPlanScale clfftSetPlanScale_
|
||||
#define clfftSetPlanTransposeResult clfftSetPlanTransposeResult_
|
||||
#define clfftSetResultLocation clfftSetResultLocation_
|
||||
#define clfftSetup clfftSetup_
|
||||
#define clfftTeardown clfftTeardown_
|
||||
|
||||
#include <clFFT.h>
|
||||
|
||||
// generated by parser_clfft.py
|
||||
#undef clfftBakePlan
|
||||
#define clfftBakePlan clfftBakePlan_pfn
|
||||
#undef clfftCopyPlan
|
||||
//#define clfftCopyPlan clfftCopyPlan_pfn
|
||||
#undef clfftCreateDefaultPlan
|
||||
#define clfftCreateDefaultPlan clfftCreateDefaultPlan_pfn
|
||||
#undef clfftDestroyPlan
|
||||
#define clfftDestroyPlan clfftDestroyPlan_pfn
|
||||
#undef clfftEnqueueTransform
|
||||
#define clfftEnqueueTransform clfftEnqueueTransform_pfn
|
||||
#undef clfftGetLayout
|
||||
//#define clfftGetLayout clfftGetLayout_pfn
|
||||
#undef clfftGetPlanBatchSize
|
||||
//#define clfftGetPlanBatchSize clfftGetPlanBatchSize_pfn
|
||||
#undef clfftGetPlanContext
|
||||
//#define clfftGetPlanContext clfftGetPlanContext_pfn
|
||||
#undef clfftGetPlanDim
|
||||
//#define clfftGetPlanDim clfftGetPlanDim_pfn
|
||||
#undef clfftGetPlanDistance
|
||||
//#define clfftGetPlanDistance clfftGetPlanDistance_pfn
|
||||
#undef clfftGetPlanInStride
|
||||
//#define clfftGetPlanInStride clfftGetPlanInStride_pfn
|
||||
#undef clfftGetPlanLength
|
||||
//#define clfftGetPlanLength clfftGetPlanLength_pfn
|
||||
#undef clfftGetPlanOutStride
|
||||
//#define clfftGetPlanOutStride clfftGetPlanOutStride_pfn
|
||||
#undef clfftGetPlanPrecision
|
||||
//#define clfftGetPlanPrecision clfftGetPlanPrecision_pfn
|
||||
#undef clfftGetPlanScale
|
||||
//#define clfftGetPlanScale clfftGetPlanScale_pfn
|
||||
#undef clfftGetPlanTransposeResult
|
||||
//#define clfftGetPlanTransposeResult clfftGetPlanTransposeResult_pfn
|
||||
#undef clfftGetResultLocation
|
||||
//#define clfftGetResultLocation clfftGetResultLocation_pfn
|
||||
#undef clfftGetTmpBufSize
|
||||
#define clfftGetTmpBufSize clfftGetTmpBufSize_pfn
|
||||
#undef clfftGetVersion
|
||||
#define clfftGetVersion clfftGetVersion_pfn
|
||||
#undef clfftSetLayout
|
||||
#define clfftSetLayout clfftSetLayout_pfn
|
||||
#undef clfftSetPlanBatchSize
|
||||
#define clfftSetPlanBatchSize clfftSetPlanBatchSize_pfn
|
||||
#undef clfftSetPlanCallback
|
||||
//#define clfftSetPlanCallback clfftSetPlanCallback_pfn
|
||||
#undef clfftSetPlanDim
|
||||
//#define clfftSetPlanDim clfftSetPlanDim_pfn
|
||||
#undef clfftSetPlanDistance
|
||||
#define clfftSetPlanDistance clfftSetPlanDistance_pfn
|
||||
#undef clfftSetPlanInStride
|
||||
#define clfftSetPlanInStride clfftSetPlanInStride_pfn
|
||||
#undef clfftSetPlanLength
|
||||
//#define clfftSetPlanLength clfftSetPlanLength_pfn
|
||||
#undef clfftSetPlanOutStride
|
||||
#define clfftSetPlanOutStride clfftSetPlanOutStride_pfn
|
||||
#undef clfftSetPlanPrecision
|
||||
#define clfftSetPlanPrecision clfftSetPlanPrecision_pfn
|
||||
#undef clfftSetPlanScale
|
||||
#define clfftSetPlanScale clfftSetPlanScale_pfn
|
||||
#undef clfftSetPlanTransposeResult
|
||||
//#define clfftSetPlanTransposeResult clfftSetPlanTransposeResult_pfn
|
||||
#undef clfftSetResultLocation
|
||||
#define clfftSetResultLocation clfftSetResultLocation_pfn
|
||||
#undef clfftSetup
|
||||
#define clfftSetup clfftSetup_pfn
|
||||
#undef clfftTeardown
|
||||
#define clfftTeardown clfftTeardown_pfn
|
||||
|
||||
// generated by parser_clfft.py
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftBakePlan)(clfftPlanHandle plHandle, cl_uint numQueues, cl_command_queue* commQueueFFT, void (CL_CALLBACK* pfn_notify) (clfftPlanHandle plHandle, void* user_data), void* user_data);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftCopyPlan)(clfftPlanHandle* out_plHandle, cl_context new_context, clfftPlanHandle in_plHandle);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftCreateDefaultPlan)(clfftPlanHandle* plHandle, cl_context context, const clfftDim dim, const size_t* clLengths);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftDestroyPlan)(clfftPlanHandle* plHandle);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftEnqueueTransform)(clfftPlanHandle plHandle, clfftDirection dir, cl_uint numQueuesAndEvents, cl_command_queue* commQueues, cl_uint numWaitEvents, const cl_event* waitEvents, cl_event* outEvents, cl_mem* inputBuffers, cl_mem* outputBuffers, cl_mem tmpBuffer);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetLayout)(const clfftPlanHandle plHandle, clfftLayout* iLayout, clfftLayout* oLayout);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanBatchSize)(const clfftPlanHandle plHandle, size_t* batchSize);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanContext)(const clfftPlanHandle plHandle, cl_context* context);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanDim)(const clfftPlanHandle plHandle, clfftDim* dim, cl_uint* size);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanDistance)(const clfftPlanHandle plHandle, size_t* iDist, size_t* oDist);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanInStride)(const clfftPlanHandle plHandle, const clfftDim dim, size_t* clStrides);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanLength)(const clfftPlanHandle plHandle, const clfftDim dim, size_t* clLengths);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanOutStride)(const clfftPlanHandle plHandle, const clfftDim dim, size_t* clStrides);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanPrecision)(const clfftPlanHandle plHandle, clfftPrecision* precision);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanScale)(const clfftPlanHandle plHandle, clfftDirection dir, cl_float* scale);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetPlanTransposeResult)(const clfftPlanHandle plHandle, clfftResultTransposed* transposed);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetResultLocation)(const clfftPlanHandle plHandle, clfftResultLocation* placeness);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetTmpBufSize)(const clfftPlanHandle plHandle, size_t* buffersize);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftGetVersion)(cl_uint* major, cl_uint* minor, cl_uint* patch);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetLayout)(clfftPlanHandle plHandle, clfftLayout iLayout, clfftLayout oLayout);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanBatchSize)(clfftPlanHandle plHandle, size_t batchSize);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanCallback)(clfftPlanHandle plHandle, const char* funcName, const char* funcString, int localMemSize, clfftCallbackType callbackType, cl_mem* userdata, int numUserdataBuffers);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanDim)(clfftPlanHandle plHandle, const clfftDim dim);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanDistance)(clfftPlanHandle plHandle, size_t iDist, size_t oDist);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanInStride)(clfftPlanHandle plHandle, const clfftDim dim, size_t* clStrides);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanLength)(clfftPlanHandle plHandle, const clfftDim dim, const size_t* clLengths);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanOutStride)(clfftPlanHandle plHandle, const clfftDim dim, size_t* clStrides);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanPrecision)(clfftPlanHandle plHandle, clfftPrecision precision);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanScale)(clfftPlanHandle plHandle, clfftDirection dir, cl_float scale);
|
||||
//extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetPlanTransposeResult)(clfftPlanHandle plHandle, clfftResultTransposed transposed);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetResultLocation)(clfftPlanHandle plHandle, clfftResultLocation placeness);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftSetup)(const clfftSetupData* setupData);
|
||||
extern CL_RUNTIME_EXPORT clfftStatus (*clfftTeardown)();
|
||||
+1
-1
@@ -46,7 +46,7 @@
|
||||
|
||||
#include "opencl_core.hpp"
|
||||
|
||||
#include "autogenerated/opencl_clamdblas.hpp"
|
||||
#include "autogenerated/opencl_clblas.hpp"
|
||||
|
||||
#endif // HAVE_CLAMDBLAS
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@
|
||||
|
||||
#include "opencl_core.hpp"
|
||||
|
||||
#include "autogenerated/opencl_clamdfft.hpp"
|
||||
#include "autogenerated/opencl_clfft.hpp"
|
||||
|
||||
#endif // HAVE_CLAMDFFT
|
||||
|
||||
@@ -358,7 +358,11 @@ _IplImage
|
||||
needed for correct deallocation */
|
||||
|
||||
#if defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)
|
||||
_IplImage() {}
|
||||
_IplImage()
|
||||
{
|
||||
memset(this, 0, sizeof(*this)); // valid for POD structure
|
||||
nSize = sizeof(IplImage);
|
||||
}
|
||||
_IplImage(const cv::Mat& m) { *this = cvIplImage(m); }
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1128,6 +1128,458 @@ public class Mat {
|
||||
return cols();
|
||||
}
|
||||
|
||||
// javadoc:Mat::at(clazz, row, col)
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> Atable<T> at(Class<T> clazz, int row, int col) {
|
||||
if (clazz == Byte.class || clazz == byte.class) {
|
||||
return (Atable<T>)new AtableByte(this, row, col);
|
||||
} else if (clazz == Double.class || clazz == double.class) {
|
||||
return (Atable<T>)new AtableDouble(this, row, col);
|
||||
} else if (clazz == Float.class || clazz == float.class) {
|
||||
return (Atable<T>)new AtableFloat(this, row, col);
|
||||
} else if (clazz == Integer.class || clazz == int.class) {
|
||||
return (Atable<T>)new AtableInteger(this, row, col);
|
||||
} else if (clazz == Short.class || clazz == short.class) {
|
||||
return (Atable<T>)new AtableShort(this, row, col);
|
||||
} else {
|
||||
throw new RuntimeException("Unsupported class type");
|
||||
}
|
||||
}
|
||||
|
||||
// javadoc:Mat::at(clazz, idx)
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> Atable<T> at(Class<T> clazz, int[] idx) {
|
||||
if (clazz == Byte.class || clazz == byte.class) {
|
||||
return (Atable<T>)new AtableByte(this, idx);
|
||||
} else if (clazz == Double.class || clazz == double.class) {
|
||||
return (Atable<T>)new AtableDouble(this, idx);
|
||||
} else if (clazz == Float.class || clazz == float.class) {
|
||||
return (Atable<T>)new AtableFloat(this, idx);
|
||||
} else if (clazz == Integer.class || clazz == int.class) {
|
||||
return (Atable<T>)new AtableInteger(this, idx);
|
||||
} else if (clazz == Short.class || clazz == short.class) {
|
||||
return (Atable<T>)new AtableShort(this, idx);
|
||||
} else {
|
||||
throw new RuntimeException("Unsupported class parameter");
|
||||
}
|
||||
}
|
||||
|
||||
public static class Tuple2<T> {
|
||||
public Tuple2(T _0, T _1) {
|
||||
this._0 = _0;
|
||||
this._1 = _1;
|
||||
}
|
||||
|
||||
public T get_0() {
|
||||
return _0;
|
||||
}
|
||||
|
||||
public T get_1() {
|
||||
return _1;
|
||||
}
|
||||
|
||||
private final T _0;
|
||||
private final T _1;
|
||||
}
|
||||
|
||||
public static class Tuple3<T> {
|
||||
public Tuple3(T _0, T _1, T _2) {
|
||||
this._0 = _0;
|
||||
this._1 = _1;
|
||||
this._2 = _2;
|
||||
}
|
||||
|
||||
public T get_0() {
|
||||
return _0;
|
||||
}
|
||||
|
||||
public T get_1() {
|
||||
return _1;
|
||||
}
|
||||
|
||||
public T get_2() {
|
||||
return _2;
|
||||
}
|
||||
|
||||
private final T _0;
|
||||
private final T _1;
|
||||
private final T _2;
|
||||
}
|
||||
|
||||
public static class Tuple4<T> {
|
||||
public Tuple4(T _0, T _1, T _2, T _3) {
|
||||
this._0 = _0;
|
||||
this._1 = _1;
|
||||
this._2 = _2;
|
||||
this._3 = _3;
|
||||
}
|
||||
|
||||
public T get_0() {
|
||||
return _0;
|
||||
}
|
||||
|
||||
public T get_1() {
|
||||
return _1;
|
||||
}
|
||||
|
||||
public T get_2() {
|
||||
return _2;
|
||||
}
|
||||
|
||||
public T get_3() {
|
||||
return _3;
|
||||
}
|
||||
|
||||
private final T _0;
|
||||
private final T _1;
|
||||
private final T _2;
|
||||
private final T _3;
|
||||
}
|
||||
|
||||
public interface Atable<T> {
|
||||
T getV();
|
||||
void setV(T v);
|
||||
Tuple2<T> getV2c();
|
||||
void setV2c(Tuple2<T> v);
|
||||
Tuple3<T> getV3c();
|
||||
void setV3c(Tuple3<T> v);
|
||||
Tuple4<T> getV4c();
|
||||
void setV4c(Tuple4<T> v);
|
||||
}
|
||||
|
||||
private static class AtableBase {
|
||||
|
||||
protected AtableBase(Mat mat, int row, int col) {
|
||||
this.mat = mat;
|
||||
indices = new int[2];
|
||||
indices[0] = row;
|
||||
indices[1] = col;
|
||||
}
|
||||
|
||||
protected AtableBase(Mat mat, int[] indices) {
|
||||
this.mat = mat;
|
||||
this.indices = indices;
|
||||
}
|
||||
|
||||
protected final Mat mat;
|
||||
protected final int[] indices;
|
||||
}
|
||||
|
||||
private static class AtableByte extends AtableBase implements Atable<Byte> {
|
||||
|
||||
public AtableByte(Mat mat, int row, int col) {
|
||||
super(mat, row, col);
|
||||
}
|
||||
|
||||
public AtableByte(Mat mat, int[] indices) {
|
||||
super(mat, indices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Byte getV() {
|
||||
byte[] data = new byte[1];
|
||||
mat.get(indices, data);
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV(Byte v) {
|
||||
byte[] data = new byte[] { v };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple2<Byte> getV2c() {
|
||||
byte[] data = new byte[2];
|
||||
mat.get(indices, data);
|
||||
return new Tuple2<Byte>(data[0], data[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV2c(Tuple2<Byte> v) {
|
||||
byte[] data = new byte[] { v._0, v._1 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple3<Byte> getV3c() {
|
||||
byte[] data = new byte[3];
|
||||
mat.get(indices, data);
|
||||
return new Tuple3<Byte>(data[0], data[1], data[2]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV3c(Tuple3<Byte> v) {
|
||||
byte[] data = new byte[] { v._0, v._1, v._2 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple4<Byte> getV4c() {
|
||||
byte[] data = new byte[4];
|
||||
mat.get(indices, data);
|
||||
return new Tuple4<Byte>(data[0], data[1], data[2], data[3]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV4c(Tuple4<Byte> v) {
|
||||
byte[] data = new byte[] { v._0, v._1, v._2, v._3 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
}
|
||||
|
||||
private static class AtableDouble extends AtableBase implements Atable<Double> {
|
||||
|
||||
public AtableDouble(Mat mat, int row, int col) {
|
||||
super(mat, row, col);
|
||||
}
|
||||
|
||||
public AtableDouble(Mat mat, int[] indices) {
|
||||
super(mat, indices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getV() {
|
||||
double[] data = new double[1];
|
||||
mat.get(indices, data);
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV(Double v) {
|
||||
double[] data = new double[] { v };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple2<Double> getV2c() {
|
||||
double[] data = new double[2];
|
||||
mat.get(indices, data);
|
||||
return new Tuple2<Double>(data[0], data[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV2c(Tuple2<Double> v) {
|
||||
double[] data = new double[] { v._0, v._1 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple3<Double> getV3c() {
|
||||
double[] data = new double[3];
|
||||
mat.get(indices, data);
|
||||
return new Tuple3<Double>(data[0], data[1], data[2]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV3c(Tuple3<Double> v) {
|
||||
double[] data = new double[] { v._0, v._1, v._2 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple4<Double> getV4c() {
|
||||
double[] data = new double[4];
|
||||
mat.get(indices, data);
|
||||
return new Tuple4<Double>(data[0], data[1], data[2], data[3]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV4c(Tuple4<Double> v) {
|
||||
double[] data = new double[] { v._0, v._1, v._2, v._3 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
}
|
||||
|
||||
private static class AtableFloat extends AtableBase implements Atable<Float> {
|
||||
|
||||
public AtableFloat(Mat mat, int row, int col) {
|
||||
super(mat, row, col);
|
||||
}
|
||||
|
||||
public AtableFloat(Mat mat, int[] indices) {
|
||||
super(mat, indices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float getV() {
|
||||
float[] data = new float[1];
|
||||
mat.get(indices, data);
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV(Float v) {
|
||||
float[] data = new float[] { v };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple2<Float> getV2c() {
|
||||
float[] data = new float[2];
|
||||
mat.get(indices, data);
|
||||
return new Tuple2<Float>(data[0], data[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV2c(Tuple2<Float> v) {
|
||||
float[] data = new float[] { v._0, v._1 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple3<Float> getV3c() {
|
||||
float[] data = new float[3];
|
||||
mat.get(indices, data);
|
||||
return new Tuple3<Float>(data[0], data[1], data[2]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV3c(Tuple3<Float> v) {
|
||||
float[] data = new float[] { v._0, v._1, v._2 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple4<Float> getV4c() {
|
||||
float[] data = new float[4];
|
||||
mat.get(indices, data);
|
||||
return new Tuple4<Float>(data[0], data[1], data[2], data[3]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV4c(Tuple4<Float> v) {
|
||||
double[] data = new double[] { v._0, v._1, v._2, v._3 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
}
|
||||
|
||||
private static class AtableInteger extends AtableBase implements Atable<Integer> {
|
||||
|
||||
public AtableInteger(Mat mat, int row, int col) {
|
||||
super(mat, row, col);
|
||||
}
|
||||
|
||||
public AtableInteger(Mat mat, int[] indices) {
|
||||
super(mat, indices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getV() {
|
||||
int[] data = new int[1];
|
||||
mat.get(indices, data);
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV(Integer v) {
|
||||
int[] data = new int[] { v };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple2<Integer> getV2c() {
|
||||
int[] data = new int[2];
|
||||
mat.get(indices, data);
|
||||
return new Tuple2<Integer>(data[0], data[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV2c(Tuple2<Integer> v) {
|
||||
int[] data = new int[] { v._0, v._1 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple3<Integer> getV3c() {
|
||||
int[] data = new int[3];
|
||||
mat.get(indices, data);
|
||||
return new Tuple3<Integer>(data[0], data[1], data[2]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV3c(Tuple3<Integer> v) {
|
||||
int[] data = new int[] { v._0, v._1, v._2 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple4<Integer> getV4c() {
|
||||
int[] data = new int[4];
|
||||
mat.get(indices, data);
|
||||
return new Tuple4<Integer>(data[0], data[1], data[2], data[3]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV4c(Tuple4<Integer> v) {
|
||||
int[] data = new int[] { v._0, v._1, v._2, v._3 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
}
|
||||
|
||||
private static class AtableShort extends AtableBase implements Atable<Short> {
|
||||
|
||||
public AtableShort(Mat mat, int row, int col) {
|
||||
super(mat, row, col);
|
||||
}
|
||||
|
||||
public AtableShort(Mat mat, int[] indices) {
|
||||
super(mat, indices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Short getV() {
|
||||
short[] data = new short[1];
|
||||
mat.get(indices, data);
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV(Short v) {
|
||||
short[] data = new short[] { v };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple2<Short> getV2c() {
|
||||
short[] data = new short[2];
|
||||
mat.get(indices, data);
|
||||
return new Tuple2<Short>(data[0], data[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV2c(Tuple2<Short> v) {
|
||||
short[] data = new short[] { v._0, v._1 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple3<Short> getV3c() {
|
||||
short[] data = new short[3];
|
||||
mat.get(indices, data);
|
||||
return new Tuple3<Short>(data[0], data[1], data[2]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV3c(Tuple3<Short> v) {
|
||||
short[] data = new short[] { v._0, v._1, v._2 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tuple4<Short> getV4c() {
|
||||
short[] data = new short[4];
|
||||
mat.get(indices, data);
|
||||
return new Tuple4<Short>(data[0], data[1], data[2], data[3]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setV4c(Tuple4<Short> v) {
|
||||
short[] data = new short[] { v._0, v._1, v._2, v._3 };
|
||||
mat.put(indices, data);
|
||||
}
|
||||
}
|
||||
|
||||
// javadoc:Mat::getNativeObjAddr()
|
||||
public long getNativeObjAddr() {
|
||||
return nativeObj;
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
package org.opencv.core
|
||||
|
||||
import org.opencv.core.Mat.*
|
||||
import java.lang.RuntimeException
|
||||
|
||||
/***
|
||||
* Example use:
|
||||
*
|
||||
* val (b, g, r) = mat.at<UByte>(50, 50).v3c
|
||||
* mat.at<UByte>(50, 50).val = T3(245u, 113u, 34u)
|
||||
*
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
inline fun <reified T> Mat.at(row: Int, col: Int) : Atable<T> =
|
||||
when (T::class) {
|
||||
Byte::class, Double::class, Float::class, Int::class, Short::class -> this.at(
|
||||
T::class.java,
|
||||
row,
|
||||
col
|
||||
)
|
||||
UByte::class -> AtableUByte(this, row, col) as Atable<T>
|
||||
else -> throw RuntimeException("Unsupported class type")
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
inline fun <reified T> Mat.at(idx: IntArray) : Atable<T> =
|
||||
when (T::class) {
|
||||
Byte::class, Double::class, Float::class, Int::class, Short::class -> this.at(
|
||||
T::class.java,
|
||||
idx
|
||||
)
|
||||
UByte::class -> AtableUByte(this, idx) as Atable<T>
|
||||
else -> throw RuntimeException("Unsupported class type")
|
||||
}
|
||||
|
||||
class AtableUByte(val mat: Mat, val indices: IntArray): Atable<UByte> {
|
||||
|
||||
constructor(mat: Mat, row: Int, col: Int) : this(mat, intArrayOf(row, col))
|
||||
|
||||
override fun getV(): UByte {
|
||||
val data = ByteArray(1)
|
||||
mat[indices, data]
|
||||
return data[0].toUByte()
|
||||
}
|
||||
|
||||
override fun setV(v: UByte) {
|
||||
val data = byteArrayOf(v.toByte())
|
||||
mat.put(indices, data)
|
||||
}
|
||||
|
||||
override fun getV2c(): Tuple2<UByte> {
|
||||
val data = ByteArray(2)
|
||||
mat[indices, data]
|
||||
return Tuple2(data[0].toUByte(), data[1].toUByte())
|
||||
}
|
||||
|
||||
override fun setV2c(v: Tuple2<UByte>) {
|
||||
val data = byteArrayOf(v._0.toByte(), v._1.toByte())
|
||||
mat.put(indices, data)
|
||||
}
|
||||
|
||||
override fun getV3c(): Tuple3<UByte> {
|
||||
val data = ByteArray(3)
|
||||
mat[indices, data]
|
||||
return Tuple3(data[0].toUByte(), data[1].toUByte(), data[2].toUByte())
|
||||
}
|
||||
|
||||
override fun setV3c(v: Tuple3<UByte>) {
|
||||
val data = byteArrayOf(v._0.toByte(), v._1.toByte(), v._2.toByte())
|
||||
mat.put(indices, data)
|
||||
}
|
||||
|
||||
override fun getV4c(): Tuple4<UByte> {
|
||||
val data = ByteArray(4)
|
||||
mat[indices, data]
|
||||
return Tuple4(data[0].toUByte(), data[1].toUByte(), data[2].toUByte(), data[3].toUByte())
|
||||
}
|
||||
|
||||
override fun setV4c(v: Tuple4<UByte>) {
|
||||
val data = byteArrayOf(v._0.toByte(), v._1.toByte(), v._2.toByte(), v._3.toByte())
|
||||
mat.put(indices, data)
|
||||
}
|
||||
}
|
||||
|
||||
operator fun <T> Tuple2<T>.component1(): T = this._0
|
||||
operator fun <T> Tuple2<T>.component2(): T = this._1
|
||||
|
||||
operator fun <T> Tuple3<T>.component1(): T = this._0
|
||||
operator fun <T> Tuple3<T>.component2(): T = this._1
|
||||
operator fun <T> Tuple3<T>.component3(): T = this._2
|
||||
|
||||
operator fun <T> Tuple4<T>.component1(): T = this._0
|
||||
operator fun <T> Tuple4<T>.component2(): T = this._1
|
||||
operator fun <T> Tuple4<T>.component3(): T = this._2
|
||||
operator fun <T> Tuple4<T>.component4(): T = this._3
|
||||
|
||||
fun <T> T2(_0: T, _1: T) : Tuple2<T> = Tuple2(_0, _1)
|
||||
fun <T> T3(_0: T, _1: T, _2: T) : Tuple3<T> = Tuple3(_0, _1, _2)
|
||||
fun <T> T4(_0: T, _1: T, _2: T, _3: T) : Tuple4<T> = Tuple4(_0, _1, _2, _3)
|
||||
@@ -1285,4 +1285,31 @@ public class MatTest extends OpenCVTestCase {
|
||||
assertEquals(5, bbuf.get(63*80 + 63));
|
||||
}
|
||||
|
||||
public void testMatAt() {
|
||||
Mat uc1 = new Mat(2, 3, CvType.CV_8S) {
|
||||
{
|
||||
put(0, 0, 1, 2, 3);
|
||||
put(1, 0, 4, 5, 6);
|
||||
}
|
||||
};
|
||||
assertEquals((byte)1, uc1.at(Byte.class, 0, 0).getV().byteValue());
|
||||
assertEquals((byte)2, uc1.at(Byte.class, 0, 1).getV().byteValue());
|
||||
assertEquals((byte)3, uc1.at(Byte.class, 0, 2).getV().byteValue());
|
||||
assertEquals((byte)4, uc1.at(Byte.class, 1, 0).getV().byteValue());
|
||||
assertEquals((byte)5, uc1.at(Byte.class, 1, 1).getV().byteValue());
|
||||
assertEquals((byte)6, uc1.at(Byte.class, 1, 2).getV().byteValue());
|
||||
uc1.at(Byte.class, 0, 0).setV((byte)7);
|
||||
uc1.at(Byte.class, 0, 1).setV((byte)8);
|
||||
uc1.at(Byte.class, 0, 2).setV((byte)9);
|
||||
uc1.at(Byte.class, 1, 0).setV((byte)10);
|
||||
uc1.at(Byte.class, 1, 1).setV((byte)11);
|
||||
uc1.at(Byte.class, 1, 2).setV((byte)12);
|
||||
byte[] data = new byte[6];
|
||||
uc1.get(0, 0, data);
|
||||
assertArrayEquals(data, new byte[] {7, 8, 9, 10, 11, 12});
|
||||
Mat.Tuple3<Byte> bgr = rgbLena.at(Byte.class, 0, 0).getV3c();
|
||||
assertEquals(bgr.get_0().byteValue(), (byte)128);
|
||||
assertEquals(bgr.get_1().byteValue(), (byte)138);
|
||||
assertEquals(bgr.get_2().byteValue(), (byte)225);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,10 @@ func throwIncompatibleBufferSize(count: Int, channels: Int32) throws {
|
||||
)
|
||||
}
|
||||
|
||||
public typealias T2<T> = (T, T)
|
||||
public typealias T3<T> = (T, T, T)
|
||||
public typealias T4<T> = (T, T, T, T)
|
||||
|
||||
public extension Mat {
|
||||
|
||||
convenience init(rows:Int32, cols:Int32, type:Int32, data:[Int8]) {
|
||||
@@ -242,3 +246,350 @@ public extension Mat {
|
||||
return __get(indices as [NSNumber]) as! [Double]
|
||||
}
|
||||
}
|
||||
|
||||
public protocol Atable {
|
||||
static func getAt(m: Mat, indices:[Int32]) -> Self
|
||||
static func putAt(m: Mat, indices:[Int32], v: Self)
|
||||
static func getAt2c(m: Mat, indices:[Int32]) -> (Self, Self)
|
||||
static func putAt2c(m: Mat, indices:[Int32], v: (Self, Self))
|
||||
static func getAt3c(m: Mat, indices:[Int32]) -> (Self, Self, Self)
|
||||
static func putAt3c(m: Mat, indices:[Int32], v: (Self, Self, Self))
|
||||
static func getAt4c(m: Mat, indices:[Int32]) -> (Self, Self, Self, Self)
|
||||
static func putAt4c(m: Mat, indices:[Int32], v: (Self, Self, Self, Self))
|
||||
}
|
||||
|
||||
public class MatAt<N: Atable> {
|
||||
|
||||
init(mat: Mat, indices: [Int32]) {
|
||||
self.mat = mat
|
||||
self.indices = indices
|
||||
}
|
||||
|
||||
private let mat: Mat
|
||||
private let indices: [Int32]
|
||||
public var v: N {
|
||||
get {
|
||||
return N.getAt(m: mat, indices: indices)
|
||||
}
|
||||
set(value) {
|
||||
N.putAt(m: mat, indices: indices, v: value)
|
||||
}
|
||||
}
|
||||
public var v2c: (N, N) {
|
||||
get {
|
||||
return N.getAt2c(m: mat, indices: indices)
|
||||
}
|
||||
set(value) {
|
||||
N.putAt2c(m: mat, indices: indices, v: value)
|
||||
}
|
||||
}
|
||||
public var v3c: (N, N, N) {
|
||||
get {
|
||||
return N.getAt3c(m: mat, indices: indices)
|
||||
}
|
||||
set(value) {
|
||||
N.putAt3c(m: mat, indices: indices, v: value)
|
||||
}
|
||||
}
|
||||
public var v4c: (N, N, N, N) {
|
||||
get {
|
||||
return N.getAt4c(m: mat, indices: indices)
|
||||
}
|
||||
set(value) {
|
||||
N.putAt4c(m: mat, indices: indices, v: value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension UInt8: Atable {
|
||||
public static func getAt(m: Mat, indices:[Int32]) -> UInt8 {
|
||||
var tmp = [Int8](repeating: 0, count: 1)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return UInt8(bitPattern: tmp[0])
|
||||
}
|
||||
|
||||
public static func putAt(m: Mat, indices: [Int32], v: UInt8) {
|
||||
let tmp = [Int8(bitPattern: v)]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt2c(m: Mat, indices:[Int32]) -> (UInt8, UInt8) {
|
||||
var tmp = [Int8](repeating: 0, count: 2)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (UInt8(bitPattern: tmp[0]), UInt8(bitPattern: tmp[1]))
|
||||
}
|
||||
|
||||
public static func putAt2c(m: Mat, indices: [Int32], v: (UInt8, UInt8)) {
|
||||
let tmp = [Int8(bitPattern: v.0), Int8(bitPattern: v.1)]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt3c(m: Mat, indices:[Int32]) -> (UInt8, UInt8, UInt8) {
|
||||
var tmp = [Int8](repeating: 0, count: 3)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (UInt8(bitPattern: tmp[0]), UInt8(bitPattern: tmp[1]), UInt8(bitPattern: tmp[2]))
|
||||
}
|
||||
|
||||
public static func putAt3c(m: Mat, indices: [Int32], v: (UInt8, UInt8, UInt8)) {
|
||||
let tmp = [Int8(bitPattern: v.0), Int8(bitPattern: v.1), Int8(bitPattern: v.2)]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt4c(m: Mat, indices:[Int32]) -> (UInt8, UInt8, UInt8, UInt8) {
|
||||
var tmp = [Int8](repeating: 0, count: 4)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (UInt8(bitPattern: tmp[0]), UInt8(bitPattern: tmp[1]), UInt8(bitPattern: tmp[2]), UInt8(bitPattern: tmp[3]))
|
||||
}
|
||||
|
||||
public static func putAt4c(m: Mat, indices: [Int32], v: (UInt8, UInt8, UInt8, UInt8)) {
|
||||
let tmp = [Int8(bitPattern: v.0), Int8(bitPattern: v.1), Int8(bitPattern: v.2), Int8(bitPattern: v.3)]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
}
|
||||
|
||||
extension Int8: Atable {
|
||||
public static func getAt(m: Mat, indices:[Int32]) -> Int8 {
|
||||
var tmp = [Int8](repeating: 0, count: 1)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return tmp[0]
|
||||
}
|
||||
|
||||
public static func putAt(m: Mat, indices: [Int32], v: Int8) {
|
||||
let tmp = [v]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt2c(m: Mat, indices:[Int32]) -> (Int8, Int8) {
|
||||
var tmp = [Int8](repeating: 0, count: 2)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1])
|
||||
}
|
||||
|
||||
public static func putAt2c(m: Mat, indices: [Int32], v: (Int8, Int8)) {
|
||||
let tmp = [v.0, v.1]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt3c(m: Mat, indices:[Int32]) -> (Int8, Int8, Int8) {
|
||||
var tmp = [Int8](repeating: 0, count: 3)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2])
|
||||
}
|
||||
|
||||
public static func putAt3c(m: Mat, indices: [Int32], v: (Int8, Int8, Int8)) {
|
||||
let tmp = [v.0, v.1, v.2]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt4c(m: Mat, indices:[Int32]) -> (Int8, Int8, Int8, Int8) {
|
||||
var tmp = [Int8](repeating: 0, count: 4)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2], tmp[3])
|
||||
}
|
||||
|
||||
public static func putAt4c(m: Mat, indices: [Int32], v: (Int8, Int8, Int8, Int8)) {
|
||||
let tmp = [v.0, v.1, v.2, v.3]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
}
|
||||
|
||||
extension Double: Atable {
|
||||
public static func getAt(m: Mat, indices:[Int32]) -> Double {
|
||||
var tmp = [Double](repeating: 0, count: 1)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return tmp[0]
|
||||
}
|
||||
|
||||
public static func putAt(m: Mat, indices: [Int32], v: Double) {
|
||||
let tmp = [v]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt2c(m: Mat, indices:[Int32]) -> (Double, Double) {
|
||||
var tmp = [Double](repeating: 0, count: 2)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1])
|
||||
}
|
||||
|
||||
public static func putAt2c(m: Mat, indices: [Int32], v: (Double, Double)) {
|
||||
let tmp = [v.0, v.1]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt3c(m: Mat, indices:[Int32]) -> (Double, Double, Double) {
|
||||
var tmp = [Double](repeating: 0, count: 3)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2])
|
||||
}
|
||||
|
||||
public static func putAt3c(m: Mat, indices: [Int32], v: (Double, Double, Double)) {
|
||||
let tmp = [v.0, v.1, v.2]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt4c(m: Mat, indices:[Int32]) -> (Double, Double, Double, Double) {
|
||||
var tmp = [Double](repeating: 0, count: 4)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2], tmp[3])
|
||||
}
|
||||
|
||||
public static func putAt4c(m: Mat, indices: [Int32], v: (Double, Double, Double, Double)) {
|
||||
let tmp = [v.0, v.1, v.2, v.3]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
}
|
||||
|
||||
extension Float: Atable {
|
||||
public static func getAt(m: Mat, indices:[Int32]) -> Float {
|
||||
var tmp = [Float](repeating: 0, count: 1)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return tmp[0]
|
||||
}
|
||||
|
||||
public static func putAt(m: Mat, indices: [Int32], v: Float) {
|
||||
let tmp = [v]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt2c(m: Mat, indices:[Int32]) -> (Float, Float) {
|
||||
var tmp = [Float](repeating: 0, count: 2)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1])
|
||||
}
|
||||
|
||||
public static func putAt2c(m: Mat, indices: [Int32], v: (Float, Float)) {
|
||||
let tmp = [v.0, v.1]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt3c(m: Mat, indices:[Int32]) -> (Float, Float, Float) {
|
||||
var tmp = [Float](repeating: 0, count: 3)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2])
|
||||
}
|
||||
|
||||
public static func putAt3c(m: Mat, indices: [Int32], v: (Float, Float, Float)) {
|
||||
let tmp = [v.0, v.1, v.2]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt4c(m: Mat, indices:[Int32]) -> (Float, Float, Float, Float) {
|
||||
var tmp = [Float](repeating: 0, count: 4)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2], tmp[3])
|
||||
}
|
||||
|
||||
public static func putAt4c(m: Mat, indices: [Int32], v: (Float, Float, Float, Float)) {
|
||||
let tmp = [v.0, v.1, v.2, v.3]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
}
|
||||
|
||||
extension Int32: Atable {
|
||||
public static func getAt(m: Mat, indices:[Int32]) -> Int32 {
|
||||
var tmp = [Int32](repeating: 0, count: 1)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return tmp[0]
|
||||
}
|
||||
|
||||
public static func putAt(m: Mat, indices: [Int32], v: Int32) {
|
||||
let tmp = [v]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt2c(m: Mat, indices:[Int32]) -> (Int32, Int32) {
|
||||
var tmp = [Int32](repeating: 0, count: 2)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1])
|
||||
}
|
||||
|
||||
public static func putAt2c(m: Mat, indices: [Int32], v: (Int32, Int32)) {
|
||||
let tmp = [v.0, v.1]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt3c(m: Mat, indices:[Int32]) -> (Int32, Int32, Int32) {
|
||||
var tmp = [Int32](repeating: 0, count: 3)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2])
|
||||
}
|
||||
|
||||
public static func putAt3c(m: Mat, indices: [Int32], v: (Int32, Int32, Int32)) {
|
||||
let tmp = [v.0, v.1, v.2]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt4c(m: Mat, indices:[Int32]) -> (Int32, Int32, Int32, Int32) {
|
||||
var tmp = [Int32](repeating: 0, count: 4)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2], tmp[3])
|
||||
}
|
||||
|
||||
public static func putAt4c(m: Mat, indices: [Int32], v: (Int32, Int32, Int32, Int32)) {
|
||||
let tmp = [v.0, v.1, v.2, v.3]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
}
|
||||
|
||||
extension Int16: Atable {
|
||||
public static func getAt(m: Mat, indices:[Int32]) -> Int16 {
|
||||
var tmp = [Int16](repeating: 0, count: 1)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return tmp[0]
|
||||
}
|
||||
|
||||
public static func putAt(m: Mat, indices: [Int32], v: Int16) {
|
||||
let tmp = [v]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt2c(m: Mat, indices:[Int32]) -> (Int16, Int16) {
|
||||
var tmp = [Int16](repeating: 0, count: 2)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1])
|
||||
}
|
||||
|
||||
public static func putAt2c(m: Mat, indices: [Int32], v: (Int16, Int16)) {
|
||||
let tmp = [v.0, v.1]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt3c(m: Mat, indices:[Int32]) -> (Int16, Int16, Int16) {
|
||||
var tmp = [Int16](repeating: 0, count: 3)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2])
|
||||
}
|
||||
|
||||
public static func putAt3c(m: Mat, indices: [Int32], v: (Int16, Int16, Int16)) {
|
||||
let tmp = [v.0, v.1, v.2]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
|
||||
public static func getAt4c(m: Mat, indices:[Int32]) -> (Int16, Int16, Int16, Int16) {
|
||||
var tmp = [Int16](repeating: 0, count: 4)
|
||||
try! m.get(indices: indices, data: &tmp)
|
||||
return (tmp[0], tmp[1], tmp[2], tmp[3])
|
||||
}
|
||||
|
||||
public static func putAt4c(m: Mat, indices: [Int32], v: (Int16, Int16, Int16, Int16)) {
|
||||
let tmp = [v.0, v.1, v.2, v.3]
|
||||
try! m.put(indices: indices, data: tmp)
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* Example use:
|
||||
*
|
||||
* let elemantVal: UInt8 = mat.at(row: 50, col: 50).v
|
||||
* mat.at(row: 50, col: 50).v = 245
|
||||
*
|
||||
*/
|
||||
public extension Mat {
|
||||
func at<N: Atable>(row: Int32, col: Int32) -> MatAt<N> {
|
||||
return MatAt(mat: self, indices: [row, col])
|
||||
}
|
||||
|
||||
func at<N: Atable>(indices:[Int32]) -> MatAt<N> {
|
||||
return MatAt(mat: self, indices: indices)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1143,4 +1143,28 @@ class MatTests: OpenCVTestCase {
|
||||
XCTAssertEqual(5, bufferOut[63*80 + 63])
|
||||
}
|
||||
|
||||
func testMatAt() {
|
||||
let uc1 = Mat(rows: 2, cols: 3, type: CvType.CV_8U)
|
||||
try! uc1.put(row: 0, col: 0, data: [1, 2, 3, 4, 5, 6] as [Int8])
|
||||
XCTAssertEqual(UInt8(1), uc1.at(row: 0, col: 0).v)
|
||||
XCTAssertEqual(UInt8(2), uc1.at(row: 0, col: 1).v)
|
||||
XCTAssertEqual(UInt8(3), uc1.at(row: 0, col: 2).v)
|
||||
XCTAssertEqual(UInt8(4), uc1.at(row: 1, col: 0).v)
|
||||
XCTAssertEqual(UInt8(5), uc1.at(row: 1, col: 1).v)
|
||||
XCTAssertEqual(UInt8(6), uc1.at(row: 1, col: 2).v)
|
||||
uc1.at(row: 0, col: 0).v = UInt8(7)
|
||||
uc1.at(row: 0, col: 1).v = UInt8(8)
|
||||
uc1.at(row: 0, col: 2).v = UInt8(9)
|
||||
uc1.at(row: 1, col: 0).v = UInt8(10)
|
||||
uc1.at(row: 1, col: 1).v = UInt8(11)
|
||||
uc1.at(row: 1, col: 2).v = UInt8(12)
|
||||
var data = [Int8](repeating: 0, count: 6)
|
||||
try! uc1.get(row: 0, col: 0, data: &data)
|
||||
XCTAssertEqual(data, [7, 8, 9, 10, 11, 12] as [Int8])
|
||||
let (b, g, r): T3<UInt8> = rgbLena.at(row: 0, col: 0).v3c
|
||||
XCTAssertEqual(b, UInt8(128))
|
||||
XCTAssertEqual(g, UInt8(138))
|
||||
XCTAssertEqual(r, UInt8(225))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,25 +12,33 @@
|
||||
namespace opencv_test {
|
||||
namespace ocl {
|
||||
|
||||
typedef TestBaseWithParam<tuple<cv::Size, bool> > UsageFlagsBoolFixture;
|
||||
typedef TestBaseWithParam<tuple<cv::Size, UMatUsageFlags, UMatUsageFlags, UMatUsageFlags>> SizeUsageFlagsFixture;
|
||||
|
||||
OCL_PERF_TEST_P(UsageFlagsBoolFixture, UsageFlags_AllocHostMem, ::testing::Combine(OCL_TEST_SIZES, Bool()))
|
||||
OCL_PERF_TEST_P(SizeUsageFlagsFixture, UsageFlags_AllocMem,
|
||||
::testing::Combine(
|
||||
OCL_TEST_SIZES,
|
||||
testing::Values(USAGE_DEFAULT, USAGE_ALLOCATE_HOST_MEMORY, USAGE_ALLOCATE_DEVICE_MEMORY), // USAGE_ALLOCATE_SHARED_MEMORY
|
||||
testing::Values(USAGE_DEFAULT, USAGE_ALLOCATE_HOST_MEMORY, USAGE_ALLOCATE_DEVICE_MEMORY), // USAGE_ALLOCATE_SHARED_MEMORY
|
||||
testing::Values(USAGE_DEFAULT, USAGE_ALLOCATE_HOST_MEMORY, USAGE_ALLOCATE_DEVICE_MEMORY) // USAGE_ALLOCATE_SHARED_MEMORY
|
||||
))
|
||||
{
|
||||
Size sz = get<0>(GetParam());
|
||||
bool allocHostMem = get<1>(GetParam());
|
||||
UMatUsageFlags srcAllocMem = get<1>(GetParam());
|
||||
UMatUsageFlags dstAllocMem = get<2>(GetParam());
|
||||
UMatUsageFlags finalAllocMem = get<3>(GetParam());
|
||||
|
||||
UMat src(sz, CV_8UC1, Scalar::all(128));
|
||||
UMat src(sz, CV_8UC1, Scalar::all(128), srcAllocMem);
|
||||
|
||||
OCL_TEST_CYCLE()
|
||||
{
|
||||
UMat dst(allocHostMem ? USAGE_ALLOCATE_HOST_MEMORY : USAGE_DEFAULT);
|
||||
UMat dst(dstAllocMem);
|
||||
|
||||
cv::add(src, Scalar::all(1), dst);
|
||||
{
|
||||
Mat canvas = dst.getMat(ACCESS_RW);
|
||||
cv::putText(canvas, "Test", Point(20, 20), FONT_HERSHEY_PLAIN, 1, Scalar::all(255));
|
||||
}
|
||||
UMat final;
|
||||
UMat final(finalAllocMem);
|
||||
cv::subtract(dst, Scalar::all(1), final);
|
||||
}
|
||||
|
||||
|
||||
@@ -80,15 +80,15 @@ int getTypeFromDXGI_FORMAT(const int iDXGI_FORMAT)
|
||||
case DXGI_FORMAT_R32G32B32_UINT:
|
||||
case DXGI_FORMAT_R32G32B32_SINT: return CV_32SC3;
|
||||
//case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
||||
//case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
||||
case DXGI_FORMAT_R16G16B16A16_FLOAT: return CV_16FC4;
|
||||
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
||||
case DXGI_FORMAT_R16G16B16A16_UINT: return CV_16UC4;
|
||||
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
||||
case DXGI_FORMAT_R16G16B16A16_SINT: return CV_16SC4;
|
||||
//case DXGI_FORMAT_R32G32_TYPELESS:
|
||||
//case DXGI_FORMAT_R32G32_FLOAT:
|
||||
//case DXGI_FORMAT_R32G32_UINT:
|
||||
//case DXGI_FORMAT_R32G32_SINT:
|
||||
case DXGI_FORMAT_R32G32_FLOAT: return CV_32FC2;
|
||||
case DXGI_FORMAT_R32G32_UINT:
|
||||
case DXGI_FORMAT_R32G32_SINT: return CV_32SC2;
|
||||
//case DXGI_FORMAT_R32G8X24_TYPELESS:
|
||||
//case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
||||
//case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
||||
@@ -104,13 +104,13 @@ int getTypeFromDXGI_FORMAT(const int iDXGI_FORMAT)
|
||||
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
||||
case DXGI_FORMAT_R8G8B8A8_SINT: return CV_8SC4;
|
||||
//case DXGI_FORMAT_R16G16_TYPELESS:
|
||||
//case DXGI_FORMAT_R16G16_FLOAT:
|
||||
case DXGI_FORMAT_R16G16_FLOAT: return CV_16FC2;
|
||||
case DXGI_FORMAT_R16G16_UNORM:
|
||||
case DXGI_FORMAT_R16G16_UINT: return CV_16UC2;
|
||||
case DXGI_FORMAT_R16G16_SNORM:
|
||||
case DXGI_FORMAT_R16G16_SINT: return CV_16SC2;
|
||||
//case DXGI_FORMAT_R32_TYPELESS:
|
||||
//case DXGI_FORMAT_D32_FLOAT:
|
||||
case DXGI_FORMAT_D32_FLOAT:
|
||||
case DXGI_FORMAT_R32_FLOAT: return CV_32FC1;
|
||||
case DXGI_FORMAT_R32_UINT:
|
||||
case DXGI_FORMAT_R32_SINT: return CV_32SC1;
|
||||
@@ -124,7 +124,7 @@ int getTypeFromDXGI_FORMAT(const int iDXGI_FORMAT)
|
||||
case DXGI_FORMAT_R8G8_SNORM:
|
||||
case DXGI_FORMAT_R8G8_SINT: return CV_8SC2;
|
||||
//case DXGI_FORMAT_R16_TYPELESS:
|
||||
//case DXGI_FORMAT_R16_FLOAT:
|
||||
case DXGI_FORMAT_R16_FLOAT: return CV_16FC1;
|
||||
case DXGI_FORMAT_D16_UNORM:
|
||||
case DXGI_FORMAT_R16_UNORM:
|
||||
case DXGI_FORMAT_R16_UINT: return CV_16UC1;
|
||||
@@ -138,8 +138,8 @@ int getTypeFromDXGI_FORMAT(const int iDXGI_FORMAT)
|
||||
case DXGI_FORMAT_A8_UNORM: return CV_8UC1;
|
||||
//case DXGI_FORMAT_R1_UNORM:
|
||||
//case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
|
||||
//case DXGI_FORMAT_R8G8_B8G8_UNORM:
|
||||
//case DXGI_FORMAT_G8R8_G8B8_UNORM:
|
||||
case DXGI_FORMAT_R8G8_B8G8_UNORM:
|
||||
case DXGI_FORMAT_G8R8_G8B8_UNORM: return CV_8UC4;
|
||||
//case DXGI_FORMAT_BC1_TYPELESS:
|
||||
//case DXGI_FORMAT_BC1_UNORM:
|
||||
//case DXGI_FORMAT_BC1_UNORM_SRGB:
|
||||
|
||||
+25
-23
@@ -40,7 +40,7 @@
|
||||
//M*/
|
||||
|
||||
#include "precomp.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdfft.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clfft.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
|
||||
#include "opencl_kernels_core.hpp"
|
||||
#include <map>
|
||||
@@ -2420,7 +2420,7 @@ namespace cv {
|
||||
|
||||
#define CLAMDDFT_Assert(func) \
|
||||
{ \
|
||||
clAmdFftStatus s = (func); \
|
||||
clfftStatus s = (func); \
|
||||
CV_Assert(s == CLFFT_SUCCESS); \
|
||||
}
|
||||
|
||||
@@ -2437,8 +2437,8 @@ class PlanCache
|
||||
bool dft_scale = (flags & DFT_SCALE) != 0;
|
||||
bool dft_rows = (flags & DFT_ROWS) != 0;
|
||||
|
||||
clAmdFftLayout inLayout = CLFFT_REAL, outLayout = CLFFT_REAL;
|
||||
clAmdFftDim dim = dft_size.height == 1 || dft_rows ? CLFFT_1D : CLFFT_2D;
|
||||
clfftLayout inLayout = CLFFT_REAL, outLayout = CLFFT_REAL;
|
||||
clfftDim dim = dft_size.height == 1 || dft_rows ? CLFFT_1D : CLFFT_2D;
|
||||
|
||||
size_t batchSize = dft_rows ? dft_size.height : 1;
|
||||
size_t clLengthsIn[3] = { (size_t)dft_size.width, dft_rows ? 1 : (size_t)dft_size.height, 1 };
|
||||
@@ -2475,28 +2475,30 @@ class PlanCache
|
||||
clStridesIn[2] = dft_rows ? clStridesIn[1] : dft_size.width * clStridesIn[1];
|
||||
clStridesOut[2] = dft_rows ? clStridesOut[1] : dft_size.width * clStridesOut[1];
|
||||
|
||||
CLAMDDFT_Assert(clAmdFftCreateDefaultPlan(&plHandle, (cl_context)ocl::Context::getDefault().ptr(), dim, clLengthsIn))
|
||||
CLAMDDFT_Assert(clfftCreateDefaultPlan(&plHandle, (cl_context)ocl::Context::getDefault().ptr(), dim, clLengthsIn))
|
||||
|
||||
// setting plan properties
|
||||
CLAMDDFT_Assert(clAmdFftSetPlanPrecision(plHandle, doubleFP ? CLFFT_DOUBLE : CLFFT_SINGLE));
|
||||
CLAMDDFT_Assert(clAmdFftSetResultLocation(plHandle, inplace ? CLFFT_INPLACE : CLFFT_OUTOFPLACE))
|
||||
CLAMDDFT_Assert(clAmdFftSetLayout(plHandle, inLayout, outLayout))
|
||||
CLAMDDFT_Assert(clAmdFftSetPlanBatchSize(plHandle, batchSize))
|
||||
CLAMDDFT_Assert(clAmdFftSetPlanInStride(plHandle, dim, clStridesIn))
|
||||
CLAMDDFT_Assert(clAmdFftSetPlanOutStride(plHandle, dim, clStridesOut))
|
||||
CLAMDDFT_Assert(clAmdFftSetPlanDistance(plHandle, clStridesIn[dim], clStridesOut[dim]))
|
||||
CLAMDDFT_Assert(clfftSetPlanPrecision(plHandle, doubleFP ? CLFFT_DOUBLE : CLFFT_SINGLE));
|
||||
CLAMDDFT_Assert(clfftSetResultLocation(plHandle, inplace ? CLFFT_INPLACE : CLFFT_OUTOFPLACE))
|
||||
CLAMDDFT_Assert(clfftSetLayout(plHandle, inLayout, outLayout))
|
||||
CLAMDDFT_Assert(clfftSetPlanBatchSize(plHandle, batchSize))
|
||||
CLAMDDFT_Assert(clfftSetPlanInStride(plHandle, dim, clStridesIn))
|
||||
CLAMDDFT_Assert(clfftSetPlanOutStride(plHandle, dim, clStridesOut))
|
||||
CLAMDDFT_Assert(clfftSetPlanDistance(plHandle, clStridesIn[dim], clStridesOut[dim]))
|
||||
|
||||
float scale = dft_scale ? 1.0f / (dft_rows ? dft_size.width : dft_size.area()) : 1.0f;
|
||||
CLAMDDFT_Assert(clAmdFftSetPlanScale(plHandle, dft_inverse ? CLFFT_BACKWARD : CLFFT_FORWARD, scale))
|
||||
CLAMDDFT_Assert(clfftSetPlanScale(plHandle, dft_inverse ? CLFFT_BACKWARD : CLFFT_FORWARD, scale))
|
||||
|
||||
// ready to bake
|
||||
cl_command_queue queue = (cl_command_queue)ocl::Queue::getDefault().ptr();
|
||||
CLAMDDFT_Assert(clAmdFftBakePlan(plHandle, 1, &queue, NULL, NULL))
|
||||
CLAMDDFT_Assert(clfftBakePlan(plHandle, 1, &queue, NULL, NULL))
|
||||
}
|
||||
|
||||
~FftPlan()
|
||||
{
|
||||
// clAmdFftDestroyPlan(&plHandle);
|
||||
// Do not tear down clFFT.
|
||||
// The user application may still use clFFT even after OpenCV is unloaded.
|
||||
/*clfftDestroyPlan(&plHandle);*/
|
||||
}
|
||||
|
||||
friend class PlanCache;
|
||||
@@ -2510,7 +2512,7 @@ class PlanCache
|
||||
FftType fftType;
|
||||
|
||||
cl_context context;
|
||||
clAmdFftPlanHandle plHandle;
|
||||
clfftPlanHandle plHandle;
|
||||
};
|
||||
|
||||
public:
|
||||
@@ -2519,8 +2521,8 @@ public:
|
||||
CV_SINGLETON_LAZY_INIT_REF(PlanCache, new PlanCache())
|
||||
}
|
||||
|
||||
clAmdFftPlanHandle getPlanHandle(const Size & dft_size, int src_step, int dst_step, bool doubleFP,
|
||||
bool inplace, int flags, FftType fftType)
|
||||
clfftPlanHandle getPlanHandle(const Size & dft_size, int src_step, int dst_step, bool doubleFP,
|
||||
bool inplace, int flags, FftType fftType)
|
||||
{
|
||||
cl_context currentContext = (cl_context)ocl::Context::getDefault().ptr();
|
||||
|
||||
@@ -2620,13 +2622,13 @@ static bool ocl_dft_amdfft(InputArray _src, OutputArray _dst, int flags)
|
||||
UMat src = _src.getUMat(), dst = _dst.getUMat();
|
||||
bool inplace = src.u == dst.u;
|
||||
|
||||
clAmdFftPlanHandle plHandle = PlanCache::getInstance().
|
||||
clfftPlanHandle plHandle = PlanCache::getInstance().
|
||||
getPlanHandle(ssize, (int)src.step, (int)dst.step,
|
||||
depth == CV_64F, inplace, flags, fftType);
|
||||
|
||||
// get the bufferSize
|
||||
size_t bufferSize = 0;
|
||||
CLAMDDFT_Assert(clAmdFftGetTmpBufSize(plHandle, &bufferSize))
|
||||
CLAMDDFT_Assert(clfftGetTmpBufSize(plHandle, &bufferSize))
|
||||
UMat tmpBuffer(1, (int)bufferSize, CV_8UC1);
|
||||
|
||||
cl_mem srcarg = (cl_mem)src.handle(ACCESS_READ);
|
||||
@@ -2635,9 +2637,9 @@ static bool ocl_dft_amdfft(InputArray _src, OutputArray _dst, int flags)
|
||||
cl_command_queue queue = (cl_command_queue)ocl::Queue::getDefault().ptr();
|
||||
cl_event e = 0;
|
||||
|
||||
CLAMDDFT_Assert(clAmdFftEnqueueTransform(plHandle, dft_inverse ? CLFFT_BACKWARD : CLFFT_FORWARD,
|
||||
1, &queue, 0, NULL, &e,
|
||||
&srcarg, &dstarg, (cl_mem)tmpBuffer.handle(ACCESS_RW)))
|
||||
CLAMDDFT_Assert(clfftEnqueueTransform(plHandle, dft_inverse ? CLFFT_BACKWARD : CLFFT_FORWARD,
|
||||
1, &queue, 0, NULL, &e,
|
||||
&srcarg, &dstarg, (cl_mem)tmpBuffer.handle(ACCESS_RW)))
|
||||
|
||||
tmpBuffer.addref();
|
||||
clSetEventCallback(e, CL_COMPLETE, oclCleanupCallback, tmpBuffer.u);
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
#include <sstream>
|
||||
#include "opencl_kernels_core.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
|
||||
|
||||
namespace cv
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
#include "precomp.hpp"
|
||||
#include "opencl_kernels_core.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
|
||||
#include "intel_gpu_gemm.inl.hpp"
|
||||
|
||||
@@ -106,47 +106,47 @@ static bool ocl_gemm_amdblas( InputArray matA, InputArray matB, double alpha,
|
||||
int offa = (int)A.offset / esz, offb = (int)B.offset / esz, offc = (int)D.offset / esz;
|
||||
|
||||
cl_command_queue clq = (cl_command_queue)ocl::Queue::getDefault().ptr();
|
||||
clAmdBlasTranspose transA = atrans ? clAmdBlasTrans : clAmdBlasNoTrans;
|
||||
clAmdBlasTranspose transB = btrans ? clAmdBlasTrans : clAmdBlasNoTrans;
|
||||
clAmdBlasOrder order = clAmdBlasRowMajor;
|
||||
clAmdBlasStatus status = clAmdBlasSuccess;
|
||||
clblasTranspose transA = atrans ? clblasTrans : clblasNoTrans;
|
||||
clblasTranspose transB = btrans ? clblasTrans : clblasNoTrans;
|
||||
clblasOrder order = clblasRowMajor;
|
||||
clblasStatus status = clblasSuccess;
|
||||
|
||||
if (type == CV_32FC1)
|
||||
status = clAmdBlasSgemmEx(order, transA, transB, M, N, K,
|
||||
(cl_float)alpha, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
(cl_float)beta, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
status = clblasSgemm(order, transA, transB, M, N, K,
|
||||
(cl_float)alpha, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
(cl_float)beta, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
else if (type == CV_64FC1)
|
||||
status = clAmdBlasDgemmEx(order, transA, transB, M, N, K,
|
||||
alpha, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
beta, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
status = clblasDgemm(order, transA, transB, M, N, K,
|
||||
alpha, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
beta, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
else if (type == CV_32FC2)
|
||||
{
|
||||
cl_float2 alpha_2 = { { (cl_float)alpha, 0 } };
|
||||
cl_float2 beta_2 = { { (cl_float)beta, 0 } };
|
||||
status = clAmdBlasCgemmEx(order, transA, transB, M, N, K,
|
||||
alpha_2, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
beta_2, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
status = clblasCgemm(order, transA, transB, M, N, K,
|
||||
alpha_2, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
beta_2, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
}
|
||||
else if (type == CV_64FC2)
|
||||
{
|
||||
cl_double2 alpha_2 = { { alpha, 0 } };
|
||||
cl_double2 beta_2 = { { beta, 0 } };
|
||||
status = clAmdBlasZgemmEx(order, transA, transB, M, N, K,
|
||||
alpha_2, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
beta_2, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
status = clblasZgemm(order, transA, transB, M, N, K,
|
||||
alpha_2, (const cl_mem)A.handle(ACCESS_READ), offa, lda,
|
||||
(const cl_mem)B.handle(ACCESS_READ), offb, ldb,
|
||||
beta_2, (cl_mem)D.handle(ACCESS_RW), offc, ldc,
|
||||
1, &clq, 0, NULL, NULL);
|
||||
}
|
||||
else
|
||||
CV_Error(Error::StsUnsupportedFormat, "");
|
||||
|
||||
return status == clAmdBlasSuccess;
|
||||
return status == clblasSuccess;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+25
-15
@@ -108,8 +108,8 @@
|
||||
#define CV_OPENCL_SVM_TRACE_ERROR_P(...)
|
||||
#endif
|
||||
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdfft.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clfft.hpp"
|
||||
|
||||
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
|
||||
|
||||
@@ -1254,11 +1254,13 @@ public:
|
||||
|
||||
~AmdBlasHelper()
|
||||
{
|
||||
try
|
||||
// Do not tear down clBLAS.
|
||||
// The user application may still use clBLAS even after OpenCV is unloaded.
|
||||
/*try
|
||||
{
|
||||
clAmdBlasTeardown();
|
||||
clblasTeardown();
|
||||
}
|
||||
catch (...) { }
|
||||
catch (...) { }*/
|
||||
}
|
||||
|
||||
protected:
|
||||
@@ -1274,7 +1276,7 @@ protected:
|
||||
{
|
||||
try
|
||||
{
|
||||
g_isAmdBlasAvailable = clAmdBlasSetup() == clAmdBlasSuccess;
|
||||
g_isAmdBlasAvailable = clblasSetup() == clblasSuccess;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@@ -1328,11 +1330,13 @@ public:
|
||||
|
||||
~AmdFftHelper()
|
||||
{
|
||||
try
|
||||
// Do not tear down clFFT.
|
||||
// The user application may still use clFFT even after OpenCV is unloaded.
|
||||
/*try
|
||||
{
|
||||
// clAmdFftTeardown();
|
||||
clfftTeardown();
|
||||
}
|
||||
catch (...) { }
|
||||
catch (...) { }*/
|
||||
}
|
||||
|
||||
protected:
|
||||
@@ -1349,10 +1353,10 @@ protected:
|
||||
try
|
||||
{
|
||||
cl_uint major, minor, patch;
|
||||
CV_Assert(clAmdFftInitSetupData(&setupData) == CLFFT_SUCCESS);
|
||||
CV_Assert(clfftInitSetupData(&setupData) == CLFFT_SUCCESS);
|
||||
|
||||
// it throws exception in case AmdFft binaries are not found
|
||||
CV_Assert(clAmdFftGetVersion(&major, &minor, &patch) == CLFFT_SUCCESS);
|
||||
CV_Assert(clfftGetVersion(&major, &minor, &patch) == CLFFT_SUCCESS);
|
||||
g_isAmdFftAvailable = true;
|
||||
}
|
||||
catch (const Exception &)
|
||||
@@ -1369,12 +1373,12 @@ protected:
|
||||
}
|
||||
|
||||
private:
|
||||
static clAmdFftSetupData setupData;
|
||||
static clfftSetupData setupData;
|
||||
static bool g_isAmdFftInitialized;
|
||||
static bool g_isAmdFftAvailable;
|
||||
};
|
||||
|
||||
clAmdFftSetupData AmdFftHelper::setupData;
|
||||
clfftSetupData AmdFftHelper::setupData;
|
||||
bool AmdFftHelper::g_isAmdFftAvailable = false;
|
||||
bool AmdFftHelper::g_isAmdFftInitialized = false;
|
||||
|
||||
@@ -5518,13 +5522,19 @@ public:
|
||||
&& !(u->originalUMatData && u->originalUMatData->handle)
|
||||
)
|
||||
{
|
||||
handle = clCreateBuffer(ctx_handle, CL_MEM_USE_HOST_PTR|createFlags,
|
||||
// Change the host-side origdata[size] to "pinned memory" that enables fast
|
||||
// DMA-transfers over PCIe to the device. Often used with clEnqueueMapBuffer/clEnqueueUnmapMemObject
|
||||
handle = clCreateBuffer(ctx_handle, CL_MEM_USE_HOST_PTR|(createFlags & ~CL_MEM_ALLOC_HOST_PTR),
|
||||
u->size, u->origdata, &retval);
|
||||
CV_OCL_DBG_CHECK_RESULT(retval, cv::format("clCreateBuffer(CL_MEM_USE_HOST_PTR|createFlags, sz=%lld, origdata=%p) => %p",
|
||||
CV_OCL_DBG_CHECK_RESULT(retval, cv::format("clCreateBuffer(CL_MEM_USE_HOST_PTR|(createFlags & ~CL_MEM_ALLOC_HOST_PTR), sz=%lld, origdata=%p) => %p",
|
||||
(long long int)u->size, u->origdata, (void*)handle).c_str());
|
||||
}
|
||||
if((!handle || retval < 0) && !(accessFlags & ACCESS_FAST))
|
||||
{
|
||||
// Allocate device-side memory and immediately copy data from the host-side pointer origdata[size].
|
||||
// If createFlags=CL_MEM_ALLOC_HOST_PTR (aka cv::USAGE_ALLOCATE_HOST_MEMORY), then
|
||||
// additionally allocate a host-side "pinned" duplicate of the origdata that is
|
||||
// managed by OpenCL. This is potentially faster in unaligned/unmanaged scenarios.
|
||||
handle = clCreateBuffer(ctx_handle, CL_MEM_COPY_HOST_PTR|CL_MEM_READ_WRITE|createFlags,
|
||||
u->size, u->origdata, &retval);
|
||||
CV_OCL_DBG_CHECK_RESULT(retval, cv::format("clCreateBuffer(CL_MEM_COPY_HOST_PTR|CL_MEM_READ_WRITE|createFlags, sz=%lld, origdata=%p) => %p",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,357 +0,0 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
// generated by parser_clamdfft.py
|
||||
enum OPENCLAMDFFT_FN_ID {
|
||||
OPENCLAMDFFT_FN_clAmdFftBakePlan = 0,
|
||||
// OPENCLAMDFFT_FN_clAmdFftCopyPlan = 1,
|
||||
OPENCLAMDFFT_FN_clAmdFftCreateDefaultPlan = 2,
|
||||
OPENCLAMDFFT_FN_clAmdFftDestroyPlan = 3,
|
||||
OPENCLAMDFFT_FN_clAmdFftEnqueueTransform = 4,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetLayout = 5,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanBatchSize = 6,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanContext = 7,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanDim = 8,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanDistance = 9,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanInStride = 10,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanLength = 11,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanOutStride = 12,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanPrecision = 13,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanScale = 14,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanTransposeResult = 15,
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetResultLocation = 16,
|
||||
OPENCLAMDFFT_FN_clAmdFftGetTmpBufSize = 17,
|
||||
OPENCLAMDFFT_FN_clAmdFftGetVersion = 18,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetLayout = 19,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanBatchSize = 20,
|
||||
// OPENCLAMDFFT_FN_clAmdFftSetPlanDim = 21,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanDistance = 22,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanInStride = 23,
|
||||
// OPENCLAMDFFT_FN_clAmdFftSetPlanLength = 24,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanOutStride = 25,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanPrecision = 26,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanScale = 27,
|
||||
// OPENCLAMDFFT_FN_clAmdFftSetPlanTransposeResult = 28,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetResultLocation = 29,
|
||||
OPENCLAMDFFT_FN_clAmdFftSetup = 30,
|
||||
OPENCLAMDFFT_FN_clAmdFftTeardown = 31,
|
||||
};
|
||||
|
||||
namespace {
|
||||
// generated by parser_clamdfft.py
|
||||
#define openclamdfft_fn0(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(); } \
|
||||
|
||||
#define openclamdfft_fn1(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1); } \
|
||||
|
||||
#define openclamdfft_fn2(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2); } \
|
||||
|
||||
#define openclamdfft_fn3(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3); } \
|
||||
|
||||
#define openclamdfft_fn4(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4); } \
|
||||
|
||||
#define openclamdfft_fn5(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5); } \
|
||||
|
||||
#define openclamdfft_fn6(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6); } \
|
||||
|
||||
#define openclamdfft_fn7(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7); } \
|
||||
|
||||
#define openclamdfft_fn8(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8); } \
|
||||
|
||||
#define openclamdfft_fn9(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9); } \
|
||||
|
||||
#define openclamdfft_fn10(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } \
|
||||
|
||||
#define openclamdfft_fn11(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } \
|
||||
|
||||
#define openclamdfft_fn12(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); } \
|
||||
|
||||
#define openclamdfft_fn13(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); } \
|
||||
|
||||
#define openclamdfft_fn14(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); } \
|
||||
|
||||
#define openclamdfft_fn15(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); } \
|
||||
|
||||
#define openclamdfft_fn16(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); } \
|
||||
|
||||
#define openclamdfft_fn17(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17); } \
|
||||
|
||||
#define openclamdfft_fn18(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18); } \
|
||||
|
||||
#define openclamdfft_fn19(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19); } \
|
||||
|
||||
#define openclamdfft_fn20(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20); } \
|
||||
|
||||
#define openclamdfft_fn21(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21); } \
|
||||
|
||||
#define openclamdfft_fn22(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22); } \
|
||||
|
||||
}
|
||||
|
||||
// generated by parser_clamdfft.py
|
||||
openclamdfft_fn5(OPENCLAMDFFT_FN_clAmdFftBakePlan, clAmdFftStatus, (clAmdFftPlanHandle p1, cl_uint p2, cl_command_queue* p3, void (CL_CALLBACK*p4) (clAmdFftPlanHandle plHandle, void* user_data), void* p5))
|
||||
clAmdFftStatus (*clAmdFftBakePlan)(clAmdFftPlanHandle, cl_uint, cl_command_queue*, void (CL_CALLBACK*) (clAmdFftPlanHandle plHandle, void* user_data), void*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftBakePlan_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftBakePlan_definition = { "clAmdFftBakePlan", (void**)&clAmdFftBakePlan};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftCopyPlan, clAmdFftStatus, (clAmdFftPlanHandle* p1, cl_context p2, clAmdFftPlanHandle p3))
|
||||
//clAmdFftStatus (*clAmdFftCopyPlan)(clAmdFftPlanHandle*, cl_context, clAmdFftPlanHandle) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftCopyPlan_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftCopyPlan_definition = { "clAmdFftCopyPlan", (void**)&clAmdFftCopyPlan};
|
||||
|
||||
openclamdfft_fn4(OPENCLAMDFFT_FN_clAmdFftCreateDefaultPlan, clAmdFftStatus, (clAmdFftPlanHandle* p1, cl_context p2, const clAmdFftDim p3, const size_t* p4))
|
||||
clAmdFftStatus (*clAmdFftCreateDefaultPlan)(clAmdFftPlanHandle*, cl_context, const clAmdFftDim, const size_t*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftCreateDefaultPlan_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftCreateDefaultPlan_definition = { "clAmdFftCreateDefaultPlan", (void**)&clAmdFftCreateDefaultPlan};
|
||||
|
||||
openclamdfft_fn1(OPENCLAMDFFT_FN_clAmdFftDestroyPlan, clAmdFftStatus, (clAmdFftPlanHandle* p1))
|
||||
clAmdFftStatus (*clAmdFftDestroyPlan)(clAmdFftPlanHandle*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftDestroyPlan_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftDestroyPlan_definition = { "clAmdFftDestroyPlan", (void**)&clAmdFftDestroyPlan};
|
||||
|
||||
openclamdfft_fn10(OPENCLAMDFFT_FN_clAmdFftEnqueueTransform, clAmdFftStatus, (clAmdFftPlanHandle p1, clAmdFftDirection p2, cl_uint p3, cl_command_queue* p4, cl_uint p5, const cl_event* p6, cl_event* p7, cl_mem* p8, cl_mem* p9, cl_mem p10))
|
||||
clAmdFftStatus (*clAmdFftEnqueueTransform)(clAmdFftPlanHandle, clAmdFftDirection, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*, cl_mem*, cl_mem*, cl_mem) =
|
||||
OPENCLAMDFFT_FN_clAmdFftEnqueueTransform_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftEnqueueTransform_definition = { "clAmdFftEnqueueTransform", (void**)&clAmdFftEnqueueTransform};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetLayout, clAmdFftStatus, (const clAmdFftPlanHandle p1, clAmdFftLayout* p2, clAmdFftLayout* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetLayout)(const clAmdFftPlanHandle, clAmdFftLayout*, clAmdFftLayout*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetLayout_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetLayout_definition = { "clAmdFftGetLayout", (void**)&clAmdFftGetLayout};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftGetPlanBatchSize, clAmdFftStatus, (const clAmdFftPlanHandle p1, size_t* p2))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanBatchSize)(const clAmdFftPlanHandle, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanBatchSize_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanBatchSize_definition = { "clAmdFftGetPlanBatchSize", (void**)&clAmdFftGetPlanBatchSize};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftGetPlanContext, clAmdFftStatus, (const clAmdFftPlanHandle p1, cl_context* p2))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanContext)(const clAmdFftPlanHandle, cl_context*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanContext_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanContext_definition = { "clAmdFftGetPlanContext", (void**)&clAmdFftGetPlanContext};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetPlanDim, clAmdFftStatus, (const clAmdFftPlanHandle p1, clAmdFftDim* p2, cl_uint* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanDim)(const clAmdFftPlanHandle, clAmdFftDim*, cl_uint*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanDim_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanDim_definition = { "clAmdFftGetPlanDim", (void**)&clAmdFftGetPlanDim};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetPlanDistance, clAmdFftStatus, (const clAmdFftPlanHandle p1, size_t* p2, size_t* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanDistance)(const clAmdFftPlanHandle, size_t*, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanDistance_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanDistance_definition = { "clAmdFftGetPlanDistance", (void**)&clAmdFftGetPlanDistance};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetPlanInStride, clAmdFftStatus, (const clAmdFftPlanHandle p1, const clAmdFftDim p2, size_t* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanInStride)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanInStride_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanInStride_definition = { "clAmdFftGetPlanInStride", (void**)&clAmdFftGetPlanInStride};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetPlanLength, clAmdFftStatus, (const clAmdFftPlanHandle p1, const clAmdFftDim p2, size_t* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanLength)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanLength_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanLength_definition = { "clAmdFftGetPlanLength", (void**)&clAmdFftGetPlanLength};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetPlanOutStride, clAmdFftStatus, (const clAmdFftPlanHandle p1, const clAmdFftDim p2, size_t* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanOutStride)(const clAmdFftPlanHandle, const clAmdFftDim, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanOutStride_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanOutStride_definition = { "clAmdFftGetPlanOutStride", (void**)&clAmdFftGetPlanOutStride};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftGetPlanPrecision, clAmdFftStatus, (const clAmdFftPlanHandle p1, clAmdFftPrecision* p2))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanPrecision)(const clAmdFftPlanHandle, clAmdFftPrecision*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanPrecision_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanPrecision_definition = { "clAmdFftGetPlanPrecision", (void**)&clAmdFftGetPlanPrecision};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetPlanScale, clAmdFftStatus, (const clAmdFftPlanHandle p1, clAmdFftDirection p2, cl_float* p3))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanScale)(const clAmdFftPlanHandle, clAmdFftDirection, cl_float*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanScale_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanScale_definition = { "clAmdFftGetPlanScale", (void**)&clAmdFftGetPlanScale};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftGetPlanTransposeResult, clAmdFftStatus, (const clAmdFftPlanHandle p1, clAmdFftResultTransposed* p2))
|
||||
//clAmdFftStatus (*clAmdFftGetPlanTransposeResult)(const clAmdFftPlanHandle, clAmdFftResultTransposed*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetPlanTransposeResult_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetPlanTransposeResult_definition = { "clAmdFftGetPlanTransposeResult", (void**)&clAmdFftGetPlanTransposeResult};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftGetResultLocation, clAmdFftStatus, (const clAmdFftPlanHandle p1, clAmdFftResultLocation* p2))
|
||||
//clAmdFftStatus (*clAmdFftGetResultLocation)(const clAmdFftPlanHandle, clAmdFftResultLocation*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftGetResultLocation_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftGetResultLocation_definition = { "clAmdFftGetResultLocation", (void**)&clAmdFftGetResultLocation};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftGetTmpBufSize, clAmdFftStatus, (const clAmdFftPlanHandle p1, size_t* p2))
|
||||
clAmdFftStatus (*clAmdFftGetTmpBufSize)(const clAmdFftPlanHandle, size_t*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftGetTmpBufSize_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftGetTmpBufSize_definition = { "clAmdFftGetTmpBufSize", (void**)&clAmdFftGetTmpBufSize};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftGetVersion, clAmdFftStatus, (cl_uint* p1, cl_uint* p2, cl_uint* p3))
|
||||
clAmdFftStatus (*clAmdFftGetVersion)(cl_uint*, cl_uint*, cl_uint*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftGetVersion_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftGetVersion_definition = { "clAmdFftGetVersion", (void**)&clAmdFftGetVersion};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftSetLayout, clAmdFftStatus, (clAmdFftPlanHandle p1, clAmdFftLayout p2, clAmdFftLayout p3))
|
||||
clAmdFftStatus (*clAmdFftSetLayout)(clAmdFftPlanHandle, clAmdFftLayout, clAmdFftLayout) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetLayout_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetLayout_definition = { "clAmdFftSetLayout", (void**)&clAmdFftSetLayout};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftSetPlanBatchSize, clAmdFftStatus, (clAmdFftPlanHandle p1, size_t p2))
|
||||
clAmdFftStatus (*clAmdFftSetPlanBatchSize)(clAmdFftPlanHandle, size_t) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanBatchSize_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetPlanBatchSize_definition = { "clAmdFftSetPlanBatchSize", (void**)&clAmdFftSetPlanBatchSize};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftSetPlanDim, clAmdFftStatus, (clAmdFftPlanHandle p1, const clAmdFftDim p2))
|
||||
//clAmdFftStatus (*clAmdFftSetPlanDim)(clAmdFftPlanHandle, const clAmdFftDim) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftSetPlanDim_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftSetPlanDim_definition = { "clAmdFftSetPlanDim", (void**)&clAmdFftSetPlanDim};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftSetPlanDistance, clAmdFftStatus, (clAmdFftPlanHandle p1, size_t p2, size_t p3))
|
||||
clAmdFftStatus (*clAmdFftSetPlanDistance)(clAmdFftPlanHandle, size_t, size_t) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanDistance_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetPlanDistance_definition = { "clAmdFftSetPlanDistance", (void**)&clAmdFftSetPlanDistance};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftSetPlanInStride, clAmdFftStatus, (clAmdFftPlanHandle p1, const clAmdFftDim p2, size_t* p3))
|
||||
clAmdFftStatus (*clAmdFftSetPlanInStride)(clAmdFftPlanHandle, const clAmdFftDim, size_t*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanInStride_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetPlanInStride_definition = { "clAmdFftSetPlanInStride", (void**)&clAmdFftSetPlanInStride};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftSetPlanLength, clAmdFftStatus, (clAmdFftPlanHandle p1, const clAmdFftDim p2, const size_t* p3))
|
||||
//clAmdFftStatus (*clAmdFftSetPlanLength)(clAmdFftPlanHandle, const clAmdFftDim, const size_t*) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftSetPlanLength_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftSetPlanLength_definition = { "clAmdFftSetPlanLength", (void**)&clAmdFftSetPlanLength};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftSetPlanOutStride, clAmdFftStatus, (clAmdFftPlanHandle p1, const clAmdFftDim p2, size_t* p3))
|
||||
clAmdFftStatus (*clAmdFftSetPlanOutStride)(clAmdFftPlanHandle, const clAmdFftDim, size_t*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanOutStride_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetPlanOutStride_definition = { "clAmdFftSetPlanOutStride", (void**)&clAmdFftSetPlanOutStride};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftSetPlanPrecision, clAmdFftStatus, (clAmdFftPlanHandle p1, clAmdFftPrecision p2))
|
||||
clAmdFftStatus (*clAmdFftSetPlanPrecision)(clAmdFftPlanHandle, clAmdFftPrecision) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanPrecision_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetPlanPrecision_definition = { "clAmdFftSetPlanPrecision", (void**)&clAmdFftSetPlanPrecision};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clAmdFftSetPlanScale, clAmdFftStatus, (clAmdFftPlanHandle p1, clAmdFftDirection p2, cl_float p3))
|
||||
clAmdFftStatus (*clAmdFftSetPlanScale)(clAmdFftPlanHandle, clAmdFftDirection, cl_float) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetPlanScale_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetPlanScale_definition = { "clAmdFftSetPlanScale", (void**)&clAmdFftSetPlanScale};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftSetPlanTransposeResult, clAmdFftStatus, (clAmdFftPlanHandle p1, clAmdFftResultTransposed p2))
|
||||
//clAmdFftStatus (*clAmdFftSetPlanTransposeResult)(clAmdFftPlanHandle, clAmdFftResultTransposed) =
|
||||
// OPENCLAMDFFT_FN_clAmdFftSetPlanTransposeResult_switch_fn;
|
||||
//static const struct DynamicFnEntry clAmdFftSetPlanTransposeResult_definition = { "clAmdFftSetPlanTransposeResult", (void**)&clAmdFftSetPlanTransposeResult};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clAmdFftSetResultLocation, clAmdFftStatus, (clAmdFftPlanHandle p1, clAmdFftResultLocation p2))
|
||||
clAmdFftStatus (*clAmdFftSetResultLocation)(clAmdFftPlanHandle, clAmdFftResultLocation) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetResultLocation_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetResultLocation_definition = { "clAmdFftSetResultLocation", (void**)&clAmdFftSetResultLocation};
|
||||
|
||||
openclamdfft_fn1(OPENCLAMDFFT_FN_clAmdFftSetup, clAmdFftStatus, (const clAmdFftSetupData* p1))
|
||||
clAmdFftStatus (*clAmdFftSetup)(const clAmdFftSetupData*) =
|
||||
OPENCLAMDFFT_FN_clAmdFftSetup_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftSetup_definition = { "clAmdFftSetup", (void**)&clAmdFftSetup};
|
||||
|
||||
openclamdfft_fn0(OPENCLAMDFFT_FN_clAmdFftTeardown, clAmdFftStatus, ())
|
||||
clAmdFftStatus (*clAmdFftTeardown)() =
|
||||
OPENCLAMDFFT_FN_clAmdFftTeardown_switch_fn;
|
||||
static const struct DynamicFnEntry clAmdFftTeardown_definition = { "clAmdFftTeardown", (void**)&clAmdFftTeardown};
|
||||
|
||||
|
||||
// generated by parser_clamdfft.py
|
||||
static const struct DynamicFnEntry* openclamdfft_fn[] = {
|
||||
&clAmdFftBakePlan_definition,
|
||||
NULL/*&clAmdFftCopyPlan_definition*/,
|
||||
&clAmdFftCreateDefaultPlan_definition,
|
||||
&clAmdFftDestroyPlan_definition,
|
||||
&clAmdFftEnqueueTransform_definition,
|
||||
NULL/*&clAmdFftGetLayout_definition*/,
|
||||
NULL/*&clAmdFftGetPlanBatchSize_definition*/,
|
||||
NULL/*&clAmdFftGetPlanContext_definition*/,
|
||||
NULL/*&clAmdFftGetPlanDim_definition*/,
|
||||
NULL/*&clAmdFftGetPlanDistance_definition*/,
|
||||
NULL/*&clAmdFftGetPlanInStride_definition*/,
|
||||
NULL/*&clAmdFftGetPlanLength_definition*/,
|
||||
NULL/*&clAmdFftGetPlanOutStride_definition*/,
|
||||
NULL/*&clAmdFftGetPlanPrecision_definition*/,
|
||||
NULL/*&clAmdFftGetPlanScale_definition*/,
|
||||
NULL/*&clAmdFftGetPlanTransposeResult_definition*/,
|
||||
NULL/*&clAmdFftGetResultLocation_definition*/,
|
||||
&clAmdFftGetTmpBufSize_definition,
|
||||
&clAmdFftGetVersion_definition,
|
||||
&clAmdFftSetLayout_definition,
|
||||
&clAmdFftSetPlanBatchSize_definition,
|
||||
NULL/*&clAmdFftSetPlanDim_definition*/,
|
||||
&clAmdFftSetPlanDistance_definition,
|
||||
&clAmdFftSetPlanInStride_definition,
|
||||
NULL/*&clAmdFftSetPlanLength_definition*/,
|
||||
&clAmdFftSetPlanOutStride_definition,
|
||||
&clAmdFftSetPlanPrecision_definition,
|
||||
&clAmdFftSetPlanScale_definition,
|
||||
NULL/*&clAmdFftSetPlanTransposeResult_definition*/,
|
||||
&clAmdFftSetResultLocation_definition,
|
||||
&clAmdFftSetup_definition,
|
||||
&clAmdFftTeardown_definition,
|
||||
};
|
||||
|
||||
// number of enabled functions: 16
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,364 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
// generated by parser_clfft.py
|
||||
enum OPENCLAMDFFT_FN_ID {
|
||||
OPENCLAMDFFT_FN_clfftBakePlan = 0,
|
||||
// OPENCLAMDFFT_FN_clfftCopyPlan = 1,
|
||||
OPENCLAMDFFT_FN_clfftCreateDefaultPlan = 2,
|
||||
OPENCLAMDFFT_FN_clfftDestroyPlan = 3,
|
||||
OPENCLAMDFFT_FN_clfftEnqueueTransform = 4,
|
||||
// OPENCLAMDFFT_FN_clfftGetLayout = 5,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanBatchSize = 6,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanContext = 7,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanDim = 8,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanDistance = 9,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanInStride = 10,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanLength = 11,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanOutStride = 12,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanPrecision = 13,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanScale = 14,
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanTransposeResult = 15,
|
||||
// OPENCLAMDFFT_FN_clfftGetResultLocation = 16,
|
||||
OPENCLAMDFFT_FN_clfftGetTmpBufSize = 17,
|
||||
OPENCLAMDFFT_FN_clfftGetVersion = 18,
|
||||
OPENCLAMDFFT_FN_clfftSetLayout = 19,
|
||||
OPENCLAMDFFT_FN_clfftSetPlanBatchSize = 20,
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanCallback = 21,
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanDim = 22,
|
||||
OPENCLAMDFFT_FN_clfftSetPlanDistance = 23,
|
||||
OPENCLAMDFFT_FN_clfftSetPlanInStride = 24,
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanLength = 25,
|
||||
OPENCLAMDFFT_FN_clfftSetPlanOutStride = 26,
|
||||
OPENCLAMDFFT_FN_clfftSetPlanPrecision = 27,
|
||||
OPENCLAMDFFT_FN_clfftSetPlanScale = 28,
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanTransposeResult = 29,
|
||||
OPENCLAMDFFT_FN_clfftSetResultLocation = 30,
|
||||
OPENCLAMDFFT_FN_clfftSetup = 31,
|
||||
OPENCLAMDFFT_FN_clfftTeardown = 32,
|
||||
};
|
||||
|
||||
namespace {
|
||||
// generated by parser_clfft.py
|
||||
#define openclamdfft_fn0(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(); } \
|
||||
|
||||
#define openclamdfft_fn1(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1); } \
|
||||
|
||||
#define openclamdfft_fn2(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2); } \
|
||||
|
||||
#define openclamdfft_fn3(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3); } \
|
||||
|
||||
#define openclamdfft_fn4(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4); } \
|
||||
|
||||
#define openclamdfft_fn5(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5); } \
|
||||
|
||||
#define openclamdfft_fn6(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6); } \
|
||||
|
||||
#define openclamdfft_fn7(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7); } \
|
||||
|
||||
#define openclamdfft_fn8(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8); } \
|
||||
|
||||
#define openclamdfft_fn9(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9); } \
|
||||
|
||||
#define openclamdfft_fn10(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } \
|
||||
|
||||
#define openclamdfft_fn11(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } \
|
||||
|
||||
#define openclamdfft_fn12(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); } \
|
||||
|
||||
#define openclamdfft_fn13(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); } \
|
||||
|
||||
#define openclamdfft_fn14(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); } \
|
||||
|
||||
#define openclamdfft_fn15(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); } \
|
||||
|
||||
#define openclamdfft_fn16(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); } \
|
||||
|
||||
#define openclamdfft_fn17(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17); } \
|
||||
|
||||
#define openclamdfft_fn18(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18); } \
|
||||
|
||||
#define openclamdfft_fn19(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19); } \
|
||||
|
||||
#define openclamdfft_fn20(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20); } \
|
||||
|
||||
#define openclamdfft_fn21(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21); } \
|
||||
|
||||
#define openclamdfft_fn22(ID, _R, decl_args) \
|
||||
typedef _R (*ID##FN)decl_args; \
|
||||
static _R ID##_switch_fn decl_args \
|
||||
{ return ((ID##FN)openclamdfft_check_fn(ID))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22); } \
|
||||
|
||||
}
|
||||
|
||||
// generated by parser_clfft.py
|
||||
openclamdfft_fn5(OPENCLAMDFFT_FN_clfftBakePlan, clfftStatus, (clfftPlanHandle p1, cl_uint p2, cl_command_queue* p3, void (CL_CALLBACK*p4) (clfftPlanHandle plHandle, void* user_data), void* p5))
|
||||
clfftStatus (*clfftBakePlan)(clfftPlanHandle, cl_uint, cl_command_queue*, void (CL_CALLBACK*) (clfftPlanHandle plHandle, void* user_data), void*) =
|
||||
OPENCLAMDFFT_FN_clfftBakePlan_switch_fn;
|
||||
static const struct DynamicFnEntry clfftBakePlan_definition = { "clfftBakePlan", (void**)&clfftBakePlan};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftCopyPlan, clfftStatus, (clfftPlanHandle* p1, cl_context p2, clfftPlanHandle p3))
|
||||
//clfftStatus (*clfftCopyPlan)(clfftPlanHandle*, cl_context, clfftPlanHandle) =
|
||||
// OPENCLAMDFFT_FN_clfftCopyPlan_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftCopyPlan_definition = { "clfftCopyPlan", (void**)&clfftCopyPlan};
|
||||
|
||||
openclamdfft_fn4(OPENCLAMDFFT_FN_clfftCreateDefaultPlan, clfftStatus, (clfftPlanHandle* p1, cl_context p2, const clfftDim p3, const size_t* p4))
|
||||
clfftStatus (*clfftCreateDefaultPlan)(clfftPlanHandle*, cl_context, const clfftDim, const size_t*) =
|
||||
OPENCLAMDFFT_FN_clfftCreateDefaultPlan_switch_fn;
|
||||
static const struct DynamicFnEntry clfftCreateDefaultPlan_definition = { "clfftCreateDefaultPlan", (void**)&clfftCreateDefaultPlan};
|
||||
|
||||
openclamdfft_fn1(OPENCLAMDFFT_FN_clfftDestroyPlan, clfftStatus, (clfftPlanHandle* p1))
|
||||
clfftStatus (*clfftDestroyPlan)(clfftPlanHandle*) =
|
||||
OPENCLAMDFFT_FN_clfftDestroyPlan_switch_fn;
|
||||
static const struct DynamicFnEntry clfftDestroyPlan_definition = { "clfftDestroyPlan", (void**)&clfftDestroyPlan};
|
||||
|
||||
openclamdfft_fn10(OPENCLAMDFFT_FN_clfftEnqueueTransform, clfftStatus, (clfftPlanHandle p1, clfftDirection p2, cl_uint p3, cl_command_queue* p4, cl_uint p5, const cl_event* p6, cl_event* p7, cl_mem* p8, cl_mem* p9, cl_mem p10))
|
||||
clfftStatus (*clfftEnqueueTransform)(clfftPlanHandle, clfftDirection, cl_uint, cl_command_queue*, cl_uint, const cl_event*, cl_event*, cl_mem*, cl_mem*, cl_mem) =
|
||||
OPENCLAMDFFT_FN_clfftEnqueueTransform_switch_fn;
|
||||
static const struct DynamicFnEntry clfftEnqueueTransform_definition = { "clfftEnqueueTransform", (void**)&clfftEnqueueTransform};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetLayout, clfftStatus, (const clfftPlanHandle p1, clfftLayout* p2, clfftLayout* p3))
|
||||
//clfftStatus (*clfftGetLayout)(const clfftPlanHandle, clfftLayout*, clfftLayout*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetLayout_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetLayout_definition = { "clfftGetLayout", (void**)&clfftGetLayout};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftGetPlanBatchSize, clfftStatus, (const clfftPlanHandle p1, size_t* p2))
|
||||
//clfftStatus (*clfftGetPlanBatchSize)(const clfftPlanHandle, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanBatchSize_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanBatchSize_definition = { "clfftGetPlanBatchSize", (void**)&clfftGetPlanBatchSize};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftGetPlanContext, clfftStatus, (const clfftPlanHandle p1, cl_context* p2))
|
||||
//clfftStatus (*clfftGetPlanContext)(const clfftPlanHandle, cl_context*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanContext_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanContext_definition = { "clfftGetPlanContext", (void**)&clfftGetPlanContext};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetPlanDim, clfftStatus, (const clfftPlanHandle p1, clfftDim* p2, cl_uint* p3))
|
||||
//clfftStatus (*clfftGetPlanDim)(const clfftPlanHandle, clfftDim*, cl_uint*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanDim_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanDim_definition = { "clfftGetPlanDim", (void**)&clfftGetPlanDim};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetPlanDistance, clfftStatus, (const clfftPlanHandle p1, size_t* p2, size_t* p3))
|
||||
//clfftStatus (*clfftGetPlanDistance)(const clfftPlanHandle, size_t*, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanDistance_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanDistance_definition = { "clfftGetPlanDistance", (void**)&clfftGetPlanDistance};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetPlanInStride, clfftStatus, (const clfftPlanHandle p1, const clfftDim p2, size_t* p3))
|
||||
//clfftStatus (*clfftGetPlanInStride)(const clfftPlanHandle, const clfftDim, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanInStride_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanInStride_definition = { "clfftGetPlanInStride", (void**)&clfftGetPlanInStride};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetPlanLength, clfftStatus, (const clfftPlanHandle p1, const clfftDim p2, size_t* p3))
|
||||
//clfftStatus (*clfftGetPlanLength)(const clfftPlanHandle, const clfftDim, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanLength_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanLength_definition = { "clfftGetPlanLength", (void**)&clfftGetPlanLength};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetPlanOutStride, clfftStatus, (const clfftPlanHandle p1, const clfftDim p2, size_t* p3))
|
||||
//clfftStatus (*clfftGetPlanOutStride)(const clfftPlanHandle, const clfftDim, size_t*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanOutStride_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanOutStride_definition = { "clfftGetPlanOutStride", (void**)&clfftGetPlanOutStride};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftGetPlanPrecision, clfftStatus, (const clfftPlanHandle p1, clfftPrecision* p2))
|
||||
//clfftStatus (*clfftGetPlanPrecision)(const clfftPlanHandle, clfftPrecision*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanPrecision_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanPrecision_definition = { "clfftGetPlanPrecision", (void**)&clfftGetPlanPrecision};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetPlanScale, clfftStatus, (const clfftPlanHandle p1, clfftDirection p2, cl_float* p3))
|
||||
//clfftStatus (*clfftGetPlanScale)(const clfftPlanHandle, clfftDirection, cl_float*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanScale_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanScale_definition = { "clfftGetPlanScale", (void**)&clfftGetPlanScale};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftGetPlanTransposeResult, clfftStatus, (const clfftPlanHandle p1, clfftResultTransposed* p2))
|
||||
//clfftStatus (*clfftGetPlanTransposeResult)(const clfftPlanHandle, clfftResultTransposed*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetPlanTransposeResult_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetPlanTransposeResult_definition = { "clfftGetPlanTransposeResult", (void**)&clfftGetPlanTransposeResult};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftGetResultLocation, clfftStatus, (const clfftPlanHandle p1, clfftResultLocation* p2))
|
||||
//clfftStatus (*clfftGetResultLocation)(const clfftPlanHandle, clfftResultLocation*) =
|
||||
// OPENCLAMDFFT_FN_clfftGetResultLocation_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftGetResultLocation_definition = { "clfftGetResultLocation", (void**)&clfftGetResultLocation};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clfftGetTmpBufSize, clfftStatus, (const clfftPlanHandle p1, size_t* p2))
|
||||
clfftStatus (*clfftGetTmpBufSize)(const clfftPlanHandle, size_t*) =
|
||||
OPENCLAMDFFT_FN_clfftGetTmpBufSize_switch_fn;
|
||||
static const struct DynamicFnEntry clfftGetTmpBufSize_definition = { "clfftGetTmpBufSize", (void**)&clfftGetTmpBufSize};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clfftGetVersion, clfftStatus, (cl_uint* p1, cl_uint* p2, cl_uint* p3))
|
||||
clfftStatus (*clfftGetVersion)(cl_uint*, cl_uint*, cl_uint*) =
|
||||
OPENCLAMDFFT_FN_clfftGetVersion_switch_fn;
|
||||
static const struct DynamicFnEntry clfftGetVersion_definition = { "clfftGetVersion", (void**)&clfftGetVersion};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clfftSetLayout, clfftStatus, (clfftPlanHandle p1, clfftLayout p2, clfftLayout p3))
|
||||
clfftStatus (*clfftSetLayout)(clfftPlanHandle, clfftLayout, clfftLayout) =
|
||||
OPENCLAMDFFT_FN_clfftSetLayout_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetLayout_definition = { "clfftSetLayout", (void**)&clfftSetLayout};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clfftSetPlanBatchSize, clfftStatus, (clfftPlanHandle p1, size_t p2))
|
||||
clfftStatus (*clfftSetPlanBatchSize)(clfftPlanHandle, size_t) =
|
||||
OPENCLAMDFFT_FN_clfftSetPlanBatchSize_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetPlanBatchSize_definition = { "clfftSetPlanBatchSize", (void**)&clfftSetPlanBatchSize};
|
||||
|
||||
//openclamdfft_fn7(OPENCLAMDFFT_FN_clfftSetPlanCallback, clfftStatus, (clfftPlanHandle p1, const char* p2, const char* p3, int p4, clfftCallbackType p5, cl_mem* p6, int p7))
|
||||
//clfftStatus (*clfftSetPlanCallback)(clfftPlanHandle, const char*, const char*, int, clfftCallbackType, cl_mem*, int) =
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanCallback_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftSetPlanCallback_definition = { "clfftSetPlanCallback", (void**)&clfftSetPlanCallback};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftSetPlanDim, clfftStatus, (clfftPlanHandle p1, const clfftDim p2))
|
||||
//clfftStatus (*clfftSetPlanDim)(clfftPlanHandle, const clfftDim) =
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanDim_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftSetPlanDim_definition = { "clfftSetPlanDim", (void**)&clfftSetPlanDim};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clfftSetPlanDistance, clfftStatus, (clfftPlanHandle p1, size_t p2, size_t p3))
|
||||
clfftStatus (*clfftSetPlanDistance)(clfftPlanHandle, size_t, size_t) =
|
||||
OPENCLAMDFFT_FN_clfftSetPlanDistance_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetPlanDistance_definition = { "clfftSetPlanDistance", (void**)&clfftSetPlanDistance};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clfftSetPlanInStride, clfftStatus, (clfftPlanHandle p1, const clfftDim p2, size_t* p3))
|
||||
clfftStatus (*clfftSetPlanInStride)(clfftPlanHandle, const clfftDim, size_t*) =
|
||||
OPENCLAMDFFT_FN_clfftSetPlanInStride_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetPlanInStride_definition = { "clfftSetPlanInStride", (void**)&clfftSetPlanInStride};
|
||||
|
||||
//openclamdfft_fn3(OPENCLAMDFFT_FN_clfftSetPlanLength, clfftStatus, (clfftPlanHandle p1, const clfftDim p2, const size_t* p3))
|
||||
//clfftStatus (*clfftSetPlanLength)(clfftPlanHandle, const clfftDim, const size_t*) =
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanLength_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftSetPlanLength_definition = { "clfftSetPlanLength", (void**)&clfftSetPlanLength};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clfftSetPlanOutStride, clfftStatus, (clfftPlanHandle p1, const clfftDim p2, size_t* p3))
|
||||
clfftStatus (*clfftSetPlanOutStride)(clfftPlanHandle, const clfftDim, size_t*) =
|
||||
OPENCLAMDFFT_FN_clfftSetPlanOutStride_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetPlanOutStride_definition = { "clfftSetPlanOutStride", (void**)&clfftSetPlanOutStride};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clfftSetPlanPrecision, clfftStatus, (clfftPlanHandle p1, clfftPrecision p2))
|
||||
clfftStatus (*clfftSetPlanPrecision)(clfftPlanHandle, clfftPrecision) =
|
||||
OPENCLAMDFFT_FN_clfftSetPlanPrecision_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetPlanPrecision_definition = { "clfftSetPlanPrecision", (void**)&clfftSetPlanPrecision};
|
||||
|
||||
openclamdfft_fn3(OPENCLAMDFFT_FN_clfftSetPlanScale, clfftStatus, (clfftPlanHandle p1, clfftDirection p2, cl_float p3))
|
||||
clfftStatus (*clfftSetPlanScale)(clfftPlanHandle, clfftDirection, cl_float) =
|
||||
OPENCLAMDFFT_FN_clfftSetPlanScale_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetPlanScale_definition = { "clfftSetPlanScale", (void**)&clfftSetPlanScale};
|
||||
|
||||
//openclamdfft_fn2(OPENCLAMDFFT_FN_clfftSetPlanTransposeResult, clfftStatus, (clfftPlanHandle p1, clfftResultTransposed p2))
|
||||
//clfftStatus (*clfftSetPlanTransposeResult)(clfftPlanHandle, clfftResultTransposed) =
|
||||
// OPENCLAMDFFT_FN_clfftSetPlanTransposeResult_switch_fn;
|
||||
//static const struct DynamicFnEntry clfftSetPlanTransposeResult_definition = { "clfftSetPlanTransposeResult", (void**)&clfftSetPlanTransposeResult};
|
||||
|
||||
openclamdfft_fn2(OPENCLAMDFFT_FN_clfftSetResultLocation, clfftStatus, (clfftPlanHandle p1, clfftResultLocation p2))
|
||||
clfftStatus (*clfftSetResultLocation)(clfftPlanHandle, clfftResultLocation) =
|
||||
OPENCLAMDFFT_FN_clfftSetResultLocation_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetResultLocation_definition = { "clfftSetResultLocation", (void**)&clfftSetResultLocation};
|
||||
|
||||
openclamdfft_fn1(OPENCLAMDFFT_FN_clfftSetup, clfftStatus, (const clfftSetupData* p1))
|
||||
clfftStatus (*clfftSetup)(const clfftSetupData*) =
|
||||
OPENCLAMDFFT_FN_clfftSetup_switch_fn;
|
||||
static const struct DynamicFnEntry clfftSetup_definition = { "clfftSetup", (void**)&clfftSetup};
|
||||
|
||||
openclamdfft_fn0(OPENCLAMDFFT_FN_clfftTeardown, clfftStatus, ())
|
||||
clfftStatus (*clfftTeardown)() =
|
||||
OPENCLAMDFFT_FN_clfftTeardown_switch_fn;
|
||||
static const struct DynamicFnEntry clfftTeardown_definition = { "clfftTeardown", (void**)&clfftTeardown};
|
||||
|
||||
|
||||
// generated by parser_clfft.py
|
||||
static const struct DynamicFnEntry* openclamdfft_fn[] = {
|
||||
&clfftBakePlan_definition,
|
||||
NULL/*&clfftCopyPlan_definition*/,
|
||||
&clfftCreateDefaultPlan_definition,
|
||||
&clfftDestroyPlan_definition,
|
||||
&clfftEnqueueTransform_definition,
|
||||
NULL/*&clfftGetLayout_definition*/,
|
||||
NULL/*&clfftGetPlanBatchSize_definition*/,
|
||||
NULL/*&clfftGetPlanContext_definition*/,
|
||||
NULL/*&clfftGetPlanDim_definition*/,
|
||||
NULL/*&clfftGetPlanDistance_definition*/,
|
||||
NULL/*&clfftGetPlanInStride_definition*/,
|
||||
NULL/*&clfftGetPlanLength_definition*/,
|
||||
NULL/*&clfftGetPlanOutStride_definition*/,
|
||||
NULL/*&clfftGetPlanPrecision_definition*/,
|
||||
NULL/*&clfftGetPlanScale_definition*/,
|
||||
NULL/*&clfftGetPlanTransposeResult_definition*/,
|
||||
NULL/*&clfftGetResultLocation_definition*/,
|
||||
&clfftGetTmpBufSize_definition,
|
||||
&clfftGetVersion_definition,
|
||||
&clfftSetLayout_definition,
|
||||
&clfftSetPlanBatchSize_definition,
|
||||
NULL/*&clfftSetPlanCallback_definition*/,
|
||||
NULL/*&clfftSetPlanDim_definition*/,
|
||||
&clfftSetPlanDistance_definition,
|
||||
&clfftSetPlanInStride_definition,
|
||||
NULL/*&clfftSetPlanLength_definition*/,
|
||||
&clfftSetPlanOutStride_definition,
|
||||
&clfftSetPlanPrecision_definition,
|
||||
&clfftSetPlanScale_definition,
|
||||
NULL/*&clfftSetPlanTransposeResult_definition*/,
|
||||
&clfftSetResultLocation_definition,
|
||||
&clfftSetup_definition,
|
||||
&clfftTeardown_definition,
|
||||
};
|
||||
|
||||
// number of enabled functions: 16
|
||||
@@ -116,7 +116,7 @@ def readFunctionFilter(fns, fileName):
|
||||
|
||||
def outputToString(f):
|
||||
def wrapped(*args, **kwargs):
|
||||
from cStringIO import StringIO
|
||||
from io import StringIO
|
||||
old_stdout = sys.stdout
|
||||
sys.stdout = str_stdout = StringIO()
|
||||
res = f(*args, **kwargs)
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
//clAmdBlasAddScratchImage
|
||||
//clAmdBlasCaxpy
|
||||
//clAmdBlasCcopy
|
||||
//clAmdBlasCdotc
|
||||
//clAmdBlasCdotu
|
||||
//clAmdBlasCgbmv
|
||||
//clAmdBlasCgemm
|
||||
clAmdBlasCgemmEx
|
||||
//clAmdBlasCgemv
|
||||
//clAmdBlasCgemvEx
|
||||
//clAmdBlasCgerc
|
||||
//clAmdBlasCgeru
|
||||
//clAmdBlasChbmv
|
||||
//clAmdBlasChemm
|
||||
//clAmdBlasChemv
|
||||
//clAmdBlasCher
|
||||
//clAmdBlasCher2
|
||||
//clAmdBlasCher2k
|
||||
//clAmdBlasCherk
|
||||
//clAmdBlasChpmv
|
||||
//clAmdBlasChpr
|
||||
//clAmdBlasChpr2
|
||||
//clAmdBlasCrotg
|
||||
//clAmdBlasCscal
|
||||
//clAmdBlasCsrot
|
||||
//clAmdBlasCsscal
|
||||
//clAmdBlasCswap
|
||||
//clAmdBlasCsymm
|
||||
//clAmdBlasCsyr2k
|
||||
//clAmdBlasCsyr2kEx
|
||||
//clAmdBlasCsyrk
|
||||
//clAmdBlasCsyrkEx
|
||||
//clAmdBlasCtbmv
|
||||
//clAmdBlasCtbsv
|
||||
//clAmdBlasCtpmv
|
||||
//clAmdBlasCtpsv
|
||||
//clAmdBlasCtrmm
|
||||
//clAmdBlasCtrmmEx
|
||||
//clAmdBlasCtrmv
|
||||
//clAmdBlasCtrsm
|
||||
//clAmdBlasCtrsmEx
|
||||
//clAmdBlasCtrsv
|
||||
//clAmdBlasDasum
|
||||
//clAmdBlasDaxpy
|
||||
//clAmdBlasDcopy
|
||||
//clAmdBlasDdot
|
||||
//clAmdBlasDgbmv
|
||||
//clAmdBlasDgemm
|
||||
clAmdBlasDgemmEx
|
||||
//clAmdBlasDgemv
|
||||
//clAmdBlasDgemvEx
|
||||
//clAmdBlasDger
|
||||
//clAmdBlasDnrm2
|
||||
//clAmdBlasDrot
|
||||
//clAmdBlasDrotg
|
||||
//clAmdBlasDrotm
|
||||
//clAmdBlasDrotmg
|
||||
//clAmdBlasDsbmv
|
||||
//clAmdBlasDscal
|
||||
//clAmdBlasDspmv
|
||||
//clAmdBlasDspr
|
||||
//clAmdBlasDspr2
|
||||
//clAmdBlasDswap
|
||||
//clAmdBlasDsymm
|
||||
//clAmdBlasDsymv
|
||||
//clAmdBlasDsymvEx
|
||||
//clAmdBlasDsyr
|
||||
//clAmdBlasDsyr2
|
||||
//clAmdBlasDsyr2k
|
||||
//clAmdBlasDsyr2kEx
|
||||
//clAmdBlasDsyrk
|
||||
//clAmdBlasDsyrkEx
|
||||
//clAmdBlasDtbmv
|
||||
//clAmdBlasDtbsv
|
||||
//clAmdBlasDtpmv
|
||||
//clAmdBlasDtpsv
|
||||
//clAmdBlasDtrmm
|
||||
//clAmdBlasDtrmmEx
|
||||
//clAmdBlasDtrmv
|
||||
//clAmdBlasDtrsm
|
||||
//clAmdBlasDtrsmEx
|
||||
//clAmdBlasDtrsv
|
||||
//clAmdBlasDzasum
|
||||
//clAmdBlasDznrm2
|
||||
//clAmdBlasGetVersion
|
||||
//clAmdBlasRemoveScratchImage
|
||||
//clAmdBlasSasum
|
||||
//clAmdBlasSaxpy
|
||||
//clAmdBlasScasum
|
||||
//clAmdBlasScnrm2
|
||||
//clAmdBlasScopy
|
||||
//clAmdBlasSdot
|
||||
clAmdBlasSetup
|
||||
//clAmdBlasSgbmv
|
||||
//clAmdBlasSgemm
|
||||
clAmdBlasSgemmEx
|
||||
//clAmdBlasSgemv
|
||||
//clAmdBlasSgemvEx
|
||||
//clAmdBlasSger
|
||||
//clAmdBlasSnrm2
|
||||
//clAmdBlasSrot
|
||||
//clAmdBlasSrotg
|
||||
//clAmdBlasSrotm
|
||||
//clAmdBlasSrotmg
|
||||
//clAmdBlasSsbmv
|
||||
//clAmdBlasSscal
|
||||
//clAmdBlasSspmv
|
||||
//clAmdBlasSspr
|
||||
//clAmdBlasSspr2
|
||||
//clAmdBlasSswap
|
||||
//clAmdBlasSsymm
|
||||
//clAmdBlasSsymv
|
||||
//clAmdBlasSsymvEx
|
||||
//clAmdBlasSsyr
|
||||
//clAmdBlasSsyr2
|
||||
//clAmdBlasSsyr2k
|
||||
//clAmdBlasSsyr2kEx
|
||||
//clAmdBlasSsyrk
|
||||
//clAmdBlasSsyrkEx
|
||||
//clAmdBlasStbmv
|
||||
//clAmdBlasStbsv
|
||||
//clAmdBlasStpmv
|
||||
//clAmdBlasStpsv
|
||||
//clAmdBlasStrmm
|
||||
//clAmdBlasStrmmEx
|
||||
//clAmdBlasStrmv
|
||||
//clAmdBlasStrsm
|
||||
//clAmdBlasStrsmEx
|
||||
//clAmdBlasStrsv
|
||||
clAmdBlasTeardown
|
||||
//clAmdBlasZaxpy
|
||||
//clAmdBlasZcopy
|
||||
//clAmdBlasZdotc
|
||||
//clAmdBlasZdotu
|
||||
//clAmdBlasZdrot
|
||||
//clAmdBlasZdscal
|
||||
//clAmdBlasZgbmv
|
||||
//clAmdBlasZgemm
|
||||
clAmdBlasZgemmEx
|
||||
//clAmdBlasZgemv
|
||||
//clAmdBlasZgemvEx
|
||||
//clAmdBlasZgerc
|
||||
//clAmdBlasZgeru
|
||||
//clAmdBlasZhbmv
|
||||
//clAmdBlasZhemm
|
||||
//clAmdBlasZhemv
|
||||
//clAmdBlasZher
|
||||
//clAmdBlasZher2
|
||||
//clAmdBlasZher2k
|
||||
//clAmdBlasZherk
|
||||
//clAmdBlasZhpmv
|
||||
//clAmdBlasZhpr
|
||||
//clAmdBlasZhpr2
|
||||
//clAmdBlasZrotg
|
||||
//clAmdBlasZscal
|
||||
//clAmdBlasZswap
|
||||
//clAmdBlasZsymm
|
||||
//clAmdBlasZsyr2k
|
||||
//clAmdBlasZsyr2kEx
|
||||
//clAmdBlasZsyrk
|
||||
//clAmdBlasZsyrkEx
|
||||
//clAmdBlasZtbmv
|
||||
//clAmdBlasZtbsv
|
||||
//clAmdBlasZtpmv
|
||||
//clAmdBlasZtpsv
|
||||
//clAmdBlasZtrmm
|
||||
//clAmdBlasZtrmmEx
|
||||
//clAmdBlasZtrmv
|
||||
//clAmdBlasZtrsm
|
||||
//clAmdBlasZtrsmEx
|
||||
//clAmdBlasZtrsv
|
||||
//clAmdBlasiCamax
|
||||
//clAmdBlasiDamax
|
||||
//clAmdBlasiSamax
|
||||
//clAmdBlasiZamax
|
||||
#total 175
|
||||
@@ -1,33 +0,0 @@
|
||||
clAmdFftBakePlan
|
||||
//clAmdFftCopyPlan
|
||||
clAmdFftCreateDefaultPlan
|
||||
clAmdFftDestroyPlan
|
||||
clAmdFftEnqueueTransform
|
||||
//clAmdFftGetLayout
|
||||
//clAmdFftGetPlanBatchSize
|
||||
//clAmdFftGetPlanContext
|
||||
//clAmdFftGetPlanDim
|
||||
//clAmdFftGetPlanDistance
|
||||
//clAmdFftGetPlanInStride
|
||||
//clAmdFftGetPlanLength
|
||||
//clAmdFftGetPlanOutStride
|
||||
//clAmdFftGetPlanPrecision
|
||||
//clAmdFftGetPlanScale
|
||||
//clAmdFftGetPlanTransposeResult
|
||||
//clAmdFftGetResultLocation
|
||||
clAmdFftGetTmpBufSize
|
||||
clAmdFftGetVersion
|
||||
clAmdFftSetLayout
|
||||
clAmdFftSetPlanBatchSize
|
||||
//clAmdFftSetPlanDim
|
||||
clAmdFftSetPlanDistance
|
||||
clAmdFftSetPlanInStride
|
||||
//clAmdFftSetPlanLength
|
||||
clAmdFftSetPlanOutStride
|
||||
clAmdFftSetPlanPrecision
|
||||
clAmdFftSetPlanScale
|
||||
//clAmdFftSetPlanTransposeResult
|
||||
clAmdFftSetResultLocation
|
||||
clAmdFftSetup
|
||||
clAmdFftTeardown
|
||||
#total 32
|
||||
@@ -0,0 +1,148 @@
|
||||
//clblasCaxpy
|
||||
//clblasCcopy
|
||||
//clblasCdotc
|
||||
//clblasCdotu
|
||||
//clblasCgbmv
|
||||
clblasCgemm
|
||||
//clblasCgemv
|
||||
//clblasCgerc
|
||||
//clblasCgeru
|
||||
//clblasChbmv
|
||||
//clblasChemm
|
||||
//clblasChemv
|
||||
//clblasCher
|
||||
//clblasCher2
|
||||
//clblasCher2k
|
||||
//clblasCherk
|
||||
//clblasChpmv
|
||||
//clblasChpr
|
||||
//clblasChpr2
|
||||
//clblasCrotg
|
||||
//clblasCscal
|
||||
//clblasCsrot
|
||||
//clblasCsscal
|
||||
//clblasCswap
|
||||
//clblasCsymm
|
||||
//clblasCsyr2k
|
||||
//clblasCsyrk
|
||||
//clblasCtbmv
|
||||
//clblasCtbsv
|
||||
//clblasCtpmv
|
||||
//clblasCtpsv
|
||||
//clblasCtrmm
|
||||
//clblasCtrmv
|
||||
//clblasCtrsm
|
||||
//clblasCtrsv
|
||||
//clblasDasum
|
||||
//clblasDaxpy
|
||||
//clblasDcopy
|
||||
//clblasDdot
|
||||
//clblasDgbmv
|
||||
clblasDgemm
|
||||
//clblasDgemv
|
||||
//clblasDger
|
||||
//clblasDnrm2
|
||||
//clblasDrot
|
||||
//clblasDrotg
|
||||
//clblasDrotm
|
||||
//clblasDrotmg
|
||||
//clblasDsbmv
|
||||
//clblasDscal
|
||||
//clblasDspmv
|
||||
//clblasDspr
|
||||
//clblasDspr2
|
||||
//clblasDswap
|
||||
//clblasDsymm
|
||||
//clblasDsymv
|
||||
//clblasDsyr
|
||||
//clblasDsyr2
|
||||
//clblasDsyr2k
|
||||
//clblasDsyrk
|
||||
//clblasDtbmv
|
||||
//clblasDtbsv
|
||||
//clblasDtpmv
|
||||
//clblasDtpsv
|
||||
//clblasDtrmm
|
||||
//clblasDtrmv
|
||||
//clblasDtrsm
|
||||
//clblasDtrsv
|
||||
//clblasDzasum
|
||||
//clblasDznrm2
|
||||
//clblasGetVersion
|
||||
//clblasSasum
|
||||
//clblasSaxpy
|
||||
//clblasScasum
|
||||
//clblasScnrm2
|
||||
//clblasScopy
|
||||
//clblasSdot
|
||||
clblasSetup
|
||||
//clblasSgbmv
|
||||
clblasSgemm
|
||||
//clblasSgemv
|
||||
//clblasSger
|
||||
//clblasSnrm2
|
||||
//clblasSrot
|
||||
//clblasSrotg
|
||||
//clblasSrotm
|
||||
//clblasSrotmg
|
||||
//clblasSsbmv
|
||||
//clblasSscal
|
||||
//clblasSspmv
|
||||
//clblasSspr
|
||||
//clblasSspr2
|
||||
//clblasSswap
|
||||
//clblasSsymm
|
||||
//clblasSsymv
|
||||
//clblasSsyr
|
||||
//clblasSsyr2
|
||||
//clblasSsyr2k
|
||||
//clblasSsyrk
|
||||
//clblasStbmv
|
||||
//clblasStbsv
|
||||
//clblasStpmv
|
||||
//clblasStpsv
|
||||
//clblasStrmm
|
||||
//clblasStrmv
|
||||
//clblasStrsm
|
||||
//clblasStrsv
|
||||
clblasTeardown
|
||||
//clblasZaxpy
|
||||
//clblasZcopy
|
||||
//clblasZdotc
|
||||
//clblasZdotu
|
||||
//clblasZdrot
|
||||
//clblasZdscal
|
||||
//clblasZgbmv
|
||||
clblasZgemm
|
||||
//clblasZgemv
|
||||
//clblasZgerc
|
||||
//clblasZgeru
|
||||
//clblasZhbmv
|
||||
//clblasZhemm
|
||||
//clblasZhemv
|
||||
//clblasZher
|
||||
//clblasZher2
|
||||
//clblasZher2k
|
||||
//clblasZherk
|
||||
//clblasZhpmv
|
||||
//clblasZhpr
|
||||
//clblasZhpr2
|
||||
//clblasZrotg
|
||||
//clblasZscal
|
||||
//clblasZswap
|
||||
//clblasZsymm
|
||||
//clblasZsyr2k
|
||||
//clblasZsyrk
|
||||
//clblasZtbmv
|
||||
//clblasZtbsv
|
||||
//clblasZtpmv
|
||||
//clblasZtpsv
|
||||
//clblasZtrmm
|
||||
//clblasZtrmv
|
||||
//clblasZtrsm
|
||||
//clblasZtrsv
|
||||
//clblasiCamax
|
||||
//clblasiDamax
|
||||
//clblasiSamax
|
||||
//clblasiZamax
|
||||
#total 147
|
||||
@@ -0,0 +1,34 @@
|
||||
clfftBakePlan
|
||||
//clfftCopyPlan
|
||||
clfftCreateDefaultPlan
|
||||
clfftDestroyPlan
|
||||
clfftEnqueueTransform
|
||||
//clfftGetLayout
|
||||
//clfftGetPlanBatchSize
|
||||
//clfftGetPlanContext
|
||||
//clfftGetPlanDim
|
||||
//clfftGetPlanDistance
|
||||
//clfftGetPlanInStride
|
||||
//clfftGetPlanLength
|
||||
//clfftGetPlanOutStride
|
||||
//clfftGetPlanPrecision
|
||||
//clfftGetPlanScale
|
||||
//clfftGetPlanTransposeResult
|
||||
//clfftGetResultLocation
|
||||
clfftGetTmpBufSize
|
||||
clfftGetVersion
|
||||
clfftSetLayout
|
||||
clfftSetPlanBatchSize
|
||||
//clfftSetPlanCallback
|
||||
//clfftSetPlanDim
|
||||
clfftSetPlanDistance
|
||||
clfftSetPlanInStride
|
||||
//clfftSetPlanLength
|
||||
clfftSetPlanOutStride
|
||||
clfftSetPlanPrecision
|
||||
clfftSetPlanScale
|
||||
//clfftSetPlanTransposeResult
|
||||
clfftSetResultLocation
|
||||
clfftSetup
|
||||
clfftTeardown
|
||||
#total 33
|
||||
@@ -10,10 +10,10 @@ from common import remove_comments, getTokens, getParameters, postProcessParamet
|
||||
try:
|
||||
if len(sys.argv) > 1:
|
||||
module_name = sys.argv[1]
|
||||
outfile = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/%s.hpp' % module_name, 'wb')
|
||||
outfile_impl = open('../autogenerated/%s_impl.hpp' % module_name, 'wb')
|
||||
outfile_static_impl = open('../autogenerated/%s_static_impl.hpp' % module_name, 'wb')
|
||||
outfile_wrappers = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/%s_wrappers.hpp' % module_name, 'wb')
|
||||
outfile = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/%s.hpp' % module_name, 'w')
|
||||
outfile_impl = open('../autogenerated/%s_impl.hpp' % module_name, 'w')
|
||||
outfile_static_impl = open('../autogenerated/%s_static_impl.hpp' % module_name, 'w')
|
||||
outfile_wrappers = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/%s_wrappers.hpp' % module_name, 'w')
|
||||
if len(sys.argv) > 2:
|
||||
f = open(sys.argv[2], "r")
|
||||
else:
|
||||
@@ -102,7 +102,7 @@ filterFileName = './filter/%s_functions.list' % module_name
|
||||
numEnabled = readFunctionFilter(fns, filterFileName)
|
||||
|
||||
functionsFilter = generateFilterNames(fns)
|
||||
filter_file = open(filterFileName, 'wb')
|
||||
filter_file = open(filterFileName, 'w')
|
||||
filter_file.write(functionsFilter)
|
||||
|
||||
ctx = {}
|
||||
|
||||
+8
-8
@@ -1,6 +1,6 @@
|
||||
#!/bin/python
|
||||
# usage:
|
||||
# cat clAmdBlas.h | $0
|
||||
# cat clBLAS.h | $0
|
||||
from __future__ import print_function
|
||||
import sys, re;
|
||||
|
||||
@@ -23,7 +23,7 @@ while True:
|
||||
assert isinstance(line, str)
|
||||
line = line.strip()
|
||||
parts = line.split();
|
||||
if (line.startswith('clAmd') or line.startswith('cl_') or line == 'void') and len(line.split()) == 1 and line.find('(') == -1:
|
||||
if (line.startswith('clblas') or line.startswith('cl_') or line == 'void') and len(line.split()) == 1 and line.find('(') == -1:
|
||||
fn = {}
|
||||
modifiers = []
|
||||
ret = []
|
||||
@@ -90,11 +90,11 @@ pprint(fns)
|
||||
|
||||
from common import *
|
||||
|
||||
filterFileName='./filter/opencl_clamdblas_functions.list'
|
||||
filterFileName='./filter/opencl_clblas_functions.list'
|
||||
numEnabled = readFunctionFilter(fns, filterFileName)
|
||||
|
||||
functionsFilter = generateFilterNames(fns)
|
||||
filter_file = open(filterFileName, 'wb')
|
||||
filter_file = open(filterFileName, 'w')
|
||||
filter_file.write(functionsFilter)
|
||||
|
||||
ctx = {}
|
||||
@@ -102,8 +102,8 @@ ctx['CLAMDBLAS_REMAP_ORIGIN'] = generateRemapOrigin(fns)
|
||||
ctx['CLAMDBLAS_REMAP_DYNAMIC'] = generateRemapDynamic(fns)
|
||||
ctx['CLAMDBLAS_FN_DECLARATIONS'] = generateFnDeclaration(fns)
|
||||
|
||||
sys.stdout = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdblas.hpp', 'wb')
|
||||
ProcessTemplate('template/opencl_clamdblas.hpp.in', ctx)
|
||||
sys.stdout = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/opencl_clblas.hpp', 'w')
|
||||
ProcessTemplate('template/opencl_clblas.hpp.in', ctx)
|
||||
|
||||
ctx['CL_FN_ENUMS'] = generateEnums(fns, 'OPENCLAMDBLAS_FN', )
|
||||
ctx['CL_FN_SWITCH'] = generateTemplates(23, 'openclamdblas_fn', 'openclamdblas_check_fn', '')
|
||||
@@ -111,5 +111,5 @@ ctx['CL_FN_ENTRY_DEFINITIONS'] = generateStructDefinitions(fns, 'openclamdblas_f
|
||||
ctx['CL_FN_ENTRY_LIST'] = generateListOfDefinitions(fns, 'openclamdblas_fn')
|
||||
ctx['CL_NUMBER_OF_ENABLED_FUNCTIONS'] = '// number of enabled functions: %d' % (numEnabled)
|
||||
|
||||
sys.stdout = open('../autogenerated/opencl_clamdblas_impl.hpp', 'wb')
|
||||
ProcessTemplate('template/opencl_clamdblas_impl.hpp.in', ctx)
|
||||
sys.stdout = open('../autogenerated/opencl_clblas_impl.hpp', 'w')
|
||||
ProcessTemplate('template/opencl_clblas_impl.hpp.in', ctx)
|
||||
+9
-9
@@ -1,6 +1,6 @@
|
||||
#!/bin/python
|
||||
# usage:
|
||||
# cat clAmdFft.h | $0
|
||||
# cat clFFT.h | $0
|
||||
from __future__ import print_function
|
||||
import sys, re;
|
||||
|
||||
@@ -23,7 +23,7 @@ while True:
|
||||
break
|
||||
assert isinstance(line, str)
|
||||
line = line.strip()
|
||||
if line.startswith('CLAMDFFTAPI'):
|
||||
if line.startswith('CLFFTAPI'):
|
||||
line = re.sub(r'\n', r'', line)
|
||||
while True:
|
||||
nl = f.readline()
|
||||
@@ -44,7 +44,7 @@ while True:
|
||||
|
||||
i = 0
|
||||
while True:
|
||||
if parts[i] == "CLAMDFFTAPI":
|
||||
if parts[i] == "CLFFTAPI":
|
||||
modifiers.append(parts[i])
|
||||
else:
|
||||
break
|
||||
@@ -87,11 +87,11 @@ pprint(fns)
|
||||
|
||||
from common import *
|
||||
|
||||
filterFileName='./filter/opencl_clamdfft_functions.list'
|
||||
filterFileName='./filter/opencl_clfft_functions.list'
|
||||
numEnabled = readFunctionFilter(fns, filterFileName)
|
||||
|
||||
functionsFilter = generateFilterNames(fns)
|
||||
filter_file = open(filterFileName, 'wb')
|
||||
filter_file = open(filterFileName, 'w')
|
||||
filter_file.write(functionsFilter)
|
||||
|
||||
ctx = {}
|
||||
@@ -99,8 +99,8 @@ ctx['CLAMDFFT_REMAP_ORIGIN'] = generateRemapOrigin(fns)
|
||||
ctx['CLAMDFFT_REMAP_DYNAMIC'] = generateRemapDynamic(fns)
|
||||
ctx['CLAMDFFT_FN_DECLARATIONS'] = generateFnDeclaration(fns)
|
||||
|
||||
sys.stdout = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdfft.hpp', 'wb')
|
||||
ProcessTemplate('template/opencl_clamdfft.hpp.in', ctx)
|
||||
sys.stdout = open('../../../../include/opencv2/core/opencl/runtime/autogenerated/opencl_clfft.hpp', 'w')
|
||||
ProcessTemplate('template/opencl_clfft.hpp.in', ctx)
|
||||
|
||||
ctx['CL_FN_ENUMS'] = generateEnums(fns, 'OPENCLAMDFFT_FN')
|
||||
ctx['CL_FN_SWITCH'] = generateTemplates(23, 'openclamdfft_fn', 'openclamdfft_check_fn', '')
|
||||
@@ -108,5 +108,5 @@ ctx['CL_FN_ENTRY_DEFINITIONS'] = generateStructDefinitions(fns, 'openclamdfft_fn
|
||||
ctx['CL_FN_ENTRY_LIST'] = generateListOfDefinitions(fns, 'openclamdfft_fn')
|
||||
ctx['CL_NUMBER_OF_ENABLED_FUNCTIONS'] = '// number of enabled functions: %d' % (numEnabled)
|
||||
|
||||
sys.stdout = open('../autogenerated/opencl_clamdfft_impl.hpp', 'wb')
|
||||
ProcessTemplate('template/opencl_clamdfft_impl.hpp.in', ctx)
|
||||
sys.stdout = open('../autogenerated/opencl_clfft_impl.hpp', 'w')
|
||||
ProcessTemplate('template/opencl_clfft_impl.hpp.in', ctx)
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
@CLAMDBLAS_REMAP_ORIGIN@
|
||||
|
||||
#include <clAmdBlas.h>
|
||||
#include <clBLAS.h>
|
||||
|
||||
@CLAMDBLAS_REMAP_DYNAMIC@
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
@CLAMDFFT_REMAP_ORIGIN@
|
||||
|
||||
#include <clAmdFft.h>
|
||||
#include <clFFT.h>
|
||||
|
||||
@CLAMDFFT_REMAP_DYNAMIC@
|
||||
|
||||
+5
-5
@@ -44,7 +44,7 @@
|
||||
#ifdef HAVE_CLAMDBLAS
|
||||
|
||||
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clblas.hpp"
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include <windows.h>
|
||||
@@ -54,10 +54,10 @@
|
||||
static HMODULE opencl_module = NULL;
|
||||
if (!opencl_module)
|
||||
{
|
||||
opencl_module = GetModuleHandleA("clAmdBlas.dll");
|
||||
opencl_module = GetModuleHandleA("clBLAS.dll");
|
||||
if (!opencl_module)
|
||||
{
|
||||
opencl_module = LoadLibraryA("clAmdBlas.dll");
|
||||
opencl_module = LoadLibraryA("clBLAS.dll");
|
||||
if (!opencl_module)
|
||||
return NULL;
|
||||
}
|
||||
@@ -76,7 +76,7 @@
|
||||
static void* h = NULL;
|
||||
if (!h)
|
||||
{
|
||||
h = dlopen("libclAmdBlas.so", RTLD_LAZY | RTLD_GLOBAL);
|
||||
h = dlopen("libclBLAS.so", RTLD_LAZY | RTLD_GLOBAL);
|
||||
if (!h)
|
||||
return NULL;
|
||||
}
|
||||
@@ -109,7 +109,7 @@ static void* openclamdblas_check_fn(int ID);
|
||||
// END OF CUSTOM FUNCTIONS HERE
|
||||
//
|
||||
|
||||
#include "autogenerated/opencl_clamdblas_impl.hpp"
|
||||
#include "autogenerated/opencl_clblas_impl.hpp"
|
||||
|
||||
static void* openclamdblas_check_fn(int ID)
|
||||
{
|
||||
+5
-5
@@ -44,7 +44,7 @@
|
||||
#ifdef HAVE_CLAMDFFT
|
||||
|
||||
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clamdfft.hpp"
|
||||
#include "opencv2/core/opencl/runtime/opencl_clfft.hpp"
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include <windows.h>
|
||||
@@ -54,10 +54,10 @@
|
||||
static HMODULE opencl_module = NULL;
|
||||
if (!opencl_module)
|
||||
{
|
||||
opencl_module = GetModuleHandleA("clAmdFft.Runtime.dll");
|
||||
opencl_module = GetModuleHandleA("clFFT.dll");
|
||||
if (!opencl_module)
|
||||
{
|
||||
opencl_module = LoadLibraryA("clAmdFft.Runtime.dll");
|
||||
opencl_module = LoadLibraryA("clFFT.dll");
|
||||
if (!opencl_module)
|
||||
return NULL;
|
||||
}
|
||||
@@ -76,7 +76,7 @@
|
||||
static void* h = NULL;
|
||||
if (!h)
|
||||
{
|
||||
h = dlopen("libclAmdFft.Runtime.so", RTLD_LAZY | RTLD_GLOBAL);
|
||||
h = dlopen("libclFFT.so", RTLD_LAZY | RTLD_GLOBAL);
|
||||
if (!h)
|
||||
return NULL;
|
||||
}
|
||||
@@ -109,7 +109,7 @@ static void* openclamdfft_check_fn(int ID);
|
||||
// END OF CUSTOM FUNCTIONS HERE
|
||||
//
|
||||
|
||||
#include "autogenerated/opencl_clamdfft_impl.hpp"
|
||||
#include "autogenerated/opencl_clfft_impl.hpp"
|
||||
|
||||
static void* openclamdfft_check_fn(int ID)
|
||||
{
|
||||
@@ -307,8 +307,7 @@ UMat& UMat::operator=(const UMat& m)
|
||||
else
|
||||
copySize(m);
|
||||
allocator = m.allocator;
|
||||
if (usageFlags == USAGE_DEFAULT)
|
||||
usageFlags = m.usageFlags;
|
||||
usageFlags = m.usageFlags;
|
||||
u = m.u;
|
||||
offset = m.offset;
|
||||
}
|
||||
@@ -332,9 +331,6 @@ void UMat::assignTo(UMat& m, int _type) const
|
||||
|
||||
void UMat::create(int _rows, int _cols, int _type, UMatUsageFlags _usageFlags)
|
||||
{
|
||||
_type &= TYPE_MASK;
|
||||
if( dims <= 2 && rows == _rows && cols == _cols && type() == _type && u )
|
||||
return;
|
||||
int sz[] = {_rows, _cols};
|
||||
create(2, sz, _type, _usageFlags);
|
||||
}
|
||||
@@ -426,7 +422,9 @@ UMat& UMat::operator=(UMat&& m)
|
||||
m.step.p = m.step.buf;
|
||||
m.size.p = &m.rows;
|
||||
}
|
||||
m.flags = MAGIC_VAL; m.dims = m.rows = m.cols = 0;
|
||||
m.flags = MAGIC_VAL;
|
||||
m.usageFlags = USAGE_DEFAULT;
|
||||
m.dims = m.rows = m.cols = 0;
|
||||
m.allocator = NULL;
|
||||
m.u = NULL;
|
||||
m.offset = 0;
|
||||
@@ -600,6 +598,7 @@ UMat Mat::getUMat(AccessFlag accessFlags, UMatUsageFlags usageFlags) const
|
||||
CV_XADD(&(u->urefcount), 1);
|
||||
}
|
||||
hdr.flags = flags;
|
||||
hdr.usageFlags = usageFlags;
|
||||
setSize(hdr, dims, size.p, step.p);
|
||||
finalizeHdr(hdr);
|
||||
hdr.u = new_u;
|
||||
@@ -610,16 +609,21 @@ UMat Mat::getUMat(AccessFlag accessFlags, UMatUsageFlags usageFlags) const
|
||||
|
||||
void UMat::create(int d, const int* _sizes, int _type, UMatUsageFlags _usageFlags)
|
||||
{
|
||||
this->usageFlags = _usageFlags;
|
||||
|
||||
int i;
|
||||
CV_Assert(0 <= d && d <= CV_MAX_DIM && _sizes);
|
||||
_type = CV_MAT_TYPE(_type);
|
||||
|
||||
if( u && (d == dims || (d == 1 && dims <= 2)) && _type == type() )
|
||||
// if param value is USAGE_DEFAULT by implicit default param value -or- explicit value
|
||||
// ...then don't change the existing usageFlags
|
||||
// it is not possible to change usage from non-default to USAGE_DEFAULT through create()
|
||||
// ...instead must construct UMat()
|
||||
if (_usageFlags == cv::USAGE_DEFAULT)
|
||||
{
|
||||
_usageFlags = usageFlags;
|
||||
}
|
||||
|
||||
if( u && (d == dims || (d == 1 && dims <= 2)) && _type == type() && _usageFlags == usageFlags )
|
||||
{
|
||||
if( d == 2 && rows == _sizes[0] && cols == _sizes[1] )
|
||||
return;
|
||||
for( i = 0; i < d; i++ )
|
||||
if( size[i] != _sizes[i] )
|
||||
break;
|
||||
@@ -636,6 +640,7 @@ void UMat::create(int d, const int* _sizes, int _type, UMatUsageFlags _usageFlag
|
||||
}
|
||||
|
||||
release();
|
||||
usageFlags = _usageFlags;
|
||||
if( d == 0 )
|
||||
return;
|
||||
flags = (_type & CV_MAT_TYPE_MASK) | MAGIC_VAL;
|
||||
|
||||
@@ -207,9 +207,32 @@ TEST_P(OCL_OpenCLExecutionContext_P, ScopeTest)
|
||||
executeUMatCall();
|
||||
}
|
||||
|
||||
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(/*nothing*/, OCL_OpenCLExecutionContext_P, getOpenCLTestConfigurations());
|
||||
|
||||
|
||||
typedef testing::TestWithParam<UMatUsageFlags> UsageFlagsFixture;
|
||||
OCL_TEST_P(UsageFlagsFixture, UsageFlagsRetained)
|
||||
{
|
||||
if (!cv::ocl::useOpenCL())
|
||||
{
|
||||
throw SkipTestException("OpenCL is not available / disabled");
|
||||
}
|
||||
|
||||
const UMatUsageFlags usage = GetParam();
|
||||
cv::UMat flip_in(10, 10, CV_32F, usage);
|
||||
cv::UMat flip_out(usage);
|
||||
cv::flip(flip_in, flip_out, 1);
|
||||
cv::ocl::finish();
|
||||
|
||||
ASSERT_EQ(usage, flip_in.usageFlags);
|
||||
ASSERT_EQ(usage, flip_out.usageFlags);
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
/*nothing*/,
|
||||
UsageFlagsFixture,
|
||||
testing::Values(USAGE_DEFAULT, USAGE_ALLOCATE_HOST_MEMORY, USAGE_ALLOCATE_DEVICE_MEMORY)
|
||||
);
|
||||
|
||||
|
||||
} } // namespace opencv_test::ocl
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#define OPENCV_DNN_VERSION_HPP
|
||||
|
||||
/// Use with major OpenCV version only.
|
||||
#define OPENCV_DNN_API_VERSION 20210301
|
||||
#define OPENCV_DNN_API_VERSION 20210608
|
||||
|
||||
#if !defined CV_DOXYGEN && !defined CV_STATIC_ANALYSIS && !defined CV_DNN_DONT_ADD_INLINE_NS
|
||||
#define CV__DNN_INLINE_NS __CV_CAT(dnn5_v, OPENCV_DNN_API_VERSION)
|
||||
|
||||
@@ -247,6 +247,122 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl { namespace cu
|
||||
);
|
||||
}
|
||||
|
||||
/** @brief Strided batched GEMM for colummn-major matrices
|
||||
*
|
||||
* \f$ C_i = \alpha A_i B_i + \beta C_i \f$ for a stack of matrices A, B and C indexed by i
|
||||
*
|
||||
* @tparam T matrix element type (must be `half` or `float`)
|
||||
*
|
||||
* @param handle valid cuBLAS Handle
|
||||
* @param transa use transposed matrix of A_i for computation
|
||||
* @param transb use transposed matrix of B_i for computation
|
||||
* @param rows_c number of rows in C_i
|
||||
* @param cols_c number of columns in C_i
|
||||
* @param common_dim common dimension of A_i (or trans A_i) and B_i (or trans B_i)
|
||||
* @param alpha scale factor for A_i B_i
|
||||
* @param[in] A pointer to stack of column-major matrices A in device memory
|
||||
* @param lda leading dimension of matrix A_i
|
||||
* @param strideA stride between matrices in A
|
||||
* @param[in] B pointer to stack of column-major matrices B in device memory
|
||||
* @param ldb leading dimension of matrix B_i
|
||||
* @param strideB stride between matrices in B
|
||||
* @param beta scale factor for C_i
|
||||
* @param[in,out] C pointer to stack of column-major matrices C in device memory
|
||||
* @param ldc leading dimension of matrix C_i
|
||||
* @param strideC stride between matrices in C
|
||||
* @param batchCount number of matrices in the batch
|
||||
*
|
||||
* Exception Guarantee: Basic
|
||||
*/
|
||||
template <class T>
|
||||
void gemmStridedBatched(const Handle& handle,
|
||||
bool transa, bool transb,
|
||||
std::size_t rows_c, std::size_t cols_c, std::size_t common_dim,
|
||||
T alpha, const DevicePtr<const T> A, std::size_t lda, std::size_t strideA,
|
||||
const DevicePtr<const T> B, std::size_t ldb, std::size_t strideB,
|
||||
T beta, const DevicePtr<T> C, std::size_t ldc, std::size_t strideC,
|
||||
std::size_t batchCount);
|
||||
|
||||
template <> inline
|
||||
void gemmStridedBatched<half>(const Handle& handle,
|
||||
bool transa, bool transb,
|
||||
std::size_t rows_c, std::size_t cols_c, std::size_t common_dim,
|
||||
half alpha, const DevicePtr<const half> A, std::size_t lda, std::size_t strideA,
|
||||
const DevicePtr<const half> B, std::size_t ldb, std::size_t strideB,
|
||||
half beta, const DevicePtr<half> C, std::size_t ldc, std::size_t strideC,
|
||||
std::size_t batchCount)
|
||||
{
|
||||
CV_Assert(handle);
|
||||
|
||||
const auto opa = transa ? CUBLAS_OP_T : CUBLAS_OP_N,
|
||||
opb = transb ? CUBLAS_OP_T : CUBLAS_OP_N;
|
||||
const auto irows_c = static_cast<int>(rows_c),
|
||||
icols_c = static_cast<int>(cols_c),
|
||||
icommon_dim = static_cast<int>(common_dim),
|
||||
ilda = static_cast<int>(lda),
|
||||
ildb = static_cast<int>(ldb),
|
||||
ildc = static_cast<int>(ldc);
|
||||
|
||||
const auto batch_count = static_cast<int>(batchCount);
|
||||
const auto stride_a = static_cast<long long int>(strideA),
|
||||
stride_b = static_cast<long long int>(strideB),
|
||||
stride_c = static_cast<long long int>(strideC);
|
||||
|
||||
CV_Assert(stride_c >= irows_c * icols_c); // output matrices must not overlap
|
||||
|
||||
CUDA4DNN_CHECK_CUBLAS(
|
||||
cublasHgemmStridedBatched(
|
||||
handle.get(),
|
||||
opa, opb,
|
||||
irows_c, icols_c, icommon_dim,
|
||||
&alpha, A.get(), ilda, stride_a,
|
||||
B.get(), ildb, stride_b,
|
||||
&beta, C.get(), ildc, stride_c,
|
||||
batch_count
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
template <> inline
|
||||
void gemmStridedBatched<float>(const Handle& handle,
|
||||
bool transa, bool transb,
|
||||
std::size_t rows_c, std::size_t cols_c, std::size_t common_dim,
|
||||
float alpha, const DevicePtr<const float> A, std::size_t lda, std::size_t strideA,
|
||||
const DevicePtr<const float> B, std::size_t ldb, std::size_t strideB,
|
||||
float beta, const DevicePtr<float> C, std::size_t ldc, std::size_t strideC,
|
||||
std::size_t batchCount)
|
||||
{
|
||||
CV_Assert(handle);
|
||||
|
||||
const auto opa = transa ? CUBLAS_OP_T : CUBLAS_OP_N,
|
||||
opb = transb ? CUBLAS_OP_T : CUBLAS_OP_N;
|
||||
const auto irows_c = static_cast<int>(rows_c),
|
||||
icols_c = static_cast<int>(cols_c),
|
||||
icommon_dim = static_cast<int>(common_dim),
|
||||
ilda = static_cast<int>(lda),
|
||||
ildb = static_cast<int>(ldb),
|
||||
ildc = static_cast<int>(ldc);
|
||||
|
||||
const auto batch_count = static_cast<int>(batchCount);
|
||||
const auto stride_a = static_cast<long long int>(strideA),
|
||||
stride_b = static_cast<long long int>(strideB),
|
||||
stride_c = static_cast<long long int>(strideC);
|
||||
|
||||
CV_Assert(stride_c >= irows_c * icols_c); // output matrices must not overlap
|
||||
|
||||
CUDA4DNN_CHECK_CUBLAS(
|
||||
cublasSgemmStridedBatched(
|
||||
handle.get(),
|
||||
opa, opb,
|
||||
irows_c, icols_c, icommon_dim,
|
||||
&alpha, A.get(), ilda, stride_a,
|
||||
B.get(), ildb, stride_b,
|
||||
&beta, C.get(), ildc, stride_c,
|
||||
batch_count
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}}}}} /* namespace cv::dnn::cuda4dnn::csl::cublas */
|
||||
|
||||
#endif /* OPENCV_DNN_SRC_CUDA4DNN_CSL_CUBLAS_HPP */
|
||||
|
||||
@@ -369,6 +369,26 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
shape.erase(std::begin(shape) + axis);
|
||||
}
|
||||
|
||||
/** @brief squeezes the tensor
|
||||
*
|
||||
* removes leading singleton axes until the tensor's rank is equal to the requested rank
|
||||
*
|
||||
* Pre-conditions:
|
||||
* - the tensor must be non-empty
|
||||
* - the tensor's rank must be at least two
|
||||
* - the tensor's rank must be at least the requested rank
|
||||
* - the tensor must be squeezable up to the requested rank
|
||||
*
|
||||
* Exception Guarantee: Strong
|
||||
*/
|
||||
void squeeze_to(int r) {
|
||||
CV_Assert(!empty());
|
||||
CV_Assert(rank() >= r);
|
||||
CV_Assert(std::all_of(std::begin(shape), std::end(shape) - r, [](size_type x){ return x == 1; }));
|
||||
std::copy(std::end(shape) - r, std::end(shape), std::begin(shape));
|
||||
shape.resize(r);
|
||||
}
|
||||
|
||||
/** @brief unsqueezes the tensor
|
||||
*
|
||||
* adds a axis of unit size at the requested before the specified axis
|
||||
@@ -665,6 +685,26 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
shape.erase(std::begin(shape) + axis);
|
||||
}
|
||||
|
||||
/** @brief squeezes the tensor
|
||||
*
|
||||
* removes leading singleton axes until the tensor's rank is equal to the requested rank
|
||||
*
|
||||
* Pre-conditions:
|
||||
* - the tensor must be non-empty
|
||||
* - the tensor's rank must be at least two
|
||||
* - the tensor's rank must be at least the requested rank
|
||||
* - the tensor must be squeezable up to the requested rank
|
||||
*
|
||||
* Exception Guarantee: Strong
|
||||
*/
|
||||
void squeeze_to(int r) {
|
||||
CV_Assert(!empty());
|
||||
CV_Assert(rank() >= r);
|
||||
CV_Assert(std::all_of(std::begin(shape), std::end(shape) - r, [](size_type x){ return x == 1; }));
|
||||
std::copy(std::end(shape) - r, std::end(shape), std::begin(shape));
|
||||
shape.resize(r);
|
||||
}
|
||||
|
||||
/** @brief unsqueezes the tensor
|
||||
*
|
||||
* adds a axis of unit size at the requested before the specified axis
|
||||
@@ -1010,6 +1050,26 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
shape.erase(std::begin(shape) + axis);
|
||||
}
|
||||
|
||||
/** @brief squeezes the tensor
|
||||
*
|
||||
* removes leading singleton axes until the tensor's rank is equal to the requested rank
|
||||
*
|
||||
* Pre-conditions:
|
||||
* - the tensor must be non-empty
|
||||
* - the tensor's rank must be at least two
|
||||
* - the tensor's rank must be at least the requested rank
|
||||
* - the tensor must be squeezable up to the requested rank
|
||||
*
|
||||
* Exception Guarantee: Strong
|
||||
*/
|
||||
void squeeze_to(int r) {
|
||||
CV_Assert(!empty());
|
||||
CV_Assert(rank() >= r);
|
||||
CV_Assert(std::all_of(std::begin(shape), std::end(shape) - r, [](size_type x){ return x == 1; }));
|
||||
std::copy(std::end(shape) - r, std::end(shape), std::begin(shape));
|
||||
shape.resize(r);
|
||||
}
|
||||
|
||||
/** @brief unsqueezes the tensor
|
||||
*
|
||||
* adds a axis of unit size at the requested before the specified axis
|
||||
|
||||
@@ -44,6 +44,30 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
memcpy(dest.get(), src.get(), dest.size(), stream);
|
||||
}
|
||||
|
||||
namespace detail {
|
||||
template <class T>
|
||||
void assertGEMMCompatiblity(const TensorSpan<T>& result, bool transa, const TensorView<T>& A, bool transb, const TensorView<T>& B) {
|
||||
/* check dimension requirements for matrix multiplication */
|
||||
if (!transa && !transb) {
|
||||
CV_Assert(A.get_axis_size(-2) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-1) == B.get_axis_size(-2));
|
||||
CV_Assert(B.get_axis_size(-1) == result.get_axis_size(-1));
|
||||
} else if (!transa && transb) {
|
||||
CV_Assert(A.get_axis_size(-2) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-1) == B.get_axis_size(-1));
|
||||
CV_Assert(B.get_axis_size(-2) == result.get_axis_size(-1));
|
||||
} else if (transa && !transb) {
|
||||
CV_Assert(A.get_axis_size(-1) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-2) == B.get_axis_size(-2));
|
||||
CV_Assert(B.get_axis_size(-1) == result.get_axis_size(-1));
|
||||
} else {
|
||||
CV_Assert(A.get_axis_size(-1) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-2) == B.get_axis_size(-1));
|
||||
CV_Assert(B.get_axis_size(-2) == result.get_axis_size(-1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** @brief performs generalized matrix-multiplication
|
||||
*
|
||||
* Pre-conditions:
|
||||
@@ -54,29 +78,10 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
*/
|
||||
template <class T> inline
|
||||
void gemm(const cublas::Handle& handle, T beta, TensorSpan<T> result, T alpha, bool transa, TensorView<T> A, bool transb, TensorView<T> B) {
|
||||
/* matrix operations can be performed only on rank two or less tensors */
|
||||
CV_Assert(get_effective_rank(A) <= 2 &&
|
||||
get_effective_rank(B) <= 2 &&
|
||||
get_effective_rank(result) <= 2);
|
||||
|
||||
/* check dimension requirements for matrix multiplication */
|
||||
if (!transa && !transb) {
|
||||
CV_Assert(A.get_axis_size(-2) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-1) == B.get_axis_size(-2));
|
||||
CV_Assert(B.get_axis_size(-1) == result.get_axis_size(-1));
|
||||
} else if (!transa && transb) {
|
||||
CV_Assert(A.get_axis_size(-2) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-1) == B.get_axis_size(-1));
|
||||
CV_Assert(B.get_axis_size(-2) == result.get_axis_size(-1));
|
||||
} else if (transa && !transb) {
|
||||
CV_Assert(A.get_axis_size(-1) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-2) == B.get_axis_size(-2));
|
||||
CV_Assert(B.get_axis_size(-1) == result.get_axis_size(-1));
|
||||
} else {
|
||||
CV_Assert(A.get_axis_size(-1) == result.get_axis_size(-2));
|
||||
CV_Assert(A.get_axis_size(-2) == B.get_axis_size(-1));
|
||||
CV_Assert(B.get_axis_size(-2) == result.get_axis_size(-1));
|
||||
}
|
||||
/* matrix operations can be performed only on tensors with rank two or below */
|
||||
CV_Assert(get_effective_rank(A) <= 2);
|
||||
CV_Assert(get_effective_rank(B) <= 2);
|
||||
CV_Assert(get_effective_rank(result) <= 2);
|
||||
|
||||
const auto result_nr = result.get_axis_size(-2);
|
||||
const auto result_nc = result.get_axis_size(-1);
|
||||
@@ -84,6 +89,8 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
const auto A_nc = A.get_axis_size(-1);
|
||||
const auto B_nc = B.get_axis_size(-1);
|
||||
|
||||
detail::assertGEMMCompatiblity(result, transa, A, transb, B);
|
||||
|
||||
/* tensors are stored in row-major but cublas::gemm operates on column-major matrices
|
||||
* a row-major matrix when read as column-major matrix gives the transpose of the intended matrix
|
||||
*
|
||||
@@ -103,6 +110,47 @@ namespace cv { namespace dnn { namespace cuda4dnn { namespace csl {
|
||||
beta, result.get(), result_nc);
|
||||
}
|
||||
|
||||
/** @brief performs generalized matrix-multiplication for a strided batch of matrices
|
||||
*
|
||||
* Pre-conditions:
|
||||
* - A, B and C must be rank three tensors with dimensions (batch, rows, cols)
|
||||
* - the last two axes of \p A and \p B must meet the mathematical requirements for matrix multiplication
|
||||
* - \p result must be large enough to hold the result and the matrices must not overlap in memory
|
||||
* - batch dimension should be same in \p A, \p B and \p result
|
||||
*
|
||||
* Exception Guarantee: Basic
|
||||
*/
|
||||
template <class T> inline
|
||||
void gemmStridedBatched(const cublas::Handle& handle, T beta, TensorSpan<T> result, T alpha, bool transa, TensorView<T> A, bool transb, TensorView<T> B) {
|
||||
CV_Assert(A.rank() == 3);
|
||||
CV_Assert(B.rank() == 3);
|
||||
CV_Assert(result.rank() == 3);
|
||||
|
||||
const auto batch_size = result.get_axis_size(0);
|
||||
CV_Assert(batch_size == A.get_axis_size(0));
|
||||
CV_Assert(batch_size == B.get_axis_size(0));
|
||||
|
||||
detail::assertGEMMCompatiblity(result, transa, A, transb, B);
|
||||
|
||||
const auto result_nr = result.get_axis_size(-2);
|
||||
const auto result_nc = result.get_axis_size(-1);
|
||||
const auto common_dim = A.get_axis_size(transa ? -2 : -1);
|
||||
const auto A_nc = A.get_axis_size(-1);
|
||||
const auto B_nc = B.get_axis_size(-1);
|
||||
|
||||
std::size_t strideA = (A.size() / batch_size),
|
||||
strideB = (B.size() / batch_size),
|
||||
strideC = (result.size() / batch_size);
|
||||
|
||||
cublas::gemmStridedBatched<T>(handle,
|
||||
transb, transa,
|
||||
result_nc, result_nr, common_dim,
|
||||
alpha, B.get(), B_nc, strideB,
|
||||
A.get(), A_nc, strideA,
|
||||
beta, result.get(), result_nc, strideC,
|
||||
batch_size);
|
||||
}
|
||||
|
||||
/** @brief performs element-wise addition with broadcasting
|
||||
*
|
||||
* Pre-conditions:
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef OPENCV_DNN_SRC_CUDA4DNN_PRIMITIVES_MATMUL_HPP
|
||||
#define OPENCV_DNN_SRC_CUDA4DNN_PRIMITIVES_MATMUL_HPP
|
||||
|
||||
#include "../../op_cuda.hpp"
|
||||
|
||||
#include "../csl/stream.hpp"
|
||||
#include "../csl/cublas.hpp"
|
||||
#include "../csl/tensor.hpp"
|
||||
#include "../csl/tensor_ops.hpp"
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace cv { namespace dnn { namespace cuda4dnn {
|
||||
|
||||
template <class T>
|
||||
class MatMulOp final : public CUDABackendNode {
|
||||
public:
|
||||
using wrapper_type = GetCUDABackendWrapperType<T>;
|
||||
|
||||
MatMulOp(csl::Stream stream_, csl::cublas::Handle handle)
|
||||
: stream(std::move(stream_)), cublasHandle(std::move(handle))
|
||||
{
|
||||
}
|
||||
|
||||
void forward(
|
||||
const std::vector<cv::Ptr<BackendWrapper>>& inputs,
|
||||
const std::vector<cv::Ptr<BackendWrapper>>& outputs,
|
||||
csl::Workspace& workspace) override
|
||||
{
|
||||
CV_Assert(inputs.size() == 2 && outputs.size() == 1);
|
||||
|
||||
auto input1_wrapper = inputs[0].dynamicCast<wrapper_type>();
|
||||
auto input1 = input1_wrapper->getView();
|
||||
|
||||
auto input2_wrapper = inputs[1].dynamicCast<wrapper_type>();
|
||||
auto input2 = input2_wrapper->getView();
|
||||
|
||||
auto output_wrapper = outputs[0].dynamicCast<wrapper_type>();
|
||||
auto output = output_wrapper->getSpan();
|
||||
|
||||
auto rank = output.rank();
|
||||
CV_Assert(rank == input1.rank());
|
||||
CV_Assert(rank == input2.rank());
|
||||
CV_Assert(rank >= 2); // 1D MatMul not supported
|
||||
|
||||
for (int i = 0; i < rank - 2; i++)
|
||||
{
|
||||
// broadcasting not supported
|
||||
auto size = output.get_axis_size(i);
|
||||
CV_Assert(input1.get_axis_size(i) == size);
|
||||
CV_Assert(input2.get_axis_size(i) == size);
|
||||
}
|
||||
|
||||
auto m = input1.get_axis_size(-2);
|
||||
auto n = input1.get_axis_size(-1);
|
||||
auto k = input2.get_axis_size(-1);
|
||||
auto b = input1.size() / m / n;
|
||||
CV_Assert(input2.get_axis_size(-2) == n);
|
||||
CV_Assert(output.get_axis_size(-2) == m);
|
||||
CV_Assert(output.get_axis_size(-1) == k);
|
||||
|
||||
if (get_effective_rank(output) <= 2)
|
||||
{
|
||||
CV_Assert(b == 1);
|
||||
CV_Assert(get_effective_rank(input1) <= 2);
|
||||
CV_Assert(get_effective_rank(input2) <= 2);
|
||||
csl::tensor_ops::gemm<T>(cublasHandle, 0.0, output, 1.0, false, input1, false, input2);
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_Assert(rank >= 3);
|
||||
input1.reshape(b, m, n);
|
||||
input2.reshape(b, n, k);
|
||||
output.reshape(b, m, k);
|
||||
input1.squeeze_to(3);
|
||||
input2.squeeze_to(3);
|
||||
output.squeeze_to(3);
|
||||
csl::tensor_ops::gemmStridedBatched<T>(cublasHandle, 0.0, output, 1.0, false, input1, false, input2);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
csl::Stream stream;
|
||||
csl::cublas::Handle cublasHandle;
|
||||
};
|
||||
|
||||
}}} /* namespace cv::dnn::cuda4dnn */
|
||||
|
||||
#endif /* OPENCV_DNN_SRC_CUDA4DNN_PRIMITIVES_MATMUL_HPP */
|
||||
@@ -55,6 +55,7 @@ using namespace cv::dnn::ocl4dnn;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CUDA
|
||||
#include "../cuda4dnn/primitives/matmul.hpp"
|
||||
#include "../cuda4dnn/primitives/inner_product.hpp"
|
||||
using namespace cv::dnn::cuda4dnn;
|
||||
#endif
|
||||
@@ -523,10 +524,14 @@ public:
|
||||
{
|
||||
auto context = reinterpret_cast<csl::CSLContext*>(context_);
|
||||
|
||||
if (weightsMat.empty())
|
||||
{
|
||||
CV_Assert(!bias);
|
||||
return make_cuda_node<cuda4dnn::MatMulOp>(preferableTarget, std::move(context->stream), std::move(context->cublas_handle));
|
||||
}
|
||||
|
||||
auto input_wrapper = inputs[0].dynamicCast<CUDABackendWrapper>();
|
||||
|
||||
auto flatten_start_axis = normalize_axis(axis, input_wrapper->getRank());
|
||||
|
||||
auto biasMat_ = bias ? biasMat : Mat();
|
||||
return make_cuda_node<cuda4dnn::InnerProductOp>(preferableTarget, std::move(context->stream), std::move(context->cublas_handle), flatten_start_axis, weightsMat, biasMat_);
|
||||
}
|
||||
|
||||
@@ -485,8 +485,6 @@ TEST_P(Test_ONNX_layers, MatMul)
|
||||
{
|
||||
if (backend == DNN_BACKEND_INFERENCE_ENGINE_NN_BUILDER_2019)
|
||||
applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER);
|
||||
if (backend == DNN_BACKEND_CUDA)
|
||||
applyTestTag(CV_TEST_TAG_DNN_SKIP_CUDA); // not supported
|
||||
|
||||
testONNXModels("matmul_2d");
|
||||
testONNXModels("matmul_3d");
|
||||
@@ -735,8 +733,6 @@ TEST_P(Test_ONNX_layers, MatmulWithTwoInputs)
|
||||
#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_LT(2020040000)
|
||||
applyTestTag(CV_TEST_TAG_DNN_SKIP_IE);
|
||||
#endif
|
||||
if (backend == DNN_BACKEND_CUDA)
|
||||
applyTestTag(CV_TEST_TAG_DNN_SKIP_CUDA);
|
||||
testONNXModels("matmul_with_two_inputs");
|
||||
}
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ struct GAPI_EXPORTS StereoInitParam {
|
||||
|
||||
int numDisparities = 0;
|
||||
int blockSize = 21;
|
||||
double baseline = 70.;
|
||||
double focus = 1000.;
|
||||
double baseline = 63.5;
|
||||
double focus = 3.6;
|
||||
};
|
||||
|
||||
} // namespace cpu
|
||||
|
||||
@@ -43,6 +43,19 @@ namespace detail
|
||||
GOPAQUE, // a cv::GOpaqueU (note - exactly GOpaqueU, not GOpaque<T>!)
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
constexpr const char* meta_to_string() noexcept;
|
||||
template<>
|
||||
constexpr const char* meta_to_string<cv::GMatDesc>() noexcept { return "GMatDesc"; }
|
||||
template<>
|
||||
constexpr const char* meta_to_string<cv::GScalarDesc>() noexcept { return "GScalarDesc"; }
|
||||
template<>
|
||||
constexpr const char* meta_to_string<cv::GArrayDesc>() noexcept { return "GArrayDesc"; }
|
||||
template<>
|
||||
constexpr const char* meta_to_string<cv::GOpaqueDesc>() noexcept { return "GOpaqueDesc"; }
|
||||
template<>
|
||||
constexpr const char* meta_to_string<cv::GFrameDesc>() noexcept { return "GFrameDesc";}
|
||||
|
||||
// Describe G-API types (G-types) with traits. Mostly used by
|
||||
// cv::GArg to store meta information about types passed into
|
||||
// operation arguments. Please note that cv::GComputation is
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace detail
|
||||
template<> struct ProtoToMeta<cv::GScalar> { using type = cv::GScalarDesc; };
|
||||
template<typename U> struct ProtoToMeta<cv::GArray<U> > { using type = cv::GArrayDesc; };
|
||||
template<typename U> struct ProtoToMeta<cv::GOpaque<U> > { using type = cv::GOpaqueDesc; };
|
||||
template<> struct ProtoToMeta<cv::GFrame> { using type = cv::GFrameDesc; };
|
||||
template<typename T> using ProtoToMetaT = typename ProtoToMeta<T>::type;
|
||||
|
||||
//workaround for MSVC 19.0 bug
|
||||
|
||||
@@ -531,7 +531,11 @@ typename Net::Result infer(Args&&... args) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Special network type
|
||||
* @brief Generic network type: input and output layers are configured dynamically at runtime
|
||||
*
|
||||
* Unlike the network types defined with G_API_NET macro, this one
|
||||
* doesn't fix number of network inputs and outputs at the compilation stage
|
||||
* thus providing user with an opportunity to program them in runtime.
|
||||
*/
|
||||
struct Generic { };
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
//
|
||||
// Copyright (C) 2019 Intel Corporation
|
||||
// Copyright (C) 2019-2021 Intel Corporation
|
||||
|
||||
#ifndef OPENCV_GAPI_INFER_IE_HPP
|
||||
#define OPENCV_GAPI_INFER_IE_HPP
|
||||
@@ -29,7 +29,7 @@ namespace ie {
|
||||
GAPI_EXPORTS cv::gapi::GBackend backend();
|
||||
|
||||
/**
|
||||
* Specify how G-API and IE should trait input data
|
||||
* Specifies how G-API and IE should trait input data
|
||||
*
|
||||
* In OpenCV, the same cv::Mat is used to represent both
|
||||
* image and tensor data. Sometimes those are hardly distinguishable,
|
||||
@@ -47,34 +47,30 @@ enum class TraitAs: int
|
||||
using IEConfig = std::map<std::string, std::string>;
|
||||
|
||||
namespace detail {
|
||||
struct ParamDesc {
|
||||
std::string model_path;
|
||||
std::string weights_path;
|
||||
std::string device_id;
|
||||
struct ParamDesc {
|
||||
std::string model_path;
|
||||
std::string weights_path;
|
||||
std::string device_id;
|
||||
|
||||
// NB: Here order follows the `Net` API
|
||||
std::vector<std::string> input_names;
|
||||
std::vector<std::string> output_names;
|
||||
std::vector<std::string> input_names;
|
||||
std::vector<std::string> output_names;
|
||||
|
||||
using ConstInput = std::pair<cv::Mat, TraitAs>;
|
||||
std::unordered_map<std::string, ConstInput> const_inputs;
|
||||
using ConstInput = std::pair<cv::Mat, TraitAs>;
|
||||
std::unordered_map<std::string, ConstInput> const_inputs;
|
||||
|
||||
// NB: nun_* may differ from topology's real input/output port numbers
|
||||
// (e.g. topology's partial execution)
|
||||
std::size_t num_in; // How many inputs are defined in the operation
|
||||
std::size_t num_out; // How many outputs are defined in the operation
|
||||
std::size_t num_in;
|
||||
std::size_t num_out;
|
||||
|
||||
enum class Kind { Load, Import };
|
||||
Kind kind;
|
||||
bool is_generic;
|
||||
IEConfig config;
|
||||
enum class Kind {Load, Import};
|
||||
Kind kind;
|
||||
bool is_generic;
|
||||
IEConfig config;
|
||||
|
||||
std::map<std::string, std::vector<std::size_t>> reshape_table;
|
||||
std::unordered_set<std::string> layer_names_to_reshape;
|
||||
std::map<std::string, std::vector<std::size_t>> reshape_table;
|
||||
std::unordered_set<std::string> layer_names_to_reshape;
|
||||
|
||||
// NB: Number of asyncrhonious infer requests
|
||||
size_t nireq;
|
||||
};
|
||||
size_t nireq;
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
// FIXME: this is probably a shared (reusable) thing
|
||||
@@ -88,8 +84,21 @@ struct PortCfg {
|
||||
, std::tuple_size<typename Net::OutArgs>::value >;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief This structure provides functions
|
||||
* that fill inference parameters for "OpenVINO Toolkit" model.
|
||||
*/
|
||||
template<typename Net> class Params {
|
||||
public:
|
||||
/** @brief Class constructor.
|
||||
|
||||
Constructs Params based on model information and specifies default values for other
|
||||
inference description parameters. Model is loaded and compiled using "OpenVINO Toolkit".
|
||||
|
||||
@param model Path to topology IR (.xml file).
|
||||
@param weights Path to weights (.bin file).
|
||||
@param device target device to use.
|
||||
*/
|
||||
Params(const std::string &model,
|
||||
const std::string &weights,
|
||||
const std::string &device)
|
||||
@@ -104,6 +113,13 @@ public:
|
||||
, 1u} {
|
||||
};
|
||||
|
||||
/** @overload
|
||||
Use this constructor to work with pre-compiled network.
|
||||
Model is imported from a pre-compiled blob.
|
||||
|
||||
@param model Path to model.
|
||||
@param device target device to use.
|
||||
*/
|
||||
Params(const std::string &model,
|
||||
const std::string &device)
|
||||
: desc{ model, {}, device, {}, {}, {}
|
||||
@@ -117,22 +133,53 @@ public:
|
||||
, 1u} {
|
||||
};
|
||||
|
||||
Params<Net>& cfgInputLayers(const typename PortCfg<Net>::In &ll) {
|
||||
/** @brief Specifies sequence of network input layers names for inference.
|
||||
|
||||
The function is used to associate cv::gapi::infer<> inputs with the model inputs.
|
||||
Number of names has to match the number of network inputs as defined in G_API_NET().
|
||||
In case a network has only single input layer, there is no need to specify name manually.
|
||||
|
||||
@param layer_names std::array<std::string, N> where N is the number of inputs
|
||||
as defined in the @ref G_API_NET. Contains names of input layers.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& cfgInputLayers(const typename PortCfg<Net>::In &layer_names) {
|
||||
desc.input_names.clear();
|
||||
desc.input_names.reserve(ll.size());
|
||||
std::copy(ll.begin(), ll.end(),
|
||||
desc.input_names.reserve(layer_names.size());
|
||||
std::copy(layer_names.begin(), layer_names.end(),
|
||||
std::back_inserter(desc.input_names));
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params<Net>& cfgOutputLayers(const typename PortCfg<Net>::Out &ll) {
|
||||
/** @brief Specifies sequence of network output layers names for inference.
|
||||
|
||||
The function is used to associate cv::gapi::infer<> outputs with the model outputs.
|
||||
Number of names has to match the number of network outputs as defined in G_API_NET().
|
||||
In case a network has only single output layer, there is no need to specify name manually.
|
||||
|
||||
@param layer_names std::array<std::string, N> where N is the number of outputs
|
||||
as defined in the @ref G_API_NET. Contains names of output layers.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& cfgOutputLayers(const typename PortCfg<Net>::Out &layer_names) {
|
||||
desc.output_names.clear();
|
||||
desc.output_names.reserve(ll.size());
|
||||
std::copy(ll.begin(), ll.end(),
|
||||
desc.output_names.reserve(layer_names.size());
|
||||
std::copy(layer_names.begin(), layer_names.end(),
|
||||
std::back_inserter(desc.output_names));
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @brief Specifies a constant input.
|
||||
|
||||
The function is used to set a constant input. This input has to be
|
||||
a preprocessed tensor if its type is TENSOR. Need to provide name of the
|
||||
network layer which will receive provided data.
|
||||
|
||||
@param layer_name Name of network layer.
|
||||
@param data cv::Mat that contains data which will be associated with network layer.
|
||||
@param hint Input type @sa cv::gapi::ie::TraitAs.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& constInput(const std::string &layer_name,
|
||||
const cv::Mat &data,
|
||||
TraitAs hint = TraitAs::TENSOR) {
|
||||
@@ -140,52 +187,100 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @brief Specifies OpenVINO plugin configuration.
|
||||
|
||||
The function is used to set configuration for OpenVINO plugin. Some parameters
|
||||
can be different for each plugin. Please follow https://docs.openvinotoolkit.org/latest/index.html
|
||||
to check information about specific plugin.
|
||||
|
||||
@param cfg Map of pairs: (config parameter name, config parameter value).
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params& pluginConfig(const IEConfig& cfg) {
|
||||
desc.config = cfg;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
Function with a rvalue parameter.
|
||||
|
||||
@param cfg rvalue map of pairs: (config parameter name, config parameter value).
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params& pluginConfig(IEConfig&& cfg) {
|
||||
desc.config = std::move(cfg);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params& pluginConfig(const IEConfig& cfg) {
|
||||
desc.config = cfg;
|
||||
return *this;
|
||||
}
|
||||
/** @brief Specifies number of asynchronous inference requests.
|
||||
|
||||
@param nireq Number of inference asynchronous requests.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params& cfgNumRequests(size_t nireq) {
|
||||
GAPI_Assert(nireq > 0 && "Number of infer requests must be greater than zero!");
|
||||
desc.nireq = nireq;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params<Net>& cfgInputReshape(std::map<std::string, std::vector<std::size_t>>&& reshape_table) {
|
||||
desc.reshape_table = std::move(reshape_table);
|
||||
return *this;
|
||||
}
|
||||
/** @brief Specifies new input shapes for the network inputs.
|
||||
|
||||
The function is used to specify new input shapes for the network inputs.
|
||||
Follow https://docs.openvinotoolkit.org/latest/classInferenceEngine_1_1networkNetwork.html
|
||||
for additional information.
|
||||
|
||||
@param reshape_table Map of pairs: name of corresponding data and its dimension.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& cfgInputReshape(const std::map<std::string, std::vector<std::size_t>>& reshape_table) {
|
||||
desc.reshape_table = reshape_table;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params<Net>& cfgInputReshape(std::string&& layer_name, std::vector<size_t>&& layer_dims) {
|
||||
desc.reshape_table.emplace(layer_name, layer_dims);
|
||||
/** @overload */
|
||||
Params<Net>& cfgInputReshape(std::map<std::string, std::vector<std::size_t>>&& reshape_table) {
|
||||
desc.reshape_table = std::move(reshape_table);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
|
||||
@param layer_name Name of layer.
|
||||
@param layer_dims New dimensions for this layer.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& cfgInputReshape(const std::string& layer_name, const std::vector<size_t>& layer_dims) {
|
||||
desc.reshape_table.emplace(layer_name, layer_dims);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params<Net>& cfgInputReshape(std::unordered_set<std::string>&& layer_names) {
|
||||
desc.layer_names_to_reshape = std::move(layer_names);
|
||||
/** @overload */
|
||||
Params<Net>& cfgInputReshape(std::string&& layer_name, std::vector<size_t>&& layer_dims) {
|
||||
desc.reshape_table.emplace(layer_name, layer_dims);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
|
||||
@param layer_names set of names of network layers that will be used for network reshape.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& cfgInputReshape(const std::unordered_set<std::string>& layer_names) {
|
||||
desc.layer_names_to_reshape = layer_names;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
|
||||
@param layer_names rvalue set of the selected layers will be reshaped automatically
|
||||
its input image size.
|
||||
@return reference to this parameter structure.
|
||||
*/
|
||||
Params<Net>& cfgInputReshape(std::unordered_set<std::string>&& layer_names) {
|
||||
desc.layer_names_to_reshape = std::move(layer_names);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// BEGIN(G-API's network parametrization API)
|
||||
GBackend backend() const { return cv::gapi::ie::backend(); }
|
||||
std::string tag() const { return Net::tag(); }
|
||||
@@ -196,9 +291,24 @@ protected:
|
||||
detail::ParamDesc desc;
|
||||
};
|
||||
|
||||
/*
|
||||
* @brief This structure provides functions for generic network type that
|
||||
* fill inference parameters.
|
||||
* @see struct Generic
|
||||
*/
|
||||
template<>
|
||||
class Params<cv::gapi::Generic> {
|
||||
public:
|
||||
/** @brief Class constructor.
|
||||
|
||||
Constructs Params based on model information and sets default values for other
|
||||
inference description parameters. Model is loaded and compiled using OpenVINO Toolkit.
|
||||
|
||||
@param tag string tag of the network for which these parameters are intended.
|
||||
@param model path to topology IR (.xml file).
|
||||
@param weights path to weights (.bin file).
|
||||
@param device target device to use.
|
||||
*/
|
||||
Params(const std::string &tag,
|
||||
const std::string &model,
|
||||
const std::string &weights,
|
||||
@@ -206,22 +316,34 @@ public:
|
||||
: desc{ model, weights, device, {}, {}, {}, 0u, 0u, detail::ParamDesc::Kind::Load, true, {}, {}, {}, 1u}, m_tag(tag) {
|
||||
};
|
||||
|
||||
/** @overload
|
||||
|
||||
This constructor for pre-compiled networks. Model is imported from pre-compiled
|
||||
blob.
|
||||
|
||||
@param tag string tag of the network for which these parameters are intended.
|
||||
@param model path to model.
|
||||
@param device target device to use.
|
||||
*/
|
||||
Params(const std::string &tag,
|
||||
const std::string &model,
|
||||
const std::string &device)
|
||||
: desc{ model, {}, device, {}, {}, {}, 0u, 0u, detail::ParamDesc::Kind::Import, true, {}, {}, {}, 1u}, m_tag(tag) {
|
||||
};
|
||||
|
||||
Params& pluginConfig(IEConfig&& cfg) {
|
||||
desc.config = std::move(cfg);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @see ie::Params::pluginConfig. */
|
||||
Params& pluginConfig(const IEConfig& cfg) {
|
||||
desc.config = cfg;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload */
|
||||
Params& pluginConfig(IEConfig&& cfg) {
|
||||
desc.config = std::move(cfg);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @see ie::Params::constInput. */
|
||||
Params& constInput(const std::string &layer_name,
|
||||
const cv::Mat &data,
|
||||
TraitAs hint = TraitAs::TENSOR) {
|
||||
@@ -229,37 +351,44 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @see ie::Params::cfgNumRequests. */
|
||||
Params& cfgNumRequests(size_t nireq) {
|
||||
GAPI_Assert(nireq > 0 && "Number of infer requests must be greater than zero!");
|
||||
desc.nireq = nireq;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params& cfgInputReshape(std::map<std::string, std::vector<std::size_t>> && reshape_table) {
|
||||
desc.reshape_table = std::move(reshape_table);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @see ie::Params::cfgInputReshape */
|
||||
Params& cfgInputReshape(const std::map<std::string, std::vector<std::size_t>>&reshape_table) {
|
||||
desc.reshape_table = reshape_table;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload */
|
||||
Params& cfgInputReshape(std::map<std::string, std::vector<std::size_t>> && reshape_table) {
|
||||
desc.reshape_table = std::move(reshape_table);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload */
|
||||
Params& cfgInputReshape(std::string && layer_name, std::vector<size_t> && layer_dims) {
|
||||
desc.reshape_table.emplace(layer_name, layer_dims);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload */
|
||||
Params& cfgInputReshape(const std::string & layer_name, const std::vector<size_t>&layer_dims) {
|
||||
desc.reshape_table.emplace(layer_name, layer_dims);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload */
|
||||
Params& cfgInputReshape(std::unordered_set<std::string> && layer_names) {
|
||||
desc.layer_names_to_reshape = std::move(layer_names);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload */
|
||||
Params& cfgInputReshape(const std::unordered_set<std::string>&layer_names) {
|
||||
desc.layer_names_to_reshape = layer_names;
|
||||
return *this;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
//
|
||||
// Copyright (C) 2020 Intel Corporation
|
||||
// Copyright (C) 2020-2021 Intel Corporation
|
||||
|
||||
#ifndef OPENCV_GAPI_INFER_ONNX_HPP
|
||||
#define OPENCV_GAPI_INFER_ONNX_HPP
|
||||
@@ -34,32 +34,35 @@ enum class TraitAs: int {
|
||||
using PostProc = std::function<void(const std::unordered_map<std::string, cv::Mat> &,
|
||||
std::unordered_map<std::string, cv::Mat> &)>;
|
||||
|
||||
|
||||
namespace detail {
|
||||
/**
|
||||
* @brief This structure contains description of inference parameters
|
||||
* which is specific to ONNX models.
|
||||
*/
|
||||
struct ParamDesc {
|
||||
std::string model_path;
|
||||
std::string model_path; //!< Path to model.
|
||||
|
||||
// NB: nun_* may differ from topology's real input/output port numbers
|
||||
// (e.g. topology's partial execution)
|
||||
std::size_t num_in; // How many inputs are defined in the operation
|
||||
std::size_t num_out; // How many outputs are defined in the operation
|
||||
std::size_t num_in; //!< How many inputs are defined in the operation
|
||||
std::size_t num_out; //!< How many outputs are defined in the operation
|
||||
|
||||
// NB: Here order follows the `Net` API
|
||||
std::vector<std::string> input_names;
|
||||
std::vector<std::string> output_names;
|
||||
std::vector<std::string> input_names; //!< Names of input network layers.
|
||||
std::vector<std::string> output_names; //!< Names of output network layers.
|
||||
|
||||
using ConstInput = std::pair<cv::Mat, TraitAs>;
|
||||
std::unordered_map<std::string, ConstInput> const_inputs;
|
||||
std::unordered_map<std::string, ConstInput> const_inputs; //!< Map with pair of name of network layer and ConstInput which will be associated with this.
|
||||
|
||||
std::vector<cv::Scalar> mean;
|
||||
std::vector<cv::Scalar> stdev;
|
||||
std::vector<cv::Scalar> mean; //!< Mean values for preprocessing.
|
||||
std::vector<cv::Scalar> stdev; //!< Standard deviation values for preprocessing.
|
||||
|
||||
std::vector<cv::GMatDesc> out_metas;
|
||||
PostProc custom_post_proc;
|
||||
std::vector<cv::GMatDesc> out_metas; //!< Out meta information about your output (type, dimension).
|
||||
PostProc custom_post_proc; //!< Post processing function.
|
||||
|
||||
std::vector<bool> normalize;
|
||||
std::vector<bool> normalize; //!< Vector of bool values that enabled or disabled normalize of input data.
|
||||
|
||||
std::vector<std::string> names_to_remap;
|
||||
std::vector<std::string> names_to_remap; //!< Names of output layers that will be processed in PostProc function.
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
@@ -79,30 +82,71 @@ struct PortCfg {
|
||||
, std::tuple_size<typename Net::InArgs>::value >;
|
||||
};
|
||||
|
||||
/**
|
||||
* Contains description of inference parameters and kit of functions that
|
||||
* fill this parameters.
|
||||
*/
|
||||
template<typename Net> class Params {
|
||||
public:
|
||||
/** @brief Class constructor.
|
||||
|
||||
Constructs Params based on model information and sets default values for other
|
||||
inference description parameters.
|
||||
|
||||
@param model Path to model (.onnx file).
|
||||
*/
|
||||
Params(const std::string &model) {
|
||||
desc.model_path = model;
|
||||
desc.num_in = std::tuple_size<typename Net::InArgs>::value;
|
||||
desc.num_out = std::tuple_size<typename Net::OutArgs>::value;
|
||||
};
|
||||
|
||||
// BEGIN(G-API's network parametrization API)
|
||||
GBackend backend() const { return cv::gapi::onnx::backend(); }
|
||||
std::string tag() const { return Net::tag(); }
|
||||
cv::util::any params() const { return { desc }; }
|
||||
// END(G-API's network parametrization API)
|
||||
/** @brief Specifies sequence of network input layers names for inference.
|
||||
|
||||
Params<Net>& cfgInputLayers(const typename PortCfg<Net>::In &ll) {
|
||||
desc.input_names.assign(ll.begin(), ll.end());
|
||||
The function is used to associate data of graph inputs with input layers of
|
||||
network topology. Number of names has to match the number of network inputs. If a network
|
||||
has only one input layer, there is no need to call it as the layer is
|
||||
associated with input automatically but this doesn't prevent you from
|
||||
doing it yourself. Count of names has to match to number of network inputs.
|
||||
|
||||
@param layer_names std::array<std::string, N> where N is the number of inputs
|
||||
as defined in the @ref G_API_NET. Contains names of input layers.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgInputLayers(const typename PortCfg<Net>::In &layer_names) {
|
||||
desc.input_names.assign(layer_names.begin(), layer_names.end());
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params<Net>& cfgOutputLayers(const typename PortCfg<Net>::Out &ll) {
|
||||
desc.output_names.assign(ll.begin(), ll.end());
|
||||
/** @brief Specifies sequence of output layers names for inference.
|
||||
|
||||
The function is used to associate data of graph outputs with output layers of
|
||||
network topology. If a network has only one output layer, there is no need to call it
|
||||
as the layer is associated with ouput automatically but this doesn't prevent
|
||||
you from doing it yourself. Count of names has to match to number of network
|
||||
outputs or you can set your own output but for this case you have to
|
||||
additionally use @ref cfgPostProc function.
|
||||
|
||||
@param layer_names std::array<std::string, N> where N is the number of outputs
|
||||
as defined in the @ref G_API_NET. Contains names of output layers.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgOutputLayers(const typename PortCfg<Net>::Out &layer_names) {
|
||||
desc.output_names.assign(layer_names.begin(), layer_names.end());
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @brief Sets a constant input.
|
||||
|
||||
The function is used to set constant input. This input has to be
|
||||
a prepared tensor since preprocessing is disabled for this case. You should
|
||||
provide name of network layer which will receive provided data.
|
||||
|
||||
@param layer_name Name of network layer.
|
||||
@param data cv::Mat that contains data which will be associated with network layer.
|
||||
@param hint Type of input (TENSOR).
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& constInput(const std::string &layer_name,
|
||||
const cv::Mat &data,
|
||||
TraitAs hint = TraitAs::TENSOR) {
|
||||
@@ -110,6 +154,17 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @brief Specifies mean value and standard deviation for preprocessing.
|
||||
|
||||
The function is used to set mean value and standard deviation for preprocessing
|
||||
of input data.
|
||||
|
||||
@param m std::array<cv::Scalar, N> where N is the number of inputs
|
||||
as defined in the @ref G_API_NET. Contains mean values.
|
||||
@param s std::array<cv::Scalar, N> where N is the number of inputs
|
||||
as defined in the @ref G_API_NET. Contains standard deviation values.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgMeanStd(const typename PortCfg<Net>::NormCoefs &m,
|
||||
const typename PortCfg<Net>::NormCoefs &s) {
|
||||
desc.mean.assign(m.begin(), m.end());
|
||||
@@ -117,75 +172,103 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @brief Configures graph output and sets the post processing function from user.
|
||||
/** @brief Configures graph output and provides the post processing function from user.
|
||||
|
||||
The function is used for the case of infer of networks with dynamic outputs.
|
||||
Since these networks haven't known output parameters needs provide them for
|
||||
construction of output of graph.
|
||||
The function provides meta information of outputs and post processing function.
|
||||
Post processing function is used for copy information from ONNX infer's result
|
||||
to output of graph which is allocated by out meta information.
|
||||
The function is used when you work with networks with dynamic outputs.
|
||||
Since we can't know dimensions of inference result needs provide them for
|
||||
construction of graph output. This dimensions can differ from inference result.
|
||||
So you have to provide @ref PostProc function that gets information from inference
|
||||
result and fill output which is constructed by dimensions from out_metas.
|
||||
|
||||
@param out_metas out meta information.
|
||||
@param pp post processing function, which has two parameters. First is onnx
|
||||
@param out_metas Out meta information about your output (type, dimension).
|
||||
@param remap_function Post processing function, which has two parameters. First is onnx
|
||||
result, second is graph output. Both parameters is std::map that contain pair of
|
||||
layer's name and cv::Mat.
|
||||
@return reference to object of class Params.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgPostProc(const std::vector<cv::GMatDesc> &out_metas,
|
||||
const PostProc &pp) {
|
||||
const PostProc &remap_function) {
|
||||
desc.out_metas = out_metas;
|
||||
desc.custom_post_proc = pp;
|
||||
desc.custom_post_proc = remap_function;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
The function has rvalue parameters.
|
||||
Function with a rvalue parameters.
|
||||
|
||||
@param out_metas rvalue out meta information about your output (type, dimension).
|
||||
@param remap_function rvalue post processing function, which has two parameters. First is onnx
|
||||
result, second is graph output. Both parameters is std::map that contain pair of
|
||||
layer's name and cv::Mat.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgPostProc(std::vector<cv::GMatDesc> &&out_metas,
|
||||
PostProc &&pp) {
|
||||
PostProc &&remap_function) {
|
||||
desc.out_metas = std::move(out_metas);
|
||||
desc.custom_post_proc = std::move(pp);
|
||||
desc.custom_post_proc = std::move(remap_function);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
The function has additional parameter names_to_remap. This parameter provides
|
||||
information about output layers which will be used for infer and in post
|
||||
information about output layers which will be used for inference and post
|
||||
processing function.
|
||||
|
||||
@param out_metas out meta information.
|
||||
@param pp post processing function.
|
||||
@param names_to_remap contains names of output layers. CNN's infer will be done on these layers.
|
||||
Infer's result will be processed in post processing function using these names.
|
||||
@return reference to object of class Params.
|
||||
@param out_metas Out meta information.
|
||||
@param remap_function Post processing function.
|
||||
@param names_to_remap Names of output layers. network's inference will
|
||||
be done on these layers. Inference's result will be processed in post processing
|
||||
function using these names.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgPostProc(const std::vector<cv::GMatDesc> &out_metas,
|
||||
const PostProc &pp,
|
||||
const PostProc &remap_function,
|
||||
const std::vector<std::string> &names_to_remap) {
|
||||
desc.out_metas = out_metas;
|
||||
desc.custom_post_proc = pp;
|
||||
desc.custom_post_proc = remap_function;
|
||||
desc.names_to_remap = names_to_remap;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @overload
|
||||
The function has rvalue parameters.
|
||||
Function with a rvalue parameters and additional parameter names_to_remap.
|
||||
|
||||
@param out_metas rvalue out meta information.
|
||||
@param remap_function rvalue post processing function.
|
||||
@param names_to_remap rvalue names of output layers. network's inference will
|
||||
be done on these layers. Inference's result will be processed in post processing
|
||||
function using these names.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgPostProc(std::vector<cv::GMatDesc> &&out_metas,
|
||||
PostProc &&pp,
|
||||
PostProc &&remap_function,
|
||||
std::vector<std::string> &&names_to_remap) {
|
||||
desc.out_metas = std::move(out_metas);
|
||||
desc.custom_post_proc = std::move(pp);
|
||||
desc.custom_post_proc = std::move(remap_function);
|
||||
desc.names_to_remap = std::move(names_to_remap);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Params<Net>& cfgNormalize(const typename PortCfg<Net>::Normalize &n) {
|
||||
desc.normalize.assign(n.begin(), n.end());
|
||||
/** @brief Specifies normalize parameter for preprocessing.
|
||||
|
||||
The function is used to set normalize parameter for preprocessing of input data.
|
||||
|
||||
@param normalizations std::array<cv::Scalar, N> where N is the number of inputs
|
||||
as defined in the @ref G_API_NET. Сontains bool values that enabled or disabled
|
||||
normalize of input data.
|
||||
@return the reference on modified object.
|
||||
*/
|
||||
Params<Net>& cfgNormalize(const typename PortCfg<Net>::Normalize &normalizations) {
|
||||
desc.normalize.assign(normalizations.begin(), normalizations.end());
|
||||
return *this;
|
||||
}
|
||||
|
||||
// BEGIN(G-API's network parametrization API)
|
||||
GBackend backend() const { return cv::gapi::onnx::backend(); }
|
||||
std::string tag() const { return Net::tag(); }
|
||||
cv::util::any params() const { return { desc }; }
|
||||
// END(G-API's network parametrization API)
|
||||
|
||||
protected:
|
||||
detail::ParamDesc desc;
|
||||
};
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <utility> // forward<>()
|
||||
|
||||
#include <opencv2/gapi/gframe.hpp>
|
||||
#include <opencv2/gapi/util/any.hpp>
|
||||
|
||||
namespace cv {
|
||||
|
||||
@@ -30,6 +31,10 @@ public:
|
||||
View access(Access) const;
|
||||
cv::GFrameDesc desc() const;
|
||||
|
||||
// FIXME: design a better solution
|
||||
// Should be used only if the actual adapter provides implementation
|
||||
cv::util::any blobParams() const;
|
||||
|
||||
// Cast underlying MediaFrame adapter to the particular adapter type,
|
||||
// return nullptr if underlying type is different
|
||||
template<typename T> T* get() const
|
||||
@@ -78,6 +83,9 @@ public:
|
||||
virtual ~IAdapter() = 0;
|
||||
virtual cv::GFrameDesc meta() const = 0;
|
||||
virtual MediaFrame::View access(MediaFrame::Access) = 0;
|
||||
// FIXME: design a better solution
|
||||
// The default implementation does nothing
|
||||
virtual cv::util::any blobParams() const;
|
||||
};
|
||||
|
||||
} //namespace cv
|
||||
|
||||
@@ -14,11 +14,28 @@
|
||||
namespace cv {
|
||||
namespace gapi {
|
||||
|
||||
/**
|
||||
* The enum specified format of result that you get from @ref cv::gapi::stereo.
|
||||
*/
|
||||
enum class StereoOutputFormat {
|
||||
DEPTH_FLOAT16,
|
||||
DEPTH_FLOAT32,
|
||||
DISPARITY_FIXED16_11_5,
|
||||
DISPARITY_FIXED16_12_4
|
||||
DEPTH_FLOAT16, ///< Floating point 16 bit value, CV_16FC1.
|
||||
///< This identifier is deprecated, use DEPTH_16F instead.
|
||||
DEPTH_FLOAT32, ///< Floating point 32 bit value, CV_32FC1
|
||||
///< This identifier is deprecated, use DEPTH_16F instead.
|
||||
DISPARITY_FIXED16_11_5, ///< 16 bit signed: first bit for sign,
|
||||
///< 10 bits for integer part,
|
||||
///< 5 bits for fractional part.
|
||||
///< This identifier is deprecated,
|
||||
///< use DISPARITY_16Q_10_5 instead.
|
||||
DISPARITY_FIXED16_12_4, ///< 16 bit signed: first bit for sign,
|
||||
///< 11 bits for integer part,
|
||||
///< 4 bits for fractional part.
|
||||
///< This identifier is deprecated,
|
||||
///< use DISPARITY_16Q_11_4 instead.
|
||||
DEPTH_16F = DEPTH_FLOAT16, ///< Same as DEPTH_FLOAT16
|
||||
DEPTH_32F = DEPTH_FLOAT32, ///< Same as DEPTH_FLOAT32
|
||||
DISPARITY_16Q_10_5 = DISPARITY_FIXED16_11_5, ///< Same as DISPARITY_FIXED16_11_5
|
||||
DISPARITY_16Q_11_4 = DISPARITY_FIXED16_12_4 ///< Same as DISPARITY_FIXED16_12_4
|
||||
};
|
||||
|
||||
namespace calib3d {
|
||||
@@ -47,13 +64,12 @@ G_TYPED_KERNEL(GStereo, <GMat(GMat, GMat, const StereoOutputFormat)>, "org.openc
|
||||
|
||||
} // namespace calib3d
|
||||
|
||||
/** @brief Extract disparity/depth information depending on passed StereoOutputFormat argument.
|
||||
The function extracts disparity/depth information depending on passed StereoOutputFormat argument from
|
||||
given stereo-pair.
|
||||
/** @brief Computes disparity/depth map for the specified stereo-pair.
|
||||
The function computes disparity or depth map depending on passed StereoOutputFormat argument.
|
||||
|
||||
@param left left 8-bit unsigned 1-channel image of @ref CV_8UC1 type
|
||||
@param right right 8-bit unsigned 1-channel image of @ref CV_8UC1 type
|
||||
@param of enum to specify output kind: depth or disparity and corresponding type
|
||||
@param left 8-bit single-channel left image of @ref CV_8UC1 type.
|
||||
@param right 8-bit single-channel right image of @ref CV_8UC1 type.
|
||||
@param of enum to specified output kind: depth or disparity and corresponding type
|
||||
*/
|
||||
GAPI_EXPORTS GMat stereo(const GMat& left,
|
||||
const GMat& right,
|
||||
|
||||
@@ -364,7 +364,8 @@ GAPI_OCV_KERNEL(OCVR_O_NetPreProcGetROIs, R_O_NetPreProcGetROIs) {
|
||||
for (const auto& face : in_faces) {
|
||||
cv::Rect tmp_rect = face.bbox.getRect();
|
||||
//Compare to transposed sizes width<->height
|
||||
tmp_rect &= cv::Rect(tmp_rect.x, tmp_rect.y, in_image_size.height - tmp_rect.x - 4, in_image_size.width - tmp_rect.y - 4);
|
||||
tmp_rect &= cv::Rect(tmp_rect.x, tmp_rect.y, in_image_size.height - tmp_rect.x, in_image_size.width - tmp_rect.y) &
|
||||
cv::Rect(0, 0, in_image_size.height, in_image_size.width);
|
||||
outs.push_back(tmp_rect);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "api/gorigin.hpp"
|
||||
#include "api/gproto_priv.hpp"
|
||||
#include "logger.hpp"
|
||||
|
||||
// FIXME: it should be a visitor!
|
||||
// FIXME: Reimplement with traits?
|
||||
@@ -201,6 +202,52 @@ bool cv::can_describe(const GMetaArgs &metas, const GRunArgs &args)
|
||||
});
|
||||
}
|
||||
|
||||
void cv::gimpl::proto::validate_input_meta_arg(const cv::GMetaArg& meta)
|
||||
{
|
||||
switch (meta.index())
|
||||
{
|
||||
case cv::GMetaArg::index_of<cv::GMatDesc>():
|
||||
{
|
||||
cv::gimpl::proto::validate_input_meta(cv::util::get<GMatDesc>(meta)); //may throw
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void cv::gimpl::proto::validate_input_meta(const cv::GMatDesc& meta)
|
||||
{
|
||||
if (meta.dims.empty())
|
||||
{
|
||||
if (!(meta.size.height > 0 && meta.size.width > 0))
|
||||
{
|
||||
cv::util::throw_error
|
||||
(std::logic_error(
|
||||
"Image format is invalid. Size must contain positive values"
|
||||
", got width: " + std::to_string(meta.size.width ) +
|
||||
(", height: ") + std::to_string(meta.size.height)));
|
||||
}
|
||||
|
||||
if (!(meta.chan > 0))
|
||||
{
|
||||
cv::util::throw_error
|
||||
(std::logic_error(
|
||||
"Image format is invalid. Channel mustn't be negative value, got channel: " +
|
||||
std::to_string(meta.chan)));
|
||||
}
|
||||
}
|
||||
|
||||
if (!(meta.depth >= 0))
|
||||
{
|
||||
cv::util::throw_error
|
||||
(std::logic_error(
|
||||
"Image format is invalid. Depth must be positive value, got depth: " +
|
||||
std::to_string(meta.depth)));
|
||||
}
|
||||
// All checks are ok
|
||||
}
|
||||
|
||||
// FIXME: Is it tested for all types?
|
||||
// FIXME: Where does this validation happen??
|
||||
void cv::validate_input_arg(const GRunArg& arg)
|
||||
@@ -212,13 +259,15 @@ void cv::validate_input_arg(const GRunArg& arg)
|
||||
case GRunArg::index_of<cv::UMat>():
|
||||
{
|
||||
const auto desc = cv::descr_of(util::get<cv::UMat>(arg));
|
||||
GAPI_Assert(desc.size.height != 0 && desc.size.width != 0 && "incorrect dimensions of cv::UMat!"); break;
|
||||
cv::gimpl::proto::validate_input_meta(desc); //may throw
|
||||
break;
|
||||
}
|
||||
#endif // !defined(GAPI_STANDALONE)
|
||||
case GRunArg::index_of<cv::Mat>():
|
||||
{
|
||||
const auto desc = cv::descr_of(util::get<cv::Mat>(arg));
|
||||
GAPI_Assert(desc.size.height != 0 && desc.size.width != 0 && "incorrect dimensions of Mat!"); break;
|
||||
cv::gimpl::proto::validate_input_meta(desc); //may throw
|
||||
break;
|
||||
}
|
||||
default:
|
||||
// No extra handling
|
||||
@@ -228,9 +277,13 @@ void cv::validate_input_arg(const GRunArg& arg)
|
||||
|
||||
void cv::validate_input_args(const GRunArgs& args)
|
||||
{
|
||||
GAPI_LOG_DEBUG(nullptr, "Total count: " << args.size());
|
||||
size_t index = 0;
|
||||
for (const auto& arg : args)
|
||||
{
|
||||
GAPI_LOG_DEBUG(nullptr, "Process index: " << index);
|
||||
validate_input_arg(arg);
|
||||
index ++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ GProtoArg rewrap (const GArg &arg);
|
||||
// FIXME:: GAPI_EXPORTS because of tests only!!
|
||||
GAPI_EXPORTS const void* ptr (const GRunArgP &arg);
|
||||
|
||||
void validate_input_meta_arg(const GMetaArg& meta);
|
||||
void validate_input_meta(const GMatDesc& meta);
|
||||
|
||||
} // proto
|
||||
} // gimpl
|
||||
} // cv
|
||||
|
||||
@@ -26,6 +26,11 @@ cv::MediaFrame::View cv::MediaFrame::access(Access code) const {
|
||||
return m->adapter->access(code);
|
||||
}
|
||||
|
||||
cv::util::any cv::MediaFrame::blobParams() const
|
||||
{
|
||||
return m->adapter->blobParams();
|
||||
}
|
||||
|
||||
cv::MediaFrame::IAdapter* cv::MediaFrame::getAdapter() const {
|
||||
return m->adapter.get();
|
||||
}
|
||||
@@ -42,5 +47,11 @@ cv::MediaFrame::View::~View() {
|
||||
}
|
||||
}
|
||||
|
||||
cv::util::any cv::MediaFrame::IAdapter::blobParams() const
|
||||
{
|
||||
// Does nothing by default
|
||||
return {};
|
||||
}
|
||||
|
||||
cv::MediaFrame::IAdapter::~IAdapter() {
|
||||
}
|
||||
|
||||
@@ -343,19 +343,26 @@ void cv::gimpl::GCompiler::validateInputMeta()
|
||||
return false; // should never happen
|
||||
};
|
||||
|
||||
GAPI_LOG_DEBUG(nullptr, "Total count: " << m_metas.size());
|
||||
for (const auto meta_arg_idx : ade::util::indexed(ade::util::zip(m_metas, c_expr.m_ins)))
|
||||
{
|
||||
const auto &meta = std::get<0>(ade::util::value(meta_arg_idx));
|
||||
const auto &proto = std::get<1>(ade::util::value(meta_arg_idx));
|
||||
|
||||
const auto index = ade::util::index(meta_arg_idx);
|
||||
GAPI_LOG_DEBUG(nullptr, "Process index: " << index);
|
||||
|
||||
// check types validity
|
||||
if (!meta_matches(meta, proto))
|
||||
{
|
||||
const auto index = ade::util::index(meta_arg_idx);
|
||||
util::throw_error(std::logic_error
|
||||
("GComputation object type / metadata descriptor mismatch "
|
||||
"(argument " + std::to_string(index) + ")"));
|
||||
// FIXME: report what we've got and what we've expected
|
||||
}
|
||||
|
||||
// check value consistency
|
||||
gimpl::proto::validate_input_meta_arg(meta); //may throw
|
||||
}
|
||||
// All checks are ok
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ class GAPI_EXPORTS GCompiler
|
||||
cv::gapi::GKernelPackage m_all_kernels;
|
||||
cv::gapi::GNetPackage m_all_networks;
|
||||
|
||||
// Patters built from transformations
|
||||
// Patterns built from transformations
|
||||
std::vector<std::unique_ptr<ade::Graph>> m_all_patterns;
|
||||
|
||||
|
||||
|
||||
@@ -26,11 +26,14 @@ INSTANTIATE_TEST_CASE_P(CPU_Tests, TestGAPIStereo,
|
||||
Values(STEREO_CPU),
|
||||
Values(cv::gapi::StereoOutputFormat::DEPTH_FLOAT16,
|
||||
cv::gapi::StereoOutputFormat::DEPTH_FLOAT32,
|
||||
cv::gapi::StereoOutputFormat::DISPARITY_FIXED16_12_4),
|
||||
cv::gapi::StereoOutputFormat::DISPARITY_FIXED16_12_4,
|
||||
cv::gapi::StereoOutputFormat::DEPTH_16F,
|
||||
cv::gapi::StereoOutputFormat::DEPTH_32F,
|
||||
cv::gapi::StereoOutputFormat::DISPARITY_16Q_11_4),
|
||||
Values(16),
|
||||
Values(43),
|
||||
Values(10.),
|
||||
Values(100.),
|
||||
Values(63.5),
|
||||
Values(3.6),
|
||||
Values(AbsExact().to_compare_obj())));
|
||||
|
||||
} // opencv_test
|
||||
|
||||
@@ -174,4 +174,11 @@ TEST(MediaFrame, Callback) {
|
||||
EXPECT_EQ(3, counter);
|
||||
}
|
||||
|
||||
TEST(MediaFrame, blobParams) {
|
||||
cv::Mat bgr = cv::Mat::eye(240, 320, CV_8UC3);
|
||||
cv::MediaFrame frame = cv::MediaFrame::Create<TestMediaBGR>(bgr);
|
||||
|
||||
EXPECT_NO_THROW(frame.blobParams());
|
||||
}
|
||||
|
||||
} // namespace opencv_test
|
||||
|
||||
@@ -37,6 +37,31 @@ namespace
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct GCompiledValidateMetaEmpty: public ::testing::Test
|
||||
{
|
||||
cv::GMat in;
|
||||
cv::GScalar scale;
|
||||
cv::GComputation m_ucc;
|
||||
|
||||
G_API_OP(GReturn42, <cv::GOpaque<int>(cv::GMat)>, "org.opencv.test.return_42")
|
||||
{
|
||||
static GOpaqueDesc outMeta(cv::GMatDesc /* in */) { return cv::empty_gopaque_desc(); }
|
||||
};
|
||||
|
||||
GAPI_OCV_KERNEL(GOCVReturn42, GReturn42)
|
||||
{
|
||||
static void run(const cv::Mat &/* in */, int &out)
|
||||
{
|
||||
out = 42;
|
||||
}
|
||||
};
|
||||
|
||||
GCompiledValidateMetaEmpty() : m_ucc(cv::GIn(in),
|
||||
cv::GOut(GReturn42::on(in)))
|
||||
{
|
||||
}
|
||||
};
|
||||
} // anonymous namespace
|
||||
|
||||
TEST_F(GCompiledValidateMetaTyped, ValidMeta)
|
||||
@@ -170,4 +195,38 @@ TEST_F(GCompiledValidateMetaUntyped, InvalidMetaNumber)
|
||||
EXPECT_THROW(f(cv::gin(in1, sc), cv::gout(out1, out2)), std::logic_error);
|
||||
}
|
||||
|
||||
TEST_F(GCompiledValidateMetaEmpty, InvalidMatMetaCompile)
|
||||
{
|
||||
EXPECT_THROW(m_ucc.compile(cv::empty_gmat_desc(),
|
||||
cv::empty_scalar_desc()),
|
||||
std::logic_error);
|
||||
}
|
||||
|
||||
TEST_F(GCompiledValidateMetaEmpty, InvalidMatMetaApply)
|
||||
{
|
||||
cv::Mat emptyIn;
|
||||
int out {};
|
||||
const auto pkg = cv::gapi::kernels<GCompiledValidateMetaEmpty::GOCVReturn42>();
|
||||
|
||||
EXPECT_THROW(m_ucc.apply(cv::gin(emptyIn), cv::gout(out), cv::compile_args(pkg)),
|
||||
std::logic_error);
|
||||
}
|
||||
|
||||
TEST_F(GCompiledValidateMetaEmpty, ValidInvalidMatMetasApply)
|
||||
{
|
||||
int out {};
|
||||
const auto pkg = cv::gapi::kernels<GCompiledValidateMetaEmpty::GOCVReturn42>();
|
||||
|
||||
cv::Mat nonEmptyMat = cv::Mat::eye(cv::Size(64,32), CV_8UC1);
|
||||
m_ucc.apply(cv::gin(nonEmptyMat), cv::gout(out), cv::compile_args(pkg));
|
||||
EXPECT_EQ(out, 42);
|
||||
|
||||
cv::Mat emptyIn;
|
||||
EXPECT_THROW(m_ucc.apply(cv::gin(emptyIn), cv::gout(out), cv::compile_args(pkg)),
|
||||
std::logic_error);
|
||||
|
||||
out = 0;
|
||||
m_ucc.apply(cv::gin(nonEmptyMat), cv::gout(out), cv::compile_args(pkg));
|
||||
EXPECT_EQ(out, 42);
|
||||
}
|
||||
} // namespace opencv_test
|
||||
|
||||
@@ -56,6 +56,15 @@ public:
|
||||
cv::MediaFrame::View::Strides ss = { m_mat.step, 0u, 0u, 0u };
|
||||
return cv::MediaFrame::View(std::move(pp), std::move(ss), Cb{m_cb});
|
||||
}
|
||||
cv::util::any blobParams() const override {
|
||||
return std::make_pair<InferenceEngine::TensorDesc,
|
||||
InferenceEngine::ParamMap>({IE::Precision::U8,
|
||||
{1, 3, 300, 300},
|
||||
IE::Layout::NCHW},
|
||||
{{"HELLO", 42},
|
||||
{"COLOR_FORMAT",
|
||||
InferenceEngine::ColorFormat::NV12}});
|
||||
}
|
||||
};
|
||||
|
||||
class TestMediaNV12 final: public cv::MediaFrame::IAdapter {
|
||||
@@ -2028,6 +2037,21 @@ TEST_F(ROIList, CallInferMultipleTimes)
|
||||
validate();
|
||||
}
|
||||
|
||||
TEST(IEFrameAdapter, blobParams)
|
||||
{
|
||||
cv::Mat bgr = cv::Mat::eye(240, 320, CV_8UC3);
|
||||
cv::MediaFrame frame = cv::MediaFrame::Create<TestMediaBGR>(bgr);
|
||||
|
||||
auto expected = std::make_pair(IE::TensorDesc{IE::Precision::U8, {1, 3, 300, 300},
|
||||
IE::Layout::NCHW},
|
||||
IE::ParamMap{{"HELLO", 42}, {"COLOR_FORMAT",
|
||||
IE::ColorFormat::NV12}});
|
||||
|
||||
auto actual = cv::util::any_cast<decltype(expected)>(frame.blobParams());
|
||||
|
||||
EXPECT_EQ(expected, actual);
|
||||
}
|
||||
|
||||
} // namespace opencv_test
|
||||
|
||||
#endif // HAVE_INF_ENGINE
|
||||
|
||||
@@ -1,26 +1,5 @@
|
||||
set(the_description "High-level GUI")
|
||||
|
||||
set(ENABLE_PLUGINS_DEFAULT ON)
|
||||
if(EMSCRIPTEN OR IOS OR WINRT)
|
||||
set(ENABLE_PLUGINS_DEFAULT OFF)
|
||||
endif()
|
||||
set(HIGHGUI_PLUGIN_LIST "" CACHE STRING "List of GUI backends to be compiled as plugins (gtk, gtk2/gtk3, qt, win32 or special value 'all')")
|
||||
set(HIGHGUI_ENABLE_PLUGINS "${ENABLE_PLUGINS_DEFAULT}" CACHE BOOL "Allow building and using of GUI plugins")
|
||||
mark_as_advanced(HIGHGUI_PLUGIN_LIST HIGHGUI_ENABLE_PLUGINS)
|
||||
|
||||
string(REPLACE "," ";" HIGHGUI_PLUGIN_LIST "${HIGHGUI_PLUGIN_LIST}") # support comma-separated list (,) too
|
||||
if(NOT HIGHGUI_ENABLE_PLUGINS)
|
||||
if(HIGHGUI_PLUGIN_LIST)
|
||||
message(WARNING "HighGUI: plugins are disabled through HIGHGUI_ENABLE_PLUGINS, so HIGHGUI_PLUGIN_LIST='${HIGHGUI_PLUGIN_LIST}' is ignored")
|
||||
set(HIGHGUI_PLUGIN_LIST "")
|
||||
endif()
|
||||
else()
|
||||
# Make virtual plugins target
|
||||
if(NOT TARGET opencv_highgui_plugins)
|
||||
add_custom_target(opencv_highgui_plugins ALL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
ocv_add_module(highgui opencv_imgproc opencv_imgcodecs OPTIONAL opencv_videoio WRAP python)
|
||||
else()
|
||||
@@ -68,7 +47,10 @@ file(GLOB highgui_ext_hdrs
|
||||
# Removing WinRT API headers by default
|
||||
list(REMOVE_ITEM highgui_ext_hdrs "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/highgui_winrt.hpp")
|
||||
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "")
|
||||
|
||||
if(HAVE_QT5)
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "QT5")
|
||||
add_definitions(-DHAVE_QT)
|
||||
|
||||
# "Automoc" doesn't work properly with opencv_world build, use QT5_WRAP_CPP() directly
|
||||
@@ -96,8 +78,8 @@ if(HAVE_QT5)
|
||||
include_directories(${Qt5OpenGL_INCLUDE_DIRS})
|
||||
list(APPEND HIGHGUI_LIBRARIES ${Qt5OpenGL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
elseif(HAVE_QT)
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "QT4")
|
||||
add_definitions(-DHAVE_QT)
|
||||
if(HAVE_QT_OPENGL)
|
||||
add_definitions(-DHAVE_QT_OPENGL)
|
||||
@@ -115,6 +97,7 @@ elseif(HAVE_QT)
|
||||
set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations)
|
||||
endif()
|
||||
elseif(WINRT)
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "WINRT")
|
||||
if(NOT WINRT_8_0)
|
||||
# Dependencies used by the implementation referenced
|
||||
# below are not available on WinRT 8.0.
|
||||
@@ -149,11 +132,13 @@ elseif(WINRT)
|
||||
message(STATUS " ${name}: Leaving '${HIGHGUI_LIBRARIES}'")
|
||||
endif()
|
||||
elseif(HAVE_WIN32UI)
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "WIN32UI")
|
||||
list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_w32.cpp)
|
||||
if(OpenCV_ARCH STREQUAL "ARM64")
|
||||
list(APPEND HIGHGUI_LIBRARIES "comdlg32" "advapi32")
|
||||
endif()
|
||||
elseif(HAVE_COCOA)
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "COCOA")
|
||||
add_definitions(-DHAVE_COCOA)
|
||||
list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_cocoa.mm)
|
||||
list(APPEND HIGHGUI_LIBRARIES "-framework Cocoa")
|
||||
@@ -170,16 +155,31 @@ if(TARGET ocv.3rdparty.gtk3 OR TARGET ocv.3rdparty.gtk2)
|
||||
AND NOT "gtk" IN_LIST HIGHGUI_PLUGIN_LIST
|
||||
AND NOT "gtk2" IN_LIST HIGHGUI_PLUGIN_LIST
|
||||
AND NOT "gtk3" IN_LIST HIGHGUI_PLUGIN_LIST
|
||||
AND NOT OPENCV_HIGHGUI_BUILTIN_BACKEND
|
||||
)
|
||||
if(__gtk_dependency STREQUAL "ocv.3rdparty.gtk3")
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "GTK3")
|
||||
elseif(__gtk_dependency STREQUAL "ocv.3rdparty.gtk2")
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "GTK2")
|
||||
else()
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "GTK")
|
||||
endif()
|
||||
list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_gtk.cpp)
|
||||
list(APPEND tgts ${__gtk_dependency})
|
||||
if(TARGET ocv.3rdparty.gthread)
|
||||
list(APPEND tgts ocv.3rdparty.gthread)
|
||||
endif()
|
||||
if(TARGET ocv.3rdparty.gtkglext
|
||||
AND __gtk_dependency STREQUAL "ocv.3rdparty.gtk2"
|
||||
AND NOT OPENCV_GTK_DISABLE_GTKGLEXT
|
||||
)
|
||||
list(APPEND tgts ocv.3rdparty.gtkglext)
|
||||
if(TARGET ocv.3rdparty.gtk_opengl
|
||||
AND __gtk_dependency STREQUAL "ocv.3rdparty.gtk2"
|
||||
AND NOT OPENCV_GTK_DISABLE_OPENGL
|
||||
)
|
||||
list(APPEND tgts ocv.3rdparty.gtk_opengl)
|
||||
endif()
|
||||
endif()
|
||||
elseif("gtk" IN_LIST HIGHGUI_PLUGIN_LIST)
|
||||
ocv_create_builtin_highgui_plugin(opencv_highgui_gtk ${__gtk_dependency} "window_gtk.cpp")
|
||||
@@ -211,6 +211,11 @@ if(TARGET ocv.3rdparty.gtk3 OR TARGET ocv.3rdparty.gtk2)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT OPENCV_HIGHGUI_BUILTIN_BACKEND)
|
||||
set(OPENCV_HIGHGUI_BUILTIN_BACKEND "NONE")
|
||||
endif()
|
||||
message(STATUS "highgui: using builtin backend: ${OPENCV_HIGHGUI_BUILTIN_BACKEND}") # FIXIT: propagate to root CMake
|
||||
|
||||
if(TRUE)
|
||||
# these variables are set by 'ocv_append_build_options(HIGHGUI ...)'
|
||||
foreach(P ${HIGHGUI_INCLUDE_DIRS})
|
||||
@@ -271,3 +276,15 @@ if(HIGHGUI_ENABLE_PLUGINS)
|
||||
endif()
|
||||
|
||||
ocv_target_link_libraries(${the_module} LINK_PRIVATE ${tgts})
|
||||
|
||||
# generate module configuration
|
||||
set(CONFIG_STR "// Auto-generated file
|
||||
#define OPENCV_HIGHGUI_BUILTIN_BACKEND_STR \"${OPENCV_HIGHGUI_BUILTIN_BACKEND}\"
|
||||
")
|
||||
if(OPENCV_HIGHGUI_BUILTIN_BACKEND STREQUAL "NONE")
|
||||
set(CONFIG_STR "${CONFIG_STR}
|
||||
#define OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND 1
|
||||
")
|
||||
endif()
|
||||
|
||||
ocv_update_file("${CMAKE_CURRENT_BINARY_DIR}/opencv_highgui_config.hpp" "${CONFIG_STR}")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# --- GTK ---
|
||||
ocv_clear_vars(HAVE_GTK HAVE_GTK3 HAVE_GTHREAD HAVE_GTKGLEXT)
|
||||
ocv_clear_vars(HAVE_GTK HAVE_GTK2 HAVE_GTK3 HAVE_GTHREAD HAVE_GTKGLEXT)
|
||||
if(WITH_GTK)
|
||||
if(NOT WITH_GTK_2_X)
|
||||
ocv_check_modules(GTK3 gtk+-3.0)
|
||||
@@ -32,7 +32,7 @@ if(WITH_GTK)
|
||||
set(HAVE_GTHREAD "${HAVE_GTHREAD}" PARENT_SCOPE) # informational
|
||||
set(GTHREAD_VERSION "${GTHREAD_VERSION}" PARENT_SCOPE) # informational
|
||||
endif()
|
||||
if(WITH_OPENGL AND NOT HAVE_GTK3)
|
||||
if((WITH_OPENGL OR HAVE_OPENGL) AND HAVE_GTK2)
|
||||
ocv_check_modules(GTKGLEXT gtkglext-1.0)
|
||||
if(HAVE_GTKGLEXT)
|
||||
ocv_add_external_target(gtkglext "${GTKGLEXT_INCLUDE_DIRS}" "${GTKGLEXT_LIBRARIES}" "HAVE_GTKGLEXT")
|
||||
@@ -44,4 +44,13 @@ elseif(HAVE_GTK)
|
||||
ocv_add_external_target(gtk "${GTK_INCLUDE_DIRS}" "${GTK_LIBRARIES}" "${GTK_DEFINES};HAVE_GTK")
|
||||
endif()
|
||||
|
||||
if(WITH_OPENGL AND HAVE_GTKGLEXT)
|
||||
find_package(OpenGL QUIET)
|
||||
if(OPENGL_FOUND)
|
||||
set(HAVE_OPENGL TRUE)
|
||||
#set(HAVE_OPENGL ${HAVE_OPENGL} PARENT_SCOPE)
|
||||
ocv_add_external_target(gtk_opengl "${OPENGL_INCLUDE_DIRS}" "${OPENGL_LIBRARIES}" "HAVE_OPENGL")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(HAVE_GTK ${HAVE_GTK} PARENT_SCOPE)
|
||||
|
||||
@@ -1,3 +1,30 @@
|
||||
if(PROJECT_NAME STREQUAL "OpenCV")
|
||||
set(ENABLE_PLUGINS_DEFAULT ON)
|
||||
if(EMSCRIPTEN OR IOS OR WINRT)
|
||||
set(ENABLE_PLUGINS_DEFAULT OFF)
|
||||
endif()
|
||||
set(HIGHGUI_PLUGIN_LIST "" CACHE STRING "List of GUI backends to be compiled as plugins (gtk, gtk2/gtk3, qt, win32 or special value 'all')")
|
||||
set(HIGHGUI_ENABLE_PLUGINS "${ENABLE_PLUGINS_DEFAULT}" CACHE BOOL "Allow building and using of GUI plugins")
|
||||
mark_as_advanced(HIGHGUI_PLUGIN_LIST HIGHGUI_ENABLE_PLUGINS)
|
||||
|
||||
string(REPLACE "," ";" HIGHGUI_PLUGIN_LIST "${HIGHGUI_PLUGIN_LIST}") # support comma-separated list (,) too
|
||||
if(NOT HIGHGUI_ENABLE_PLUGINS)
|
||||
if(HIGHGUI_PLUGIN_LIST)
|
||||
message(WARNING "HighGUI: plugins are disabled through HIGHGUI_ENABLE_PLUGINS, so HIGHGUI_PLUGIN_LIST='${HIGHGUI_PLUGIN_LIST}' is ignored")
|
||||
set(HIGHGUI_PLUGIN_LIST "")
|
||||
endif()
|
||||
else()
|
||||
# Make virtual plugins target
|
||||
if(NOT TARGET opencv_highgui_plugins)
|
||||
add_custom_target(opencv_highgui_plugins ALL)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
# Detect available dependencies
|
||||
#
|
||||
|
||||
include(FindPkgConfig)
|
||||
|
||||
# FIXIT: stop using PARENT_SCOPE in dependencies
|
||||
|
||||
@@ -11,7 +11,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
OCV="$( cd "${DIR}/../../../.." >/dev/null 2>&1 && pwd )"
|
||||
mkdir -p "${1}" # Docker creates non-existed mounts with 'root' owner, lets ensure that dir exists under the current user to avoid "Permission denied" problem
|
||||
DST="$( cd "$1" >/dev/null 2>&1 && pwd )"
|
||||
CFG=$2
|
||||
CFG=${2:-Release}
|
||||
|
||||
do_build()
|
||||
{
|
||||
@@ -40,30 +40,33 @@ docker run \
|
||||
-e CFG=$CFG \
|
||||
--user $(id -u):$(id -g) \
|
||||
$TAG \
|
||||
$@
|
||||
"$@"
|
||||
}
|
||||
|
||||
build_gtk2_ubuntu()
|
||||
{
|
||||
VER=$1
|
||||
shift 1
|
||||
TAG=opencv_highgui_ubuntu_gtk2_builder:${VER}
|
||||
do_build $TAG "${DIR}/plugin_gtk" Dockerfile-ubuntu-gtk2 --build-arg VER=${VER}
|
||||
do_run $TAG /opencv/modules/highgui/misc/plugins/plugin_gtk/build.sh /dst gtk2_ubuntu${VER} ${CFG}
|
||||
do_run $TAG /opencv/modules/highgui/misc/plugins/plugin_gtk/build.sh /dst gtk2_ubuntu${VER} ${CFG} "$@"
|
||||
|
||||
}
|
||||
|
||||
build_gtk3_ubuntu()
|
||||
{
|
||||
VER=$1
|
||||
shift 1
|
||||
TAG=opencv_highgui_ubuntu_gtk3_builder:${VER}
|
||||
do_build $TAG "${DIR}/plugin_gtk" Dockerfile-ubuntu-gtk3 --build-arg VER=${VER}
|
||||
do_run $TAG /opencv/modules/highgui/misc/plugins/plugin_gtk/build.sh /dst gtk3_ubuntu${VER} ${CFG}
|
||||
do_run $TAG /opencv/modules/highgui/misc/plugins/plugin_gtk/build.sh /dst gtk3_ubuntu${VER} ${CFG} "$@"
|
||||
}
|
||||
|
||||
echo "OpenCV: ${OCV}"
|
||||
echo "Destination: ${DST}"
|
||||
|
||||
build_gtk2_ubuntu 16.04
|
||||
build_gtk2_ubuntu 16.04 -DOPENCV_PLUGIN_NAME=opencv_highgui_gtk2-opengl_ubuntu16.04 -DWITH_OPENGL=ON -DWITH_GTK_2_X=ON
|
||||
build_gtk2_ubuntu 18.04
|
||||
build_gtk3_ubuntu 18.04
|
||||
build_gtk3_ubuntu 20.04
|
||||
|
||||
@@ -25,6 +25,21 @@ else()
|
||||
message(FATAL_ERROR "Missing dependency target for GTK libraries")
|
||||
endif()
|
||||
ocv_create_plugin(highgui "opencv_highgui_gtk" "${__deps}" "GTK" "src/window_gtk.cpp")
|
||||
if(WITH_OPENGL)
|
||||
if(HAVE_GTK2
|
||||
AND TARGET ocv.3rdparty.gtkglext
|
||||
AND TARGET ocv.3rdparty.gtk_opengl
|
||||
AND NOT OPENCV_GTK_DISABLE_GTKGLEXT
|
||||
AND NOT OPENCV_GTK_DISABLE_OPENGL
|
||||
)
|
||||
message(STATUS "OpenGL: YES")
|
||||
target_link_libraries(${OPENCV_PLUGIN_NAME} PRIVATE
|
||||
ocv.3rdparty.gtkglext ocv.3rdparty.gtk_opengl
|
||||
)
|
||||
else()
|
||||
message(WARNING "OpenGL dependencies are not available!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_GTK3)
|
||||
message(STATUS "GTK3+: ver ${GTK3_VERSION}")
|
||||
@@ -41,8 +56,3 @@ if(HAVE_GTHREAD)
|
||||
else()
|
||||
message(STATUS "GThread : NO")
|
||||
endif()
|
||||
if(HAVE_GTKGLEXT)
|
||||
message(STATUS "GtkGlExt: YES (ver ${GTKGLEXT_VERSION})")
|
||||
else()
|
||||
message(STATUS "GtkGlExt: NO")
|
||||
endif()
|
||||
|
||||
@@ -18,4 +18,11 @@ RUN \
|
||||
&& \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
libgtkglext1-dev \
|
||||
&& \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /tmp
|
||||
|
||||
@@ -4,10 +4,18 @@ set -e
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
OPENCV_PLUGIN_DESTINATION=$1
|
||||
OPENCV_PLUGIN_NAME=opencv_highgui_$2
|
||||
CMAKE_BUILD_TYPE=${3:-Release}
|
||||
|
||||
shift 3 || true
|
||||
|
||||
set -x
|
||||
cmake -GNinja \
|
||||
-DOPENCV_PLUGIN_NAME=opencv_highgui_$2 \
|
||||
-DOPENCV_PLUGIN_DESTINATION=$1 \
|
||||
-DCMAKE_BUILD_TYPE=$3 \
|
||||
-DOPENCV_PLUGIN_NAME=${OPENCV_PLUGIN_NAME} \
|
||||
-DOPENCV_PLUGIN_DESTINATION=${OPENCV_PLUGIN_DESTINATION} \
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
|
||||
"$@" \
|
||||
$DIR
|
||||
|
||||
ninja -v
|
||||
|
||||
@@ -103,7 +103,7 @@ std::shared_ptr<UIBackend> createUIBackend()
|
||||
}
|
||||
if (name.empty())
|
||||
{
|
||||
CV_LOG_DEBUG(NULL, "UI: fallback on builtin code");
|
||||
CV_LOG_DEBUG(NULL, "UI: fallback on builtin code: " OPENCV_HIGHGUI_BUILTIN_BACKEND_STR);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -232,8 +232,12 @@ std::vector<FileSystemPath_t> getPluginCandidates(const std::string& baseName)
|
||||
return results;
|
||||
}
|
||||
|
||||
// NB: require loading of imgcodecs module
|
||||
static void* g_imwrite = (void*)imwrite;
|
||||
|
||||
void PluginUIBackendFactory::loadPlugin()
|
||||
{
|
||||
CV_Assert(g_imwrite);
|
||||
for (const FileSystemPath_t& plugin : getPluginCandidates(baseName_))
|
||||
{
|
||||
auto lib = std::make_shared<cv::plugin::impl::DynamicLib>(plugin);
|
||||
|
||||
@@ -47,6 +47,9 @@
|
||||
#endif
|
||||
|
||||
#include "opencv2/highgui.hpp"
|
||||
#if !defined(BUILD_PLUGIN)
|
||||
#include "opencv_highgui_config.hpp" // generated by CMake
|
||||
#endif
|
||||
|
||||
#include "opencv2/core/utility.hpp"
|
||||
#if defined(__OPENCV_BUILD)
|
||||
|
||||
@@ -162,6 +162,9 @@ public:
|
||||
const BackendInfo& info = enabledBackends[i];
|
||||
os << info.name << '(' << info.priority << ')';
|
||||
}
|
||||
#if !defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND)
|
||||
os << " + BUILTIN(" OPENCV_HIGHGUI_BUILTIN_BACKEND_STR ")";
|
||||
#endif
|
||||
return os.str();
|
||||
}
|
||||
|
||||
|
||||
@@ -179,6 +179,14 @@ static void cleanupTrackbarCallbacksWithData_()
|
||||
|
||||
using namespace cv::impl;
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
static void deprecateNotFoundNoOpBehavior()
|
||||
{
|
||||
CV_LOG_ONCE_WARNING(NULL, "This no-op behavior is deprecated. Future versions of OpenCV will trigger exception in this case");
|
||||
}
|
||||
#define CV_NOT_FOUND_DEPRECATION deprecateNotFoundNoOpBehavior()
|
||||
#endif
|
||||
|
||||
CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_value)
|
||||
{
|
||||
CV_TRACE_FUNCTION();
|
||||
@@ -193,6 +201,19 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << name << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
switch(prop_id)
|
||||
{
|
||||
//change between fullscreen or not.
|
||||
@@ -249,6 +270,7 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
|
||||
|
||||
default:;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* return -1 if error */
|
||||
@@ -268,6 +290,19 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << name << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return -1;
|
||||
#else
|
||||
switch(prop_id)
|
||||
{
|
||||
case CV_WND_PROP_FULLSCREEN:
|
||||
@@ -361,13 +396,13 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
cv::Rect cvGetWindowImageRect(const char* name)
|
||||
{
|
||||
CV_TRACE_FUNCTION();
|
||||
if (!name)
|
||||
return cv::Rect(-1, -1, -1, -1);
|
||||
CV_Assert(name);
|
||||
|
||||
{
|
||||
auto window = findWindow_(name);
|
||||
@@ -377,6 +412,20 @@ cv::Rect cvGetWindowImageRect(const char* name)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << name << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return Rect(-1, -1, -1, -1);
|
||||
#else
|
||||
|
||||
#if defined (HAVE_QT)
|
||||
return cvGetWindowRect_QT(name);
|
||||
#elif defined(HAVE_WIN32UI)
|
||||
@@ -386,8 +435,10 @@ cv::Rect cvGetWindowImageRect(const char* name)
|
||||
#elif defined (HAVE_COCOA)
|
||||
return cvGetWindowRect_COCOA(name);
|
||||
#else
|
||||
return cv::Rect(-1, -1, -1, -1);
|
||||
return Rect(-1, -1, -1, -1);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
cv::Rect cv::getWindowImageRect(const String& winname)
|
||||
@@ -483,7 +534,21 @@ void cv::resizeWindow( const String& winname, int width, int height )
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winname << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
cvResizeWindow( winname.c_str(), width, height );
|
||||
#endif
|
||||
}
|
||||
|
||||
void cv::resizeWindow(const String& winname, const cv::Size& size)
|
||||
@@ -504,7 +569,21 @@ void cv::moveWindow( const String& winname, int x, int y )
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winname << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
cvMoveWindow( winname.c_str(), x, y );
|
||||
#endif
|
||||
}
|
||||
|
||||
void cv::setWindowProperty(const String& winname, int prop_id, double prop_value)
|
||||
@@ -616,8 +695,22 @@ int cv::createTrackbar(const String& trackbarName, const String& winName,
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winName << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return 0;
|
||||
#else
|
||||
return cvCreateTrackbar2(trackbarName.c_str(), winName.c_str(),
|
||||
value, count, callback, userdata);
|
||||
#endif
|
||||
}
|
||||
|
||||
void cv::setTrackbarPos( const String& trackbarName, const String& winName, int value )
|
||||
@@ -635,7 +728,21 @@ void cv::setTrackbarPos( const String& trackbarName, const String& winName, int
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winName << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
cvSetTrackbarPos(trackbarName.c_str(), winName.c_str(), value );
|
||||
#endif
|
||||
}
|
||||
|
||||
void cv::setTrackbarMax(const String& trackbarName, const String& winName, int maxval)
|
||||
@@ -655,7 +762,21 @@ void cv::setTrackbarMax(const String& trackbarName, const String& winName, int m
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winName << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
cvSetTrackbarMax(trackbarName.c_str(), winName.c_str(), maxval);
|
||||
#endif
|
||||
}
|
||||
|
||||
void cv::setTrackbarMin(const String& trackbarName, const String& winName, int minval)
|
||||
@@ -675,7 +796,21 @@ void cv::setTrackbarMin(const String& trackbarName, const String& winName, int m
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winName << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
cvSetTrackbarMin(trackbarName.c_str(), winName.c_str(), minval);
|
||||
#endif
|
||||
}
|
||||
|
||||
int cv::getTrackbarPos( const String& trackbarName, const String& winName )
|
||||
@@ -693,7 +828,21 @@ int cv::getTrackbarPos( const String& trackbarName, const String& winName )
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << winName << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return -1;
|
||||
#else
|
||||
return cvGetTrackbarPos(trackbarName.c_str(), winName.c_str());
|
||||
#endif
|
||||
}
|
||||
|
||||
void cv::setMouseCallback( const String& windowName, MouseCallback onMouse, void* param)
|
||||
@@ -709,7 +858,21 @@ void cv::setMouseCallback( const String& windowName, MouseCallback onMouse, void
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(OPENCV_HIGHGUI_WITHOUT_BUILTIN_BACKEND) && defined(ENABLE_PLUGINS)
|
||||
auto backend = getCurrentUIBackend();
|
||||
if (backend)
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "Can't find window with name: '" << windowName << "'. Do nothing");
|
||||
CV_NOT_FOUND_DEPRECATION;
|
||||
}
|
||||
else
|
||||
{
|
||||
CV_LOG_WARNING(NULL, "No UI backends available. Use OPENCV_LOG_LEVEL=DEBUG for investigation");
|
||||
}
|
||||
return;
|
||||
#else
|
||||
cvSetMouseCallback(windowName.c_str(), onMouse, param);
|
||||
#endif
|
||||
}
|
||||
|
||||
int cv::getMouseWheelDelta( int flags )
|
||||
|
||||
@@ -45,6 +45,14 @@
|
||||
#if defined (HAVE_GTK)
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#if (GTK_MAJOR_VERSION == 3) && defined(HAVE_OPENGL)
|
||||
#undef HAVE_OPENGL // no support with GTK3
|
||||
#endif
|
||||
#if defined(HAVE_OPENGL) && !defined(HAVE_GTKGLEXT)
|
||||
#undef HAVE_OPENGL // gtkglext is required
|
||||
#endif
|
||||
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <stdio.h>
|
||||
@@ -1187,7 +1195,7 @@ static std::shared_ptr<CvWindow> namedWindow_(const std::string& name, int flags
|
||||
|
||||
#ifdef HAVE_OPENGL
|
||||
if (window->useGl)
|
||||
cvSetOpenGlContext(name);
|
||||
cvSetOpenGlContext(name.c_str());
|
||||
#endif
|
||||
|
||||
return window_ptr;
|
||||
@@ -1205,7 +1213,7 @@ CV_IMPL void cvSetOpenGlContext(const char* name)
|
||||
|
||||
CV_LOCK_MUTEX();
|
||||
|
||||
CvWindow* window = icvFindWindowByName(name);
|
||||
auto window = icvFindWindowByName(name);
|
||||
if (!window)
|
||||
CV_Error( CV_StsNullPtr, "NULL window" );
|
||||
|
||||
@@ -1225,7 +1233,7 @@ CV_IMPL void cvUpdateWindow(const char* name)
|
||||
|
||||
CV_LOCK_MUTEX();
|
||||
|
||||
CvWindow* window = icvFindWindowByName(name);
|
||||
auto window = icvFindWindowByName(name);
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
@@ -1239,7 +1247,7 @@ CV_IMPL void cvSetOpenGlDrawCallback(const char* name, CvOpenGlDrawCallback call
|
||||
|
||||
CV_LOCK_MUTEX();
|
||||
|
||||
CvWindow* window = icvFindWindowByName(name);
|
||||
auto window = icvFindWindowByName(name);
|
||||
if( !window )
|
||||
return;
|
||||
|
||||
@@ -1905,17 +1913,19 @@ static gboolean icvOnClose( GtkWidget* widget, GdkEvent* /*event*/, gpointer use
|
||||
static gboolean icvOnMouse( GtkWidget *widget, GdkEvent *event, gpointer user_data )
|
||||
{
|
||||
// TODO move this logic to CvImageWidget
|
||||
// TODO add try-catch wrappers into all callbacks
|
||||
CvWindow* window = (CvWindow*)user_data;
|
||||
if (!window || !widget ||
|
||||
window->signature != CV_WINDOW_MAGIC_VAL ||
|
||||
window->widget != widget ||
|
||||
!window->on_mouse)
|
||||
return FALSE;
|
||||
|
||||
CvPoint2D32f pt32f = {-1., -1.};
|
||||
CvPoint pt = {-1,-1};
|
||||
int cv_event = -1, state = 0, flags = 0;
|
||||
CvImageWidget * image_widget = CV_IMAGE_WIDGET( widget );
|
||||
|
||||
if( window->signature != CV_WINDOW_MAGIC_VAL ||
|
||||
window->widget != widget || !window->widget ||
|
||||
!window->on_mouse /*|| !image_widget->original_image*/)
|
||||
return FALSE;
|
||||
|
||||
if( event->type == GDK_MOTION_NOTIFY )
|
||||
{
|
||||
GdkEventMotion* event_motion = (GdkEventMotion*)event;
|
||||
@@ -2008,8 +2018,10 @@ static gboolean icvOnMouse( GtkWidget *widget, GdkEvent *event, gpointer user_da
|
||||
pt = cvPointFrom32f( pt32f );
|
||||
}
|
||||
|
||||
if((unsigned)pt.x < (unsigned)(image_widget->original_image->width) &&
|
||||
(unsigned)pt.y < (unsigned)(image_widget->original_image->height) )
|
||||
if (!image_widget->original_image/*OpenGL*/ || (
|
||||
(unsigned)pt.x < (unsigned)(image_widget->original_image->width) &&
|
||||
(unsigned)pt.y < (unsigned)(image_widget->original_image->height)
|
||||
))
|
||||
{
|
||||
flags |= BIT_MAP(state, GDK_SHIFT_MASK, CV_EVENT_FLAG_SHIFTKEY) |
|
||||
BIT_MAP(state, GDK_CONTROL_MASK, CV_EVENT_FLAG_CTRLKEY) |
|
||||
@@ -2319,6 +2331,11 @@ public:
|
||||
class GTKBackendUI : public UIBackend
|
||||
{
|
||||
public:
|
||||
GTKBackendUI()
|
||||
{
|
||||
// NB: avoid static initialization order fiasco
|
||||
(void)getGTKWindows();
|
||||
}
|
||||
~GTKBackendUI() CV_OVERRIDE
|
||||
{
|
||||
destroyAllWindows();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
apply plugin: 'com.android.library'
|
||||
@KOTLIN_PLUGIN_DECLARATION@
|
||||
|
||||
def openCVersionName = "@OPENCV_VERSION@"
|
||||
def openCVersionCode = ((@OPENCV_VERSION_MAJOR@ * 100 + @OPENCV_VERSION_MINOR@) * 100 + @OPENCV_VERSION_PATCH@) * 10 + 0
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
//
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
@KOTLIN_PLUGIN_DECLARATION@
|
||||
|
||||
def openCVersionName = "@OPENCV_VERSION@"
|
||||
def openCVersionCode = ((@OPENCV_VERSION_MAJOR@ * 100 + @OPENCV_VERSION_MINOR@) * 100 + @OPENCV_VERSION_PATCH@) * 10 + 0
|
||||
|
||||
@@ -1250,13 +1250,13 @@ JNIEXPORT void JNICALL Java_org_opencv_%(module)s_%(j_cls)s_delete
|
||||
def copy_java_files(java_files_dir, java_base_path, default_package_path='org/opencv/'):
|
||||
global total_files, updated_files
|
||||
java_files = []
|
||||
re_filter = re.compile(r'^.+\.(java|aidl)(.in)?$')
|
||||
re_filter = re.compile(r'^.+\.(java|aidl|kt)(.in)?$')
|
||||
for root, dirnames, filenames in os.walk(java_files_dir):
|
||||
java_files += [os.path.join(root, filename) for filename in filenames if re_filter.match(filename)]
|
||||
java_files = [f.replace('\\', '/') for f in java_files]
|
||||
|
||||
re_package = re.compile(r'^package +(.+);')
|
||||
re_prefix = re.compile(r'^.+[\+/]([^\+]+).(java|aidl)(.in)?$')
|
||||
re_prefix = re.compile(r'^.+[\+/]([^\+]+).(java|aidl|kt)(.in)?$')
|
||||
for java_file in java_files:
|
||||
src = checkFileRemap(java_file)
|
||||
with open(src, 'r') as f:
|
||||
|
||||
@@ -312,6 +312,13 @@ public class OpenCVTestCase extends TestCase {
|
||||
//assertTrue(Math.abs(ar1[i].doubleValue() - ar2[i].doubleValue()) <= epsilon);
|
||||
}
|
||||
|
||||
public static void assertArrayEquals(byte[] ar1, byte[] ar2) {
|
||||
assertEquals(ar1.length, ar2.length);
|
||||
|
||||
for (int i = 0; i < ar1.length; i++)
|
||||
assertEquals(ar1[i], ar2[i]);
|
||||
}
|
||||
|
||||
public static void assertArrayEquals(short[] ar1, short[] ar2) {
|
||||
assertEquals(ar1.length, ar2.length);
|
||||
|
||||
|
||||
@@ -232,8 +232,9 @@ if(NOT OPENCV_SKIP_PYTHON_LOADER)
|
||||
if(extra_py_files)
|
||||
list(SORT extra_py_files)
|
||||
foreach(f ${extra_py_files})
|
||||
get_filename_component(__dir "${f}" DIRECTORY)
|
||||
configure_file("${__base}/${f}" "${__loader_path}/cv2/_extra_py_code/${f}" COPYONLY)
|
||||
install(FILES "${__base}/${f}" DESTINATION "${OPENCV_PYTHON_INSTALL_PATH}/cv2/_extra_py_code/${f}" COMPONENT python)
|
||||
install(FILES "${__base}/${f}" DESTINATION "${OPENCV_PYTHON_INSTALL_PATH}/cv2/_extra_py_code/${__dir}/" COMPONENT python)
|
||||
endforeach()
|
||||
else()
|
||||
message(WARNING "Module ${m} has no .py files in misc/python/package")
|
||||
|
||||
@@ -78,8 +78,20 @@ def bootstrap():
|
||||
if DEBUG: print('OpenCV loader: PYTHON_EXTENSIONS_PATHS={}'.format(str(l_vars['PYTHON_EXTENSIONS_PATHS'])))
|
||||
if DEBUG: print('OpenCV loader: BINARIES_PATHS={}'.format(str(l_vars['BINARIES_PATHS'])))
|
||||
|
||||
applySysPathWorkaround = False
|
||||
if hasattr(sys, 'OpenCV_REPLACE_SYS_PATH_0'):
|
||||
applySysPathWorkaround = True
|
||||
else:
|
||||
try:
|
||||
BASE_DIR = os.path.dirname(LOADER_DIR)
|
||||
if sys.path[0] == BASE_DIR or os.path.realpath(sys.path[0]) == BASE_DIR:
|
||||
applySysPathWorkaround = True
|
||||
except:
|
||||
if DEBUG: print('OpenCV loader: exception during checking workaround for sys.path[0]')
|
||||
pass # applySysPathWorkaround is False
|
||||
|
||||
for p in reversed(l_vars['PYTHON_EXTENSIONS_PATHS']):
|
||||
sys.path.insert(1, p)
|
||||
sys.path.insert(1 if not applySysPathWorkaround else 0, p)
|
||||
|
||||
if os.name == 'nt':
|
||||
if sys.version_info[:2] >= (3, 8): # https://github.com/python/cpython/pull/12302
|
||||
|
||||
@@ -61,7 +61,7 @@ pixels from the original images from the cameras are retained in the rectified i
|
||||
image pixels are lost). Any intermediate value yields an intermediate result between
|
||||
those two extreme cases.
|
||||
@param newImageSize New image resolution after rectification. The same size should be passed to
|
||||
initUndistortRectifyMap (see the stereo_calib.cpp sample in OpenCV samples directory). When (0,0)
|
||||
#initUndistortRectifyMap (see the stereo_calib.cpp sample in OpenCV samples directory). When (0,0)
|
||||
is passed (default), it is set to the original imageSize . Setting it to a larger value can help you
|
||||
preserve details in the original image, especially when there is a big radial distortion.
|
||||
@param validPixROI1 Optional output rectangles inside the rectified images where all the pixels
|
||||
@@ -73,7 +73,7 @@ are valid. If alpha=0 , the ROIs cover the whole images. Otherwise, they are lik
|
||||
|
||||
The function computes the rotation matrices for each camera that (virtually) make both camera image
|
||||
planes the same plane. Consequently, this makes all the epipolar lines parallel and thus simplifies
|
||||
the dense stereo correspondence problem. The function takes the matrices computed by stereoCalibrate
|
||||
the dense stereo correspondence problem. The function takes the matrices computed by #stereoCalibrate
|
||||
as input. As output, it provides two rotation matrices and also two projection matrices in the new
|
||||
coordinates. The function distinguishes the following two cases:
|
||||
|
||||
@@ -117,7 +117,7 @@ coordinates. The function distinguishes the following two cases:
|
||||
@ref STEREO_ZERO_DISPARITY is set.
|
||||
|
||||
As you can see, the first three columns of P1 and P2 will effectively be the new "rectified" camera
|
||||
matrices. The matrices, together with R1 and R2 , can then be passed to initUndistortRectifyMap to
|
||||
matrices. The matrices, together with R1 and R2 , can then be passed to #initUndistortRectifyMap to
|
||||
initialize the rectification map for each camera.
|
||||
|
||||
See below the screenshot from the stereo_calib.cpp sample. Some red horizontal lines pass through
|
||||
@@ -140,9 +140,9 @@ CV_EXPORTS_W void stereoRectify( InputArray cameraMatrix1, InputArray distCoeffs
|
||||
|
||||
@param points1 Array of feature points in the first image.
|
||||
@param points2 The corresponding points in the second image. The same formats as in
|
||||
findFundamentalMat are supported.
|
||||
#findFundamentalMat are supported.
|
||||
@param F Input fundamental matrix. It can be computed from the same set of point pairs using
|
||||
findFundamentalMat .
|
||||
#findFundamentalMat .
|
||||
@param imgSize Size of the image.
|
||||
@param H1 Output rectification homography matrix for the first image.
|
||||
@param H2 Output rectification homography matrix for the second image.
|
||||
@@ -153,7 +153,7 @@ rejected prior to computing the homographies. Otherwise, all the points are cons
|
||||
|
||||
The function computes the rectification transformations without knowing intrinsic parameters of the
|
||||
cameras and their relative position in the space, which explains the suffix "uncalibrated". Another
|
||||
related difference from stereoRectify is that the function outputs not the rectification
|
||||
related difference from #stereoRectify is that the function outputs not the rectification
|
||||
transformations in the object (3D) space, but the planar perspective transformations encoded by the
|
||||
homography matrices H1 and H2 . The function implements the algorithm @cite Hartley99 .
|
||||
|
||||
@@ -162,8 +162,8 @@ homography matrices H1 and H2 . The function implements the algorithm @cite Hart
|
||||
depends on the epipolar geometry. Therefore, if the camera lenses have a significant distortion,
|
||||
it would be better to correct it before computing the fundamental matrix and calling this
|
||||
function. For example, distortion coefficients can be estimated for each head of stereo camera
|
||||
separately by using calibrateCamera . Then, the images can be corrected using undistort , or
|
||||
just the point coordinates can be corrected with undistortPoints .
|
||||
separately by using #calibrateCamera . Then, the images can be corrected using #undistort , or
|
||||
just the point coordinates can be corrected with #undistortPoints .
|
||||
*/
|
||||
CV_EXPORTS_W bool stereoRectifyUncalibrated( InputArray points1, InputArray points2,
|
||||
InputArray F, Size imgSize,
|
||||
@@ -378,7 +378,7 @@ CV_EXPORTS_W void filterSpeckles( InputOutputArray img, double newVal,
|
||||
int maxSpeckleSize, double maxDiff,
|
||||
InputOutputArray buf = noArray() );
|
||||
|
||||
//! computes valid disparity ROI from the valid ROIs of the rectified images (that are returned by cv::stereoRectify())
|
||||
//! computes valid disparity ROI from the valid ROIs of the rectified images (that are returned by #stereoRectify)
|
||||
CV_EXPORTS_W Rect getValidDisparityROI( Rect roi1, Rect roi2,
|
||||
int minDisparity, int numberOfDisparities,
|
||||
int blockSize );
|
||||
|
||||
@@ -326,6 +326,7 @@ Mat calcSobelKernel2D( int dx, int dy, int apertureSize, int origin=0 );
|
||||
Mat calcLaplaceKernel2D( int aperture_size );
|
||||
|
||||
void initUndistortMap( const Mat& a, const Mat& k, const Mat& R, const Mat& new_a, Size sz, Mat& mapx, Mat& mapy, int map_type );
|
||||
void initInverseRectificationMap( const Mat& a, const Mat& k, const Mat& R, const Mat& new_a, Size sz, Mat& mapx, Mat& mapy, int map_type );
|
||||
|
||||
void minMaxLoc(const Mat& src, double* minval, double* maxval,
|
||||
vector<int>* minloc, vector<int>* maxloc, const Mat& mask=Mat());
|
||||
|
||||
@@ -251,14 +251,14 @@ void TrackerDaSiamRPNImpl::trackerEval(Mat img)
|
||||
pscore = penalty.mul(score);
|
||||
pscore = pscore * (1.0 - trackState.windowInfluence) + trackState.windows * trackState.windowInfluence;
|
||||
|
||||
int bestID[] = { 0 };
|
||||
int bestID[2] = { 0, 0 };
|
||||
// Find the index of best score.
|
||||
minMaxIdx(pscore.reshape(0, { trackState.anchorNum * trackState.scoreSize * trackState.scoreSize, 1 }), 0, 0, 0, bestID);
|
||||
delta = delta.reshape(0, { 4, trackState.anchorNum * trackState.scoreSize * trackState.scoreSize });
|
||||
penalty = penalty.reshape(0, { trackState.anchorNum * trackState.scoreSize * trackState.scoreSize, 1 });
|
||||
score = score.reshape(0, { trackState.anchorNum * trackState.scoreSize * trackState.scoreSize, 1 });
|
||||
|
||||
int index[] = { 0, bestID[0] };
|
||||
int index[2] = { 0, bestID[0] };
|
||||
Rect2f resBox = { 0, 0, 0, 0 };
|
||||
|
||||
resBox.x = delta.at<float>(index) / scaleZ;
|
||||
@@ -311,7 +311,7 @@ void TrackerDaSiamRPNImpl::softmax(const Mat& src, Mat& dst)
|
||||
void TrackerDaSiamRPNImpl::elementMax(Mat& src)
|
||||
{
|
||||
int* p = src.size.p;
|
||||
int index[] = { 0, 0, 0, 0 };
|
||||
int index[4] = { 0, 0, 0, 0 };
|
||||
for (int n = 0; n < *p; n++)
|
||||
{
|
||||
for (int k = 0; k < *(p + 1); k++)
|
||||
@@ -365,8 +365,8 @@ Mat TrackerDaSiamRPNImpl::generateAnchors()
|
||||
baseAnchors.push_back(anchor);
|
||||
}
|
||||
|
||||
int anchorIndex[] = { 0, 0, 0, 0 };
|
||||
const int sizes[] = { 4, (int)ratios.size(), scoreSize, scoreSize };
|
||||
int anchorIndex[4] = { 0, 0, 0, 0 };
|
||||
const int sizes[4] = { 4, (int)ratios.size(), scoreSize, scoreSize };
|
||||
Mat anchors(4, sizes, CV_32F);
|
||||
|
||||
for (auto i = 0; i < scoreSize; i++)
|
||||
|
||||
@@ -2503,7 +2503,10 @@ static void findClosestSizeAndSubtype(videoDevice * VD, int widthIn, int heightI
|
||||
int tempH = 999999;
|
||||
|
||||
//Don't want to get stuck in a loop
|
||||
if(stepX < 1 || stepY < 1) continue;
|
||||
if(stepX < 1 || stepY < 1){
|
||||
MyDeleteMediaType(pmtConfig);
|
||||
continue;
|
||||
}
|
||||
|
||||
//DebugPrintOut("min is %i %i max is %i %i - res is %i %i\n", scc.MinOutputSize.cx, scc.MinOutputSize.cy, scc.MaxOutputSize.cx, scc.MaxOutputSize.cy, stepX, stepY);
|
||||
//DebugPrintOut("min frame duration is %i max duration is %i\n", scc.MinFrameInterval, scc.MaxFrameInterval);
|
||||
@@ -2619,7 +2622,8 @@ static bool setSizeAndSubtype(videoDevice * VD, int attemptWidth, int attemptHei
|
||||
return true;
|
||||
}else{
|
||||
VD->streamConf->SetFormat(tmpType);
|
||||
if( tmpType != NULL )MyDeleteMediaType(tmpType);
|
||||
if( VD->pAmMediaType != NULL)MyDeleteMediaType(VD->pAmMediaType);
|
||||
VD->pAmMediaType = tmpType;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -752,6 +752,9 @@ TEST_P(videocapture_acceleration, read)
|
||||
{
|
||||
if (filename == "sample_322x242_15frames.yuv420p.libvpx-vp9.mp4")
|
||||
throw SkipTestException("Unable to read the first frame with VP9 codec (media stack misconfiguration / bug)");
|
||||
// FFMPEG: [av1 @ 0000027ac07d1340] Your platform doesn't suppport hardware accelerated AV1 decoding.
|
||||
if (filename == "sample_322x242_15frames.yuv420p.libaom-av1.mp4")
|
||||
throw SkipTestException("Unable to read the first frame with AV1 codec (missing support)");
|
||||
}
|
||||
EXPECT_TRUE(read_umat_result);
|
||||
ASSERT_FALSE(umat.empty());
|
||||
@@ -764,6 +767,9 @@ TEST_P(videocapture_acceleration, read)
|
||||
{
|
||||
if (filename == "sample_322x242_15frames.yuv420p.libvpx-vp9.mp4")
|
||||
throw SkipTestException("Unable to read the first frame with VP9 codec (media stack misconfiguration / bug)");
|
||||
// FFMPEG: [av1 @ 0000027ac07d1340] Your platform doesn't suppport hardware accelerated AV1 decoding.
|
||||
if (filename == "sample_322x242_15frames.yuv420p.libaom-av1.mp4")
|
||||
throw SkipTestException("Unable to read the first frame with AV1 codec (missing support)");
|
||||
}
|
||||
EXPECT_TRUE(read_result);
|
||||
}
|
||||
|
||||
@@ -159,6 +159,7 @@ class Builder:
|
||||
self.debug_info = True if config.debug_info else False
|
||||
self.no_samples_build = True if config.no_samples_build else False
|
||||
self.opencl = True if config.opencl else False
|
||||
self.no_kotlin = True if config.no_kotlin else False
|
||||
|
||||
def get_cmake(self):
|
||||
if not self.config.use_android_buildtools and check_executable(['cmake', '--version']):
|
||||
@@ -219,6 +220,7 @@ class Builder:
|
||||
CMAKE_TOOLCHAIN_FILE=self.get_toolchain_file(),
|
||||
INSTALL_CREATE_DISTRIB="ON",
|
||||
WITH_OPENCL="OFF",
|
||||
BUILD_KOTLIN_EXTENSIONS="ON",
|
||||
WITH_IPP=("ON" if abi.haveIPP() else "OFF"),
|
||||
WITH_TBB="ON",
|
||||
BUILD_EXAMPLES="OFF",
|
||||
@@ -240,6 +242,9 @@ class Builder:
|
||||
if self.opencl:
|
||||
cmake_vars['WITH_OPENCL'] = "ON"
|
||||
|
||||
if self.no_kotlin:
|
||||
cmake_vars['BUILD_KOTLIN_EXTENSIONS'] = "OFF"
|
||||
|
||||
if self.config.modules_list is not None:
|
||||
cmd.append("-DBUILD_LIST='%s'" % self.config.modules_list)
|
||||
|
||||
@@ -359,6 +364,7 @@ if __name__ == "__main__":
|
||||
parser.add_argument('--debug_info', action="store_true", help="Build with debug information (useful for Release mode: BUILD_WITH_DEBUG_INFO=ON)")
|
||||
parser.add_argument('--no_samples_build', action="store_true", help="Do not build samples (speeds up build)")
|
||||
parser.add_argument('--opencl', action="store_true", help="Enable OpenCL support")
|
||||
parser.add_argument('--no_kotlin', action="store_true", help="Disable Kotlin extensions")
|
||||
args = parser.parse_args()
|
||||
|
||||
log.basicConfig(format='%(message)s', level=log.DEBUG)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
ABIs = [
|
||||
ABI("2", "armeabi-v7a", None, cmake_vars=dict(ANDROID_ABI='armeabi-v7a with NEON', ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5')),
|
||||
ABI("3", "arm64-v8a", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5')),
|
||||
ABI("5", "x86_64", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5')),
|
||||
ABI("4", "x86", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5')),
|
||||
ABI("2", "armeabi-v7a", None, cmake_vars=dict(ANDROID_ABI='armeabi-v7a with NEON', ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5', KOTLIN_PLUGIN_VERSION='1.5.10')),
|
||||
ABI("3", "arm64-v8a", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5', KOTLIN_PLUGIN_VERSION='1.5.10')),
|
||||
ABI("5", "x86_64", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5', KOTLIN_PLUGIN_VERSION='1.5.10')),
|
||||
ABI("4", "x86", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.1.2', GRADLE_VERSION='6.5', KOTLIN_PLUGIN_VERSION='1.5.10')),
|
||||
]
|
||||
|
||||
@@ -8,6 +8,7 @@ buildscript {
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:@ANDROID_GRADLE_PLUGIN_VERSION@'
|
||||
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:@KOTLIN_PLUGIN_VERSION@'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
||||
+2
-2
@@ -207,7 +207,7 @@ namespace PhoneXamlDirect3DApp1
|
||||
catch
|
||||
{
|
||||
// If an exception is caught here it is most likely due to either
|
||||
// ResourceLangauge not being correctly set to a supported language
|
||||
// ResourceLanguage not being correctly set to a supported language
|
||||
// code or ResourceFlowDirection is set to a value other than LeftToRight
|
||||
// or RightToLeft.
|
||||
|
||||
@@ -220,4 +220,4 @@ namespace PhoneXamlDirect3DApp1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user