http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas1_opencl.cu ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas1_opencl.cu b/native-viennaCL/src/main/cpp/libviennacl/src/blas1_opencl.cu deleted file mode 100644 index 617b128..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas1_opencl.cu +++ /dev/null @@ -1,297 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" - -//include the generic inner product functions of ViennaCL -#include "viennacl/linalg/inner_prod.hpp" - -//include the generic norm functions of ViennaCL -#include "viennacl/linalg/norm_1.hpp" -#include "viennacl/linalg/norm_2.hpp" -#include "viennacl/linalg/norm_inf.hpp" - -#ifdef VIENNACL_WITH_OPENCL - -// IxAMAX - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLiSamax(ViennaCLBackend backend, ViennaCLInt n, - ViennaCLInt *index, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *index = static_cast<ViennaCLInt>(viennacl::linalg::index_norm_inf(v1)); - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLiDamax(ViennaCLBackend backend, ViennaCLInt n, - ViennaCLInt *index, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *index = static_cast<ViennaCLInt>(viennacl::linalg::index_norm_inf(v1)); - return ViennaCLSuccess; -} - - - - -// xASUM - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSasum(ViennaCLBackend backend, ViennaCLInt n, - float *alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *alpha = viennacl::linalg::norm_1(v1); - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDasum(ViennaCLBackend backend, ViennaCLInt n, - double *alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *alpha = viennacl::linalg::norm_1(v1); - return ViennaCLSuccess; -} - - - -// xAXPY - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSaxpy(ViennaCLBackend backend, ViennaCLInt n, - float alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - v2 += alpha * v1; - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDaxpy(ViennaCLBackend backend, ViennaCLInt n, - double alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - v2 += alpha * v1; - return ViennaCLSuccess; -} - - -// xCOPY - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLScopy(ViennaCLBackend backend, ViennaCLInt n, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - v2 = v1; - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDcopy(ViennaCLBackend backend, ViennaCLInt n, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - v2 = v1; - return ViennaCLSuccess; -} - -// xDOT - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSdot(ViennaCLBackend backend, ViennaCLInt n, - float *alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *alpha = viennacl::linalg::inner_prod(v1, v2); - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDdot(ViennaCLBackend backend, ViennaCLInt n, - double *alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *alpha = viennacl::linalg::inner_prod(v1, v2); - return ViennaCLSuccess; -} - - -// xNRM2 - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSnrm2(ViennaCLBackend backend, ViennaCLInt n, - float *alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *alpha = viennacl::linalg::norm_2(v1); - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDnrm2(ViennaCLBackend backend, ViennaCLInt n, - double *alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - *alpha = viennacl::linalg::norm_2(v1); - return ViennaCLSuccess; -} - - -// xROT - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSrot(ViennaCLBackend backend, ViennaCLInt n, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy, - float c, float s) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - viennacl::linalg::plane_rotation(v1, v2, c, s); - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDrot(ViennaCLBackend backend, ViennaCLInt n, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy, - double c, double s) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - viennacl::linalg::plane_rotation(v1, v2, c, s); - return ViennaCLSuccess; -} - - - -// xSCAL - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSscal(ViennaCLBackend backend, ViennaCLInt n, - float alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - v1 *= alpha; - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDscal(ViennaCLBackend backend, ViennaCLInt n, - double alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - v1 *= alpha; - return ViennaCLSuccess; -} - -// xSWAP - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSswap(ViennaCLBackend backend, ViennaCLInt n, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - viennacl::swap(v1, v2); - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDswap(ViennaCLBackend backend, ViennaCLInt n, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(n), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - - viennacl::swap(v1, v2); - return ViennaCLSuccess; -} -#endif
http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cpp ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cpp b/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cpp deleted file mode 100644 index bc2c095..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cpp +++ /dev/null @@ -1,231 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -#include "init_vector.hpp" -#include "init_matrix.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" -#include "viennacl/matrix.hpp" -#include "viennacl/linalg/direct_solve.hpp" -#include "viennacl/linalg/prod.hpp" - -// GEMV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLgemv(ViennaCLHostScalar alpha, ViennaCLMatrix A, ViennaCLVector x, ViennaCLHostScalar beta, ViennaCLVector y) -{ - viennacl::backend::mem_handle v1_handle; - viennacl::backend::mem_handle v2_handle; - viennacl::backend::mem_handle A_handle; - - if (init_vector(v1_handle, x) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_vector(v2_handle, y) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_matrix(A_handle, A) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - switch (x->precision) - { - case ViennaCLFloat: - { - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<float> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<float> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - v2 *= beta->value_float; - if (A->trans == ViennaCLTrans) - v2 += alpha->value_float * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha->value_float * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; - } - - case ViennaCLDouble: - { - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<double> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<double> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - v2 *= beta->value_double; - if (A->trans == ViennaCLTrans) - v2 += alpha->value_double * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha->value_double * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; - } - - default: - return ViennaCLGenericFailure; - } -} - - -// xTRSV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLtrsv(ViennaCLMatrix A, ViennaCLVector x, ViennaCLUplo uplo) -{ - viennacl::backend::mem_handle v1_handle; - viennacl::backend::mem_handle A_handle; - - if (init_vector(v1_handle, x) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_matrix(A_handle, A) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - switch (x->precision) - { - case ViennaCLFloat: - { - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - - viennacl::matrix_base<float> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - if (A->trans == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; - } - case ViennaCLDouble: - { - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - - viennacl::matrix_base<double> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - if (A->trans == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; - } - - default: - return ViennaCLGenericFailure; - } -} - - -// xGER - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLger(ViennaCLHostScalar alpha, ViennaCLVector x, ViennaCLVector y, ViennaCLMatrix A) -{ - viennacl::backend::mem_handle v1_handle; - viennacl::backend::mem_handle v2_handle; - viennacl::backend::mem_handle A_handle; - - if (init_vector(v1_handle, x) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_vector(v2_handle, y) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_matrix(A_handle, A) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - switch (x->precision) - { - case ViennaCLFloat: - { - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<float> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<float> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - - mat += alpha->value_float * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; - } - case ViennaCLDouble: - { - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<double> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<double> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - - mat += alpha->value_double * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; - } - default: - return ViennaCLGenericFailure; - } -} - - http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cu ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cu b/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cu deleted file mode 100644 index bc2c095..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas2.cu +++ /dev/null @@ -1,231 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -#include "init_vector.hpp" -#include "init_matrix.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" -#include "viennacl/matrix.hpp" -#include "viennacl/linalg/direct_solve.hpp" -#include "viennacl/linalg/prod.hpp" - -// GEMV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLgemv(ViennaCLHostScalar alpha, ViennaCLMatrix A, ViennaCLVector x, ViennaCLHostScalar beta, ViennaCLVector y) -{ - viennacl::backend::mem_handle v1_handle; - viennacl::backend::mem_handle v2_handle; - viennacl::backend::mem_handle A_handle; - - if (init_vector(v1_handle, x) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_vector(v2_handle, y) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_matrix(A_handle, A) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - switch (x->precision) - { - case ViennaCLFloat: - { - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<float> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<float> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - v2 *= beta->value_float; - if (A->trans == ViennaCLTrans) - v2 += alpha->value_float * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha->value_float * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; - } - - case ViennaCLDouble: - { - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<double> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<double> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - v2 *= beta->value_double; - if (A->trans == ViennaCLTrans) - v2 += alpha->value_double * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha->value_double * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; - } - - default: - return ViennaCLGenericFailure; - } -} - - -// xTRSV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLtrsv(ViennaCLMatrix A, ViennaCLVector x, ViennaCLUplo uplo) -{ - viennacl::backend::mem_handle v1_handle; - viennacl::backend::mem_handle A_handle; - - if (init_vector(v1_handle, x) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_matrix(A_handle, A) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - switch (x->precision) - { - case ViennaCLFloat: - { - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - - viennacl::matrix_base<float> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - if (A->trans == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; - } - case ViennaCLDouble: - { - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - - viennacl::matrix_base<double> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - if (A->trans == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v1, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v1, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; - } - - default: - return ViennaCLGenericFailure; - } -} - - -// xGER - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLger(ViennaCLHostScalar alpha, ViennaCLVector x, ViennaCLVector y, ViennaCLMatrix A) -{ - viennacl::backend::mem_handle v1_handle; - viennacl::backend::mem_handle v2_handle; - viennacl::backend::mem_handle A_handle; - - if (init_vector(v1_handle, x) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_vector(v2_handle, y) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - if (init_matrix(A_handle, A) != ViennaCLSuccess) - return ViennaCLGenericFailure; - - switch (x->precision) - { - case ViennaCLFloat: - { - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<float> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<float> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - - mat += alpha->value_float * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; - } - case ViennaCLDouble: - { - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(v1_handle, size_type(x->size), size_type(x->offset), difference_type(x->inc)); - viennacl::vector_base<double> v2(v2_handle, size_type(y->size), size_type(y->offset), difference_type(y->inc)); - - viennacl::matrix_base<double> mat(A_handle, - size_type(A->size1), size_type(A->start1), difference_type(A->stride1), size_type(A->internal_size1), - size_type(A->size2), size_type(A->start2), difference_type(A->stride2), size_type(A->internal_size2), A->order == ViennaCLRowMajor); - - mat += alpha->value_double * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; - } - default: - return ViennaCLGenericFailure; - } -} - - http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas2_cuda.cu ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_cuda.cu b/native-viennaCL/src/main/cpp/libviennacl/src/blas2_cuda.cu deleted file mode 100644 index 60c9293..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_cuda.cu +++ /dev/null @@ -1,204 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" - -#include "viennacl/vector.hpp" -#include "viennacl/matrix.hpp" -#include "viennacl/linalg/direct_solve.hpp" -#include "viennacl/linalg/prod.hpp" - - -#ifdef VIENNACL_WITH_CUDA - -// xGEMV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLCUDASgemv(ViennaCLBackend /*backend*/, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, float alpha, float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - float *x, ViennaCLInt offx, ViennaCLInt incx, - float beta, - float *y, ViennaCLInt offy, ViennaCLInt incy) -{ - viennacl::vector_base<float> v1(x, viennacl::CUDA_MEMORY, n, offx, incx); - viennacl::vector_base<float> v2(y, viennacl::CUDA_MEMORY, m, offy, incy); - viennacl::matrix_base<float> mat(A, viennacl::CUDA_MEMORY, - m, offA_row, incA_row, m, - n, offA_col, incA_col, lda, order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLCUDADgemv(ViennaCLBackend /*backend*/, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, double alpha, double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - double *x, ViennaCLInt offx, ViennaCLInt incx, - double beta, - double *y, ViennaCLInt offy, ViennaCLInt incy) -{ - viennacl::vector_base<double> v1(x, viennacl::CUDA_MEMORY, n, offx, incx); - viennacl::vector_base<double> v2(y, viennacl::CUDA_MEMORY, m, offy, incy); - viennacl::matrix_base<double> mat(A, viennacl::CUDA_MEMORY, - m, offA_row, incA_row, m, - n, offA_col, incA_col, lda, order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - - - -// xTRSV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLCUDAStrsv(ViennaCLBackend /*backend*/, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - float *x, ViennaCLInt offx, ViennaCLInt incx) -{ - viennacl::vector_base<float> v(x, viennacl::CUDA_MEMORY, n, offx, incx); - viennacl::matrix_base<float> mat(A, viennacl::CUDA_MEMORY, - n, offA_row, incA_row, n, - n, offA_col, incA_col, lda, order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLCUDADtrsv(ViennaCLBackend /*backend*/, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - double *x, ViennaCLInt offx, ViennaCLInt incx) -{ - viennacl::vector_base<double> v(x, viennacl::CUDA_MEMORY, n, offx, incx); - viennacl::matrix_base<double> mat(A, viennacl::CUDA_MEMORY, - n, offA_row, incA_row, n, - n, offA_col, incA_col, lda, order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - - - -// xGER - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLCUDASger(ViennaCLBackend /*backend*/, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - float alpha, - float *x, ViennaCLInt offx, ViennaCLInt incx, - float *y, ViennaCLInt offy, ViennaCLInt incy, - float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - viennacl::vector_base<float> v1(x, viennacl::CUDA_MEMORY, n, offx, incx); - viennacl::vector_base<float> v2(y, viennacl::CUDA_MEMORY, m, offy, incy); - viennacl::matrix_base<float> mat(A, viennacl::CUDA_MEMORY, - m, offA_row, incA_row, m, - n, offA_col, incA_col, lda, order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLCUDADger(ViennaCLBackend /*backend*/, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - double alpha, - double *x, ViennaCLInt offx, ViennaCLInt incx, - double *y, ViennaCLInt offy, ViennaCLInt incy, - double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - viennacl::vector_base<double> v1(x, viennacl::CUDA_MEMORY, n, offx, incx); - viennacl::vector_base<double> v2(y, viennacl::CUDA_MEMORY, m, offy, incy); - viennacl::matrix_base<double> mat(A, viennacl::CUDA_MEMORY, - m, offA_row, incA_row, m, - n, offA_col, incA_col, lda, order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - -#endif http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cpp ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cpp b/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cpp deleted file mode 100644 index b1ef39a..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" - -#include "viennacl/vector.hpp" -#include "viennacl/matrix.hpp" -#include "viennacl/linalg/direct_solve.hpp" -#include "viennacl/linalg/prod.hpp" - - -// xGEMV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostSgemv(ViennaCLBackend /*backend*/, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, float alpha, float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - float *x, ViennaCLInt offx, ViennaCLInt incx, - float beta, - float *y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<float> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<float> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostDgemv(ViennaCLBackend /*backend*/, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, double alpha, double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - double *x, ViennaCLInt offx, ViennaCLInt incx, - double beta, - double *y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<double> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<double> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - - - -// xTRSV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostStrsv(ViennaCLBackend /*backend*/, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - float *x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::matrix_base<float> mat(A, viennacl::MAIN_MEMORY, - size_type(n), size_type(offA_row), difference_type(incA_row), size_type(n), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostDtrsv(ViennaCLBackend /*backend*/, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - double *x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::matrix_base<double> mat(A, viennacl::MAIN_MEMORY, - size_type(n), size_type(offA_row), difference_type(incA_row), size_type(n), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - - - -// xGER - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostSger(ViennaCLBackend /*backend*/, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - float alpha, - float *x, ViennaCLInt offx, ViennaCLInt incx, - float *y, ViennaCLInt offy, ViennaCLInt incy, - float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<float> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<float> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostDger(ViennaCLBackend /*backend*/, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - double alpha, - double *x, ViennaCLInt offx, ViennaCLInt incx, - double *y, ViennaCLInt offy, ViennaCLInt incy, - double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<double> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<double> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cu ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cu b/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cu deleted file mode 100644 index b1ef39a..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_host.cu +++ /dev/null @@ -1,219 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" - -#include "viennacl/vector.hpp" -#include "viennacl/matrix.hpp" -#include "viennacl/linalg/direct_solve.hpp" -#include "viennacl/linalg/prod.hpp" - - -// xGEMV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostSgemv(ViennaCLBackend /*backend*/, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, float alpha, float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - float *x, ViennaCLInt offx, ViennaCLInt incx, - float beta, - float *y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<float> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<float> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostDgemv(ViennaCLBackend /*backend*/, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, double alpha, double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - double *x, ViennaCLInt offx, ViennaCLInt incx, - double beta, - double *y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<double> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<double> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - - - -// xTRSV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostStrsv(ViennaCLBackend /*backend*/, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - float *x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::matrix_base<float> mat(A, viennacl::MAIN_MEMORY, - size_type(n), size_type(offA_row), difference_type(incA_row), size_type(n), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostDtrsv(ViennaCLBackend /*backend*/, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - double *x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::matrix_base<double> mat(A, viennacl::MAIN_MEMORY, - size_type(n), size_type(offA_row), difference_type(incA_row), size_type(n), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - - - -// xGER - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostSger(ViennaCLBackend /*backend*/, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - float alpha, - float *x, ViennaCLInt offx, ViennaCLInt incx, - float *y, ViennaCLInt offy, ViennaCLInt incy, - float *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<float> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<float> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLHostDger(ViennaCLBackend /*backend*/, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - double alpha, - double *x, ViennaCLInt offx, ViennaCLInt incx, - double *y, ViennaCLInt offy, ViennaCLInt incy, - double *A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(x, viennacl::MAIN_MEMORY, size_type(n), size_type(offx), difference_type(incx)); - viennacl::vector_base<double> v2(y, viennacl::MAIN_MEMORY, size_type(m), size_type(offy), difference_type(incy)); - viennacl::matrix_base<double> mat(A, viennacl::MAIN_MEMORY, - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - http://git-wip-us.apache.org/repos/asf/mahout/blob/7ae549fa/native-viennaCL/src/main/cpp/libviennacl/src/blas2_opencl.cpp ---------------------------------------------------------------------- diff --git a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_opencl.cpp b/native-viennaCL/src/main/cpp/libviennacl/src/blas2_opencl.cpp deleted file mode 100644 index 20c4994..0000000 --- a/native-viennaCL/src/main/cpp/libviennacl/src/blas2_opencl.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/* ========================================================================= - Copyright (c) 2010-2014, Institute for Microelectronics, - Institute for Analysis and Scientific Computing, - TU Wien. - Portions of this software are copyright by UChicago Argonne, LLC. - - ----------------- - ViennaCL - The Vienna Computing Library - ----------------- - - Project Head: Karl Rupp [email protected] - - (A list of authors and contributors can be found in the PDF manual) - - License: MIT (X11), see file LICENSE in the base directory -============================================================================= */ - -// include necessary system headers -#include <iostream> - -#include "viennacl.hpp" -#include "viennacl_private.hpp" - -//include basic scalar and vector types of ViennaCL -#include "viennacl/scalar.hpp" -#include "viennacl/vector.hpp" - -#include "viennacl/vector.hpp" -#include "viennacl/matrix.hpp" -#include "viennacl/linalg/direct_solve.hpp" -#include "viennacl/linalg/prod.hpp" - - -// xGEMV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSgemv(ViennaCLBackend backend, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, float alpha, cl_mem A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - float beta, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(m), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::matrix_base<float> mat(A, viennacl::ocl::get_context(backend->opencl_backend.context_id), - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDgemv(ViennaCLBackend backend, - ViennaCLOrder order, ViennaCLTranspose transA, - ViennaCLInt m, ViennaCLInt n, double alpha, cl_mem A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - double beta, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(m), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::matrix_base<double> mat(A, viennacl::ocl::get_context(backend->opencl_backend.context_id), - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - v2 *= beta; - if (transA == ViennaCLTrans) - v2 += alpha * viennacl::linalg::prod(viennacl::trans(mat), v1); - else - v2 += alpha * viennacl::linalg::prod(mat, v1); - - return ViennaCLSuccess; -} - - - -// xTRSV - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLStrsv(ViennaCLBackend backend, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, cl_mem A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::matrix_base<float> mat(A, viennacl::ocl::get_context(backend->opencl_backend.context_id), - size_type(n), size_type(offA_row), difference_type(incA_row), size_type(n), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDtrsv(ViennaCLBackend backend, - ViennaCLUplo uplo, ViennaCLOrder order, ViennaCLTranspose transA, ViennaCLDiag diag, - ViennaCLInt n, cl_mem A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::matrix_base<double> mat(A, viennacl::ocl::get_context(backend->opencl_backend.context_id), - size_type(n), size_type(offA_row), difference_type(incA_row), size_type(n), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - if (transA == ViennaCLTrans) - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(viennacl::trans(mat), v, viennacl::linalg::lower_tag()); - } - else - { - if (uplo == ViennaCLUpper) - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_upper_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::upper_tag()); - else - if (diag == ViennaCLUnit) - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::unit_lower_tag()); - else - viennacl::linalg::inplace_solve(mat, v, viennacl::linalg::lower_tag()); - } - - return ViennaCLSuccess; -} - - - -// xGER - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLSger(ViennaCLBackend backend, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - float alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy, - cl_mem A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - typedef viennacl::vector_base<float>::size_type size_type; - typedef viennacl::vector_base<float>::size_type difference_type; - - viennacl::vector_base<float> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<float> v2(y, size_type(m), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::matrix_base<float> mat(A, viennacl::ocl::get_context(backend->opencl_backend.context_id), - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} - -VIENNACL_EXPORTED_FUNCTION ViennaCLStatus ViennaCLOpenCLDger(ViennaCLBackend backend, - ViennaCLOrder order, - ViennaCLInt m, ViennaCLInt n, - double alpha, - cl_mem x, ViennaCLInt offx, ViennaCLInt incx, - cl_mem y, ViennaCLInt offy, ViennaCLInt incy, - cl_mem A, ViennaCLInt offA_row, ViennaCLInt offA_col, ViennaCLInt incA_row, ViennaCLInt incA_col, ViennaCLInt lda) -{ - typedef viennacl::vector_base<double>::size_type size_type; - typedef viennacl::vector_base<double>::size_type difference_type; - - viennacl::vector_base<double> v1(x, size_type(n), size_type(offx), difference_type(incx), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::vector_base<double> v2(y, size_type(m), size_type(offy), difference_type(incy), viennacl::ocl::get_context(backend->opencl_backend.context_id)); - viennacl::matrix_base<double> mat(A, viennacl::ocl::get_context(backend->opencl_backend.context_id), - size_type(m), size_type(offA_row), difference_type(incA_row), size_type(m), - size_type(n), size_type(offA_col), difference_type(incA_col), size_type(lda), order == ViennaCLRowMajor); - - mat += alpha * viennacl::linalg::outer_prod(v1, v2); - - return ViennaCLSuccess; -} -
